Linux之文件系统

news2024/9/29 7:19:34

个人主页:点我进入主页

专栏分类:C语言初阶  C语言进阶  数据结构初阶    Linux    C++初阶      算法   C++进阶

欢迎大家点赞,评论,收藏。

一起努力,一起奔赴大厂

目录

一.磁盘

二.对磁盘进行管理

三.通过inode找到文件


一.磁盘

        操作系统存在大量的文件,其中大部分没有打开的文件,它们存储在哪里呢?磁盘!!!,下面是磁盘的物理结构,看图片:

其中每一个圆环是一个磁道,每一个圆弧就是一个扇区,一般情况下一个的扇区是512k,例如一个800G的磁盘可以将它抽象成为

每一块都是由扇区构成

这样我们就可以得到一个数组,每一个扇区都有一个应的数组下标,于是就出现了CHS寻址法,当我们知道一个扇区的下标就可以找到在哪一片磁盘的哪一个磁道的哪一个扇区,例如下标为500,每一片有1000个扇区,10个磁道,也就是说一个磁道有100个扇区,500/10000=0,所以在第0片,500%10000=500,500/100=5,所以在第5个磁道,500%100=0,所以在第0片的第5个磁道的0扇区。 一般来说操作系统和磁盘进行交互时的基本单位就是4KB,也就是8个扇区

二.对磁盘进行管理

        磁盘可以分为多个分区,对一个分区管理好就可以管理好其它的分区,管理一个分区就可以对一个分区进行分组,这就是利用了分治的思想

管理就是先分区然后分组,对于其中的一个分组,每一个分组就有多个块组

 

  • Data blocks在一个块组占绝大数,它就是存放的是写在文件里面的内容,其中每一个小块是4kb。
  • Block Bitmap是一个位图结构它是为了表示哪一个数据块存储了数据,存储了就是1,没有就是0.
  • inode Table存放文件的属性,它是一个结构体,在Linux中它一般是128个字节。它也是有一个块,其中每一块是4kb,一个块是由4*1024/128=32个inode,所以一个块可以存放32个inode,也就是对32个文件的属性。
  • inode Bitmap中每一个比特位都表示一个inode是否空闲。
  • Super Block表示的是block的数量和indoe的数量,当然不是每一个块组都有这个,每几个块组就有一个超级快,当然超级块存放的内容是一样的(在一个分组),这是以应对数据的丢失。

在文件的属性中有一个数组datablocks它是为了寻找文件存储的内容,它的结构为:

其中0到11每个都指向一个数据块,12和13是指向一个块,但是这个块的4kb都是指向别的数据块,14是指向一个块,这个快指向一个和12一样的块。 

三.通过inode找到文件

        我们凭什么拿到文件的inode号??我们用的可是文件名啊!!文件=文件属性+文件的内容,其中文件的内容就是文件和inode的映射,所以我们就可以理解一个目录不可以由同名的文件,查找文件就是根据文件名然后找到文件的indoe,目录的r属性本质就是我们想得到文件的内容,我们没有这个权限就不能得到文件的inode,w同样;我们如何理解文件的删除呢?文件的删除只需要将文件的inode Bitmap置为0,然后将它的block Bitmap也置为0即可,所以当我们删除文件后可以将数据恢复。我们如何找到文件的inode号呢?例如一个文件的pwd为/home/yang/code我们想得到它的inode,需要得到code的inode,一次类推需要得到/的inode,/的inode是可以直接获取的,而linux是会缓存路径的,我们可以快速获取它的inode。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1980457.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Netty的几种IO模式的实现与切换

写在文章开头 今天我们就基于Netty来简单聊聊开发中几种常见的IO模式以及Netty对于这几种IO模式的实现,希望对你有帮助。 Hi,我是 sharkChili ,是个不断在硬核技术上作死的 java coder ,是 CSDN的博客专家 ,也是开源项…

如何在RabbitMQ中防止消息丢失

如何在RabbitMQ中防止消息丢失 在分布式系统中,消息的可靠传递是至关重要的。RabbitMQ作为一个强大的消息队列系统,提供了多种机制来确保消息不会丢失。本文将介绍在RabbitMQ中防止消息丢失的几种方法。 消息确认机制 消息发布确认 在RabbitMQ中&…

pdf转换器哪个好?不要错过这4款转换工具

pdf转换器哪个好?选择一款高效的PDF转换器,无疑能极大地便利我们的日常工作与学习。它不仅能够轻松实现PDF文件与Word、Excel、图片等多种格式之间的互转,还支持批量处理,显著提高工作效率。无论是编辑修改、格式调整还是分享传阅…

深入浅出消息队列----【RocketMQ 和 Kafka 消息存储差异对比】

深入浅出消息队列----【RocketMQ 和 Kafka 消息存储差异对比】 RocketMQ 的消息存储Kafka 的消息存储对比 RocketMQ 与 Kafka 本文仅是文章笔记,整理了原文章中重要的知识点、记录了个人的看法 文章来源:编程导航-鱼皮【yes哥深入浅出消息队列专栏】 Roc…

指南!网上卖药品需要什么资质?

随着互联网技术的飞速发展,医药电商已经成为药品和医疗器械销售的重要渠道。处方药的网络销售政策逐步放宽,医药电商行业迎来了快速发展的春天。在这一领域,主要的参与者包括药品销售公司和电商平台。 为了吸引流量和满足处方药审方的需求&a…

第18课 Scratch入门篇:时钟-当前时间

时钟 故事背景: 在一个遥远的科技星球上,时间对于居民们来说无比珍贵。这个星球上的居民们都是技术高手,他们使用先进的编程技术来管理自己的生活。然而,星球上的时间系统最近出现了故障,导致时间的流逝变得不稳定。为…

【终极指南】大模型二次开发:从零基础到高手之路

随着人工智能技术的发展,预训练的大模型(例如GPT系列、BERT等)已成为自然语言处理领域的关键技术之一。对于开发者来说,掌握如何基于这些大模型进行二次开发,不仅可以提升自身的技术实力,还能为企业带来更多…

Flink 如何处理背压

文章目录 目录 前言 一、什么是背压? 二、处理背压的步骤 1.模拟背压机制 2.为什么要关心背压问题? 总结 前言 初次接触Flink的同学会对背压有很多的疑问。本文就是我学习的一些心得和体会,以及借鉴一些文章的感想。 Flink 如何处理背压效应…

使用snap的安装docker配置阿里云镜像加速

使用snap安装docker非常的简单,一条命令即可 snap install docker 但是通过这个命令安装的docker, 配置阿里云镜像跟常规安装的配置起来不太一样, 下面讲一下配置流程 修改docker配置文件/var/snap/docker/current/config/daemon.json 这个文件应该是已经创建好…

重磅!LangChain 官方发布 Agent IDE!!

1 LangChain 开发现状 LangChain 从应用开发框架出发,提供了一套代码级工具集,旨在降低 LLM 的开发难度,在过去一年中吸引了众多开发者,助力他们迅速打造 AI 大模型应用。然而,还有一群用户,他们希望门槛…

NC 最长无重复子数组

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 描述 给定一个长度…

idea连接oracle

配置 注意: SID指的是实例名称

C语言宠物系统3

在前面的基础上,加上了修改功能和排序功能,可以选择姓名排序,年龄排序,价格排序。 test.c源文件 #include "Pet.h"void menu() {printf("------------------------\n");printf("- 欢迎来到宠物商店 …

实践出真知:Agents 领域“一年打怪升级”的经验分享

编者按:在你构建 AI Agents 时,是否曾遇到这些困扰:总是在简单任务上出错,从而让你有时会怀疑自己的技术水平?面对客户的需求,AI Agent 表现得像个“笨蛋”,无法准确理解和执行指令?…

不同网络上的计算机怎么通信

从 一个网络上计算机的通信 ,我们知道,在一个网络里,多台主机通过交换机连接起来,每台主机的网卡有全球唯一的 MAC 地址,一个网络上的主机通过 MAC 地址通信。 那么,多个网络之间如何互联和通信&#xff1…

【轨物方案】智慧供热物联网整体解决方案

目前城市供暖系统当中,供暖设备一直得不到更新和升级,没有合理的监控设备,导致对供暖的合理调控不理想,供暖严重失调而浑然不知,进而出现冷热不均的问题,极易造成资源严重浪费。缺乏成熟的管理系统&#xf…

上门按摩小程序项目开发功能介绍

上门按摩小程序通常设计为连接按摩服务提供者和客户的平台,提供便捷的预约和服务管理功能。以下是这类小程序可能包含的功能: 用户注册和登录: 用户可以注册个人账户并登录,以便管理个人信息和预约记录。 按摩师信息浏览&#xf…

JAVA中实现线程安全的三种方式

JAVA中实现线程安全的三种方式 1. 同步代码块2. 同步方法3. ReentrantLock4. 总结 💖The Begin💖点点关注,收藏不迷路💖 1. 同步代码块 使用synchronized关键字加在需要同步的代码块上,并指定一个锁对象。这种方式可以…

Java作用域

目录 1.作用域 基本使用 2.作用域的注意事项和细节使用 1.作用域 基本使用 局部变量一般是成员方法里的变量 。全局变量有默认值,局部变量没有默认值。 在类内但是方法外定义的变量是局部变量,有初始值0可以不赋初值,在方法内的是局部变量…

本机IP地址可以随便改吗?怎样修改本机IP地址

在当今数字化时代,IP地址作为设备在网络中的唯一标识,扮演着至关重要的角色。然而,许多用户对于IP地址的修改存在诸多疑问,尤其是关于其是否可以随意更改以及如何操作。本文旨在深入探讨这些问题,帮助读者理解本机IP地…