所有除了第一个块中,其他的块就按照元数据直接被划分为块组了。(并不是按照前面写的划分成什么元数据区和数据区。)
那么在块组中
【super Block】超级块,存放在每个组中第1个块中,为了防止损坏,早期每个块组中的第1个块,都是super Block。后来为了节省空间,只是在第0个块组,第3个,第7个…里面做了备份。只存个3-5份。
默认情况,系统寻找的都是第0个块组中第1个块中的SuperBlock,如果这个块组坏了,就去寻找备份的块组。如果不会,自己可以手动修复,因为有备份。文件系统i o
【GDT】块组描述表,块组描述表中存的是当前这个分区中每个块组的块组名,每一个块组的起始磁盘块,结束块的编号。即块组边界等信息。所有这个信息也是不能被损坏的,也是需要备份多次。根据块组(block Group)的个数不同,GDT所占用的空间大小未必是一个磁盘块。
【BlockBitMap】当前块组的块位图
【inodeBitmap】当前块组的inode位图
【inode Table】当前块组的inode表
【Data Blocks】当前块组的所有块
到这里,文件系统是怎么运作的,以及组成基本就说清楚了。
那么“目录”中是存放文件的inode号和文件名等信息,即格式为

在目录中每一行用来引用一个文件,而没一行的格式为:
【Inode】:文件的inode号
【rec_len】:最近一次的访问时间长度
【name_len】文件名称长度
【file_type】文件类型
【name】文件名
那么如果磁盘中文件太大,一个inode存不下,那么就按照下面直接引用和间接引用来调用。即:直接指针,一级间接指针,二级间接指针。
ext3(journal file system:日志文件系统)
前面讲的是ext2,ext3相比ext2不同之处就是,当你在保存文件突然宕机,文件还没保存成功,开机之后ext2需要全盘搜索来确定损坏的文件并删除,而ext3只需要检索日志即可确定,大大提高了效率。文件系统i o
ext3实现的原理
Ext3文件系统会将磁盘分区划分为3种区域: 元数据区, 数据区和日志区域, 其中(journal area)日志区域是Ext3文件系统和Ext2文件系统的最大区别。
日志区域的主要功能是临时缓存正在进行I/O操作的文件的元数据信息, 当该文件正确传输完成后, 该文件系统就会将临时缓存的元数据信息存储至文件系统的元数据区中. 日志区域的最大优点是对于执行I/O操作的文件信息发生故障时, 文件系统不需要遍历整个文件系统的元数据区来查找发生故障的block数据块信息, 只需要查找日志区域中临时缓存的元数据即可, 大大缩短了查询时间。
操作系统:是一个虚拟机,将底层硬件所提供的计算能力进行虚拟化为一个接口,让多个进程并行运行。
主要组成
CPU虚拟:将CPU划分一个个时间片(time slice),例如5ms一个计算能力,计算片段,另一个5ms也如此,平均分配到多个进程上去
Memory:
I/O设备虚拟:多路复用
x86:由Intel推出的一种复杂指令集,用于控制芯片的运行的程序,现在X86已经广泛运用到了家用PC领域。
在x86中,内存中引入了虚拟地址(线性地址)的概念,内存是可编址的存储单元,所以进程在访问内存设备的时候,内存中的每个存储空间(即内存单元)就是一个字节,也就是8位(bit)。内存单元是有地址,CPU去访问内存就是按照地址总线来寻找到某数据地址的内存空间,然后通过数据总线读到这个数据,并在控制指令的控制下取出来。
如果在一个内存上运行多个进程的时候,每一个进程都要自我管理内存空间的话,假设其中一个进程出现一个bug,把其他进程的数据给覆盖了的话怎么办?
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shouji/article-62080-7.html
啊
òωó)大家好我就是舍
台湾问题得到彻底解决的那一天
把市值抬上天