【学习笔记】文件系统结构 一

盘在使用前,需要分区和格式化,在windows下格式化磁盘,可以选择FAT,FAT32,NTFS等类型,在UNIX下格式化磁盘,可以选择EXT2,EXT3SWAP等类型,格式化操作将在磁盘分区中创建文件系统,它们确定文件的存储方式和索引方法,确定磁盘空间分配和回收算法。

 

UNIX文件系统的存储由目录—i节点数据块三级组成,其中目录存储了文件的层次结构,数据块存储了文件的具体内容信息,i节点是连接文件层次结构与其数据块内容的桥梁。

 

UNIX下的文件包括了文件类型,文件访问权限,文件属主ID,文件属组ID,文件链接数,文件长度和文件时间等,这些信息存储在文件对应的i节点中。

 

 

4.1文件系统的结构

大多数计算机都有若干磁盘,这些磁盘中包含着一个或多个分区,每个分区都有一个文件系统.UNIX文件系统将磁盘空间划分成一系列大小相同的块(block),全部块可划分为引导快,超级块,i节点区(inode区),和数据区四个部分。

图4-1

 

1引导块:

引导块位于文件系统的第0号物理块,即文件系统的第一扇区,不属于文件系统管辖,保存着文件系统的引导代码。

 

2超级块:

超级块位于文件系统的第1号物理块,紧跟引导块之后,描述文件系统本身的结构信息,如文件系统的大小,空闲块数目,空闲块索引表,空闲i节点数目,空闲i节点索引表,封锁标志等。超级块的数据结构一般定义在文件”filsys.h”中。

Struct filsys

{

       Ushort       s_isize;   //磁盘索引节点区所占用的数据块数

       daddr_t      s_fsize;   //整个文件系统的数据块数

       short        s_nfree;    //在空闲块登记表中当前登记的空闲块数目

       daddr_t      s_free;      //空闲块登记表

       short        s_ninode;    //空闲索引节点数

       ino_t        s_inode;    //空闲节点登记表

chars_flock;           //加锁标志位

chars_ilock;          //节点加锁标志位

chars_fmod;          //超级块修改标志

chars_ronly;         //文件系统只读标志

time_t       s_time;  //超级块上次修改时间

short        s_dinfo[4];   //设备信息

daddr_t      s_tfree;    //空闲块总数

ino_t        s_tinode;   //空间节点总数

chars_fname[6];        //文件系统名称

chars_fpack[6];        //文件系统包名称

longs_fill[13];        //填空位

longs_magic;        //指示文件系统的幻数

longs_type;         //新文件系统类型

}

 

 

3i节点区(inode区)

i节点区位于超级块之后,长度由超级块中的s_isize字段决定,它描述文件的属性,如长度,属主,属组,数据块表和最近访问时间等,i节点的数据结构一般定义在文件”ino.h”

struct dinode

{

       Ushort        di_mode;    //文件类型与权限

Short         di_nlink;     //文件链接数

Ushort        di_uid;     //文件属主ID

Ushort        di_gid;   //文件属组ID

Off_t         di_size;   //文件长度

Char         di_addr[NADDR_BITES];   //文件磁盘块地址列表

Char         di_gen;           //file generation number

Time_t       di_atime;      //文件最近访问时间

Time_t       di_mtime;     //文件最近修改时间

Time_t       di_ctime;      //文件状态最近改变时间

}

文件系统通过i节点对文件进行控制和管理,其中,每个文件对应一个i节点,每个i节点具有唯一的节点号,记录了文件的属性和内容在磁盘上的存储位置,但文件名并不记录在i节点中,而是存储在目录文件中。

 

 

4数据区

文件的数据区位于i节点区之后,由众多相同容量的块组成,用于存储文件的内容,如果文件长度超过了一个块的最大容量,则该文件将被存储在多个块中,因此大文件很容易分布在成千上百个独立的磁盘块中。

文件数据区中各数据块的空闲情况由超级块记录,文件系统利用超级块中的记录完成对数据块的分配和回收。

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

szwm1010

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值