File system学习(一)

File system(一)

基于linux v0.11内核

Linux文件系统从功能上有4个部分

​ 1.高速缓冲区管理程序
2.文件系统底层通用函数
3.对文件中数据的读写操作
4.文件系统调用接口(打开、关闭、创建等)

单位磁盘块结构,从头到尾依次是

​ 1.boot block
用于加电启动时由ROM BIOS自动读入执行代码与数据,并非所有的块都需要这个部分,
但为了保持结构一致,故保留此。

​ 2.super block
存放盘设备上文件系统结构的信息,并说明各部分的大小,如inode个数、逻辑块数、
inode的bitmap所占块数,逻辑块bitmap所占块数,第一个逻辑块号,最大文件长度,
文件系统幻数。

幻数:系统认为意义不明的数据

​ 3.inode bitmap & logic block bitmap
inode位图用于描述i节点是否被使用。
逻辑块位图用于描述盘上的每个数据盘块的使用情况。
每个比特位代表盘上数据区中的一个数据盘块。
因此,逻辑块位图的第一个比特位代表盘上数据区中第一个数据盘块。
当一个数据盘块被占用时,则逻辑块位图中相应比特位被置位。

​ 4.inode
部分inode存储有文件系统中文件的索引节点,每个文件、目录都有一个i节点,
每个i节点的数据结构为
磁盘上

  • i_mode (short)文件类型与属性(rwx)

    • i_uid (short)文件所属用户id
    • i_size (long)文件长度(byte)
    • i_mtime (long)修改时间(自1970.01.01 0:00算起,second)
    • i_gid (char)group id
    • i_nlinks (char)链接数(有多少文件目录项指向该inode)
    • i_zone[9] (short)文件所占用的盘上的逻辑块号数组
      内存中
    • s_imap[8] inode位图高速缓冲区指针数组
    • s_zmap[8] 逻辑块位图高速缓冲区指针数组
    • s_dev super block设备号
    • s_isup 被挂载文件系统的根目录的inode
    • s_imount 该文件系统被挂载到的inode
    • s_time (long)修改时间
    • s_wait 等待本super block的进程指针
    • s_lock (char)锁定标志
    • s_rd_only (char)只读标志
    • s_dirt (char)脏位

    i_zone中,0-6存放直接块,若file size > 7k bytes,则间接寻址512个盘块,若文件还更大,则采用第二次间接寻址

    当所有inode均被占用时,查找空闲inode的函数会返回0

    inode bitmap最低位和0号inode均不使用,创建file system时将0号inode置位

​ 5.data block

​ 数据区

发布了24 篇原创文章 · 获赞 0 · 访问量 1010

猜你喜欢

转载自blog.csdn.net/deltapluskai/article/details/79599117