操作系统对文件的管理:虚拟文件系统,文件系统(全局结构,层次结构,文件基本操作,目录,文件共享,文件保护,逻辑结构,物理结构,存储空间管理)

文件:一组有意义的信息/数据集合。或者说,文件就是字节序列。

文件的属性:文件名,标识符(即文件描述符,操作系统区分文件的内部名称,用户不可见),文件类型,文件位置(文件存放路径,以及供操作系统使用的外存中的地址),文件大小,创建时间,上次修改时间,文件所有者信息,文件保护信息等。


  

虚拟文件系统(VFS,Virtual File System)

  • 不同的外存设备支持的文件系统不同,例如:(UNIX)磁盘支持UFS文件系统、移动硬盘支持NTFS文件系统、U盘支持FAT文件系统等。
  • 不同的文件系统定义的函数接口可能不同(函数名不同,参数不同等)。
  • 不同的文件系统存放文件信息的数据结构可能不同(有些使用索引节点inode)。

操作系统内核提供虚拟文件系统,为用户程序提供统一的文件系统操作接口,屏蔽各不同文件系统的差异和操作细节。

虚拟文件系统的特点

  • 为用户进程提供统一标准的文件系统调用接口(例如:POSIX标准接口),屏蔽底层的实现差异。
  • 各个文件系统必须根据操作系统提供的接口标准实现规定的函数功能(open,close,read,write等)。
  • 为各个文件系统的打开文件,在主存创建一个vnode(即v节点,统一的数据结构)用于存放该文件信息以及该文件系统提供的函数功能列表的指针。

操作系统对文件的管理:虚拟文件系统,文件系统(全局结构,层次结构,文件基本操作,目录,文件共享,文件保护,逻辑结构,物理结构,存储空间管理)_第1张图片

文件系统挂载到操作系统:

(Linux)

  1. 在虚拟文件系统(VFS)中注册将要挂载的文件系统。(主存中的挂载表包含各文件系统的相关信息)
  2. 向虚拟文件系统(VFS)提供该文件系统提供的函数功能列表的地址。
  3. 将该文件系统挂载在某个父目录下(挂载点),父目录下的原有目录被覆盖掉。

(Windows)

  • 通过“计算机管理”的“磁盘管理”给磁盘分区分配一个盘符。
  • 或者 通过第三方软件的挂载功能。

 

文件系统

一、文件系统的全局结构:(外存-磁盘,主存)

文件系统在外存(磁盘)中的结构

  1. 空白磁盘,通过物理格式化(即低级格式化),磁盘划分扇区,检测坏扇区,备用扇区替换坏扇区。
  2. 再通过逻辑格式化(即高级格式化),磁盘分区,各分区文件系统初始化。

对于Windows,安装操作系统时,就进行了磁盘分区(将一个物理磁盘划分成一个个的文件卷,文件卷又称逻辑卷或逻辑盘)和磁盘初始化(将各个文件卷换分为目录区和工作区)。

操作系统对文件的管理:虚拟文件系统,文件系统(全局结构,层次结构,文件基本操作,目录,文件共享,文件保护,逻辑结构,物理结构,存储空间管理)_第2张图片

有些系统支持超大文件,可以多个物理磁盘组成一个文件卷。

 操作系统对文件的管理:虚拟文件系统,文件系统(全局结构,层次结构,文件基本操作,目录,文件共享,文件保护,逻辑结构,物理结构,存储空间管理)_第3张图片

文件系统在主存中的结构

打开文件时,系统根据文件存放路径一层一层将目录表调入主存,直到找到对应文件,在主存中的打开文件表添加或修改记录,系统将文件描述符返回给用户,此后,用户通过文件描述符对文件进行相应的操作。

打开文件表:

1、系统的打开文件表:整个系统一张系统打开文件表。记录整个系统所有进程打开的文件。

      特有属性:打开计数器(指明有多少进程打开了该文件)。

2、用户进程的打开文件表:每个用户一张用户进程打开文件表。记录该用户打开的文件。

      特有属性:读写指针(对该文件的读写操作所进行到的位置),访问权限(只读,读写等)。

      注:用户进程的打开文件表中系统表的索引号(是系统的打开文件表中该文件对应的编号)。

             文件描述符是用户进程的打开文件表中文件对应的编号。

操作系统对文件的管理:虚拟文件系统,文件系统(全局结构,层次结构,文件基本操作,目录,文件共享,文件保护,逻辑结构,物理结构,存储空间管理)_第4张图片操作系统对文件的管理:虚拟文件系统,文件系统(全局结构,层次结构,文件基本操作,目录,文件共享,文件保护,逻辑结构,物理结构,存储空间管理)_第5张图片

 

二、文件系统的层次结构:

  1. 用户向系统发出系统调用请求(例如:打开文件open,读文件read等),
  2. 系统响应用户的请求,并处理系统调用请求,
  3. 根据用户提供的文件路径,系统通过一层层的目录找到对应文件,
  4. 系统验证用户是否有该文件相应的操作权限,
  5. 用户通过系统返回的文件描述符操作文件,系统找到文件描述符对应的逻辑地址,
  6. 系统将逻辑地址转换为物理地址,
  7. 系统为文件在外存分配空间(例如:创建文件或添加数据时),以及回收外存空间(例如:删除文件或删减数据时),
  8. 系统通过DMA控制器或通道控制设备,将文件数据从外存读入主存或从主存写入外存。

操作系统对文件的管理:虚拟文件系统,文件系统(全局结构,层次结构,文件基本操作,目录,文件共享,文件保护,逻辑结构,物理结构,存储空间管理)_第6张图片

 
1、文件的基本操作

文件的基本操作:创建文件(create系统调用),删除文件(delete系统调用),读文件(read系统调用),写文件(write系统调用),打开文件(open系统调用),关闭文件(close系统调用)。

系统调用是用户程序和操作系统之间的接口,由内核函数实现进入操作系统内核。

内核是操作系统的核心,负责管理进程、内存、I/O、文件和网络等。

操作系统对文件的管理:虚拟文件系统,文件系统(全局结构,层次结构,文件基本操作,目录,文件共享,文件保护,逻辑结构,物理结构,存储空间管理)_第7张图片

 

2、文件目录

文件之间通过一层一层的目录(即文件夹)有序地组织起来。

目录是一种特殊的有结构文件。各层之间的目录用"/"连接。

每个目录都有对应的目录表(也称目录文件),目录表中每一条记录就是一个文件目录项就是一个文件控制块(FCB)。目录表是FCB的有序集合。

文件控制块(FCB):实现文件目录的关键数据结构。FCB包含文件的各信息(文件名,类型,创建时间、物理地址、逻辑结构、物理结构、访问权限等)。FCB按名存取。

操作系统对文件的管理:虚拟文件系统,文件系统(全局结构,层次结构,文件基本操作,目录,文件共享,文件保护,逻辑结构,物理结构,存储空间管理)_第8张图片

文件目录结构:

操作系统对文件的管理:虚拟文件系统,文件系统(全局结构,层次结构,文件基本操作,目录,文件共享,文件保护,逻辑结构,物理结构,存储空间管理)_第9张图片

索引节点(inode):【FCB的改进

为了方便存储、查找以及文件共享,将文件名之外的信息作为索引节点,而目录表中的目录项只需要文件名和索引节点指针。

通过匹配文件名找到对应的索引节点指针,将索引节点调入主存,再从索引节点找到文件的物理地址等信息。

注:索引节点存放在外存又称磁盘索引节点,放入内存称为内存索引节点。放入内存时需增加一些信息(文件是否被修改,此时有几个进程正在访问该文件等)。

文件共享:

文件共享:多个用户共享地使用同一个文件。意味着共享的文件其实只有一份文件数据。

文件共享
硬链接(基于索引节点) 软链接(基于符号链)

各个用户目录表中的目录项链接到同一个索引节点;

索引节点中需有链接计数(记录多少用户在共享该文件)

创建Link类型的文件(记录共享文件的路径),类似Windows快捷方式;

通过路径一层层查找目录(多次访问磁盘),最终找到共享文件

删除文件时,删除用户目录中对应的目录项,索引节点的链接计数减1,链接计数为0系统才能删除文件 若共享文件被删除,Link类型的文件仍在,只是查找共享文件失败(找不到对应目录项)
操作系统对文件的管理:虚拟文件系统,文件系统(全局结构,层次结构,文件基本操作,目录,文件共享,文件保护,逻辑结构,物理结构,存储空间管理)_第10张图片 操作系统对文件的管理:虚拟文件系统,文件系统(全局结构,层次结构,文件基本操作,目录,文件共享,文件保护,逻辑结构,物理结构,存储空间管理)_第11张图片
 
3、文件保护

操作系统需要保护文件的数据安全,方法有:口令保护、加密保护、访问控制等。

操作系统对文件的管理:虚拟文件系统,文件系统(全局结构,层次结构,文件基本操作,目录,文件共享,文件保护,逻辑结构,物理结构,存储空间管理)_第12张图片

 

4、文件的逻辑结构(用户视角)

文件的逻辑结构:无结构文件,有结构文件。

有结构文件:顺序文件,索引文件,索引顺序文件。

  • 定长记录:每条记录占用的存储空间相同。
  • 可变长记录:每条记录占用的存储空间不同。
  • 顺序存储:逻辑上相邻的记录,物理上也相邻。
  • 链式存储:逻辑上相邻的记录,物理上不相邻。不能随机存取,只能从第一个开始找。
  • 串结构:记录的顺序与关键字的顺序无关,即记录的顺序不按关键字的顺序排列。
  • 顺序结构:记录的顺序按照关键字的顺序排列。

操作系统对文件的管理:虚拟文件系统,文件系统(全局结构,层次结构,文件基本操作,目录,文件共享,文件保护,逻辑结构,物理结构,存储空间管理)_第13张图片

 
5、文件的物理结构(操作系统视角):对非空闲磁盘块的管理

文件的物理结构:即文件分配方式,各个文件是怎样存放在外存(磁盘)中。

操作系统对文件的管理:虚拟文件系统,文件系统(全局结构,层次结构,文件基本操作,目录,文件共享,文件保护,逻辑结构,物理结构,存储空间管理)_第14张图片

磁盘存储一般以块为单位,称为磁盘块或者物理块。很多操作系统,磁盘块大小等于内存块大小等于页面大小。

而文件的逻辑地址空间也被分为“块”。用户使用逻辑地址操作文件,而操作系统实现从逻辑地址到物理地址的映射。

系统将逻辑块的内容放到物理块中(即给文件分配磁盘块)。

磁盘中的磁盘块分配给文件之后称为非空闲磁盘块,没有分配处于空闲状态的称为空闲磁盘块。

磁盘块的分配方式有:连续分配,链接分配、索引分配。

(1)连续分配

磁盘为每个文件分配的磁盘块必须是连续的,并且保持相对顺序(即与逻辑块的顺序一致)。

目录表中的目录项记录起始块号(磁盘块)和长度(连续多少个磁盘块)。

用户提供逻辑地址,操作系统将逻辑地址转换为物理地址,找到文件对应目录项:

物理块号 = 起始块号 + 逻辑块号

支持顺序访问,也支持直接访问(随机访问),顺序访问速度最快。但文件拓展不方便,存储空间利用率低,产生磁盘碎片。

(2)链接分配(离散分配)

磁盘为文件分配的磁盘块是不连续的,各磁盘块之间用指针链接。

① 隐式链接(默认)

目录表中的目录项记录起始块号(磁盘块)和结束块号。

根据逻辑块号找到文件对应的FCB(目录项):

根据目录项中的起始块号找到第一个磁盘块,将对应的第一个逻辑块的内容读入主存,根据指针找到第二个磁盘块,将对应的第二个逻辑块号的内容读入主存,并根据各指针找到下一个磁盘块,依次下去,直到找到需要的逻辑块号对应的磁盘块。

方便扩展,支持顺序访问,不产生碎片。但不支持随机访问,查找速度慢,指针占用少量存储空间。

② 显示链接

目录表中的目录项记录起始块号(磁盘块)。

建立文件分配表(FAT),在FAT查找逻辑块号对应的磁盘块。

文件分配表(FAT,File Allocation Table):记录各磁盘块以及指针指向的下一个磁盘块。各文件的最后一个磁盘块的指针指向的下一个磁盘块可标识为-1。

一个磁盘一张FAT。FAT各表项连续存储且长度相同。开机时,FAT读入内存并常驻内存。

根据逻辑块号找到文件对应的FCB(目录项):

根据目录项中的起始块号,只需查找主存中的文件分配表(FAT),依次根据指针查找,找到需要的逻辑块号对应的磁盘块。

支持顺序访问,也支持随机访问,不产生外部碎片。但文件分配表需占用部分存储空间。

(3)索引分配(离散分配)

目录表中的目录项记录索引块(索引表所在的磁盘块)。

索引表:一个文件一张索引表,存放文件的各逻辑块对应的物理块。记录逻辑块号(可以是隐含的)和对应磁盘块号。

磁盘块中存放索引表的称为索引块,磁盘块中存放文件数据的称为数据块

根据逻辑块号找到文件对应的FCB(目录项):

根据目录项中的索引块(索引表所在的磁盘块),将索引块中的索引表调入主存,查找索引表,找到需要的逻辑块号对应的磁盘块。

支持随机访问,文件拓展容易。但索引表需占用部分存储空间。

若索引表太大,一个磁盘块装不下怎么办?解决方法:链接方案,多层索引,混合索引。

① 链接方案

目录项中记录第一个索引块的块号。

多个索引块,各索引块用指针链接起来。

只能顺序访问,查找效率低。

② 多层索引

目录项中记录顶级索引块(第一个索引块)的块号。

多层索引,每层索引块指向下一层索引块。

各层索引表大小不能超过一个磁盘块。

文件最大长度:第1层索引表大小*第2层索引表大小*...*第i层索引表大小*数据块大小。

操作系统对文件的管理:虚拟文件系统,文件系统(全局结构,层次结构,文件基本操作,目录,文件共享,文件保护,逻辑结构,物理结构,存储空间管理)_第15张图片

③  混合索引(多种索引方式的结合)

目录项中记录顶级索引块(第一个索引块)的块号。

顶级索引块中有直接地址(直接指向数据块)、一级间接索引(指向单层索引表)、二级间接索引(指向两层索引表)。

操作系统对文件的管理:虚拟文件系统,文件系统(全局结构,层次结构,文件基本操作,目录,文件共享,文件保护,逻辑结构,物理结构,存储空间管理)_第16张图片

 
6、文件的存储空间管理:对空闲磁盘块的管理

存储空间管理:空闲表法,空闲链表法,位示图法,成组链接法(UNIX系统)。

(1)空闲表法:适用于连续分配

空闲(盘块)表记录空闲盘块起始块号和连续的空闲盘块数量。

磁盘块连续分配的算法:

  • 首次适用算法:空闲磁盘盘块中,找到第一个满足空间大小的连续盘块分配给文件。
  • 最佳适用算法:空闲磁盘盘块中,找到空间大小最合适的连续盘块分配给文件。
  • 最坏适用算法:空闲磁盘盘块中,找到空间大小最大的连续盘块分配给文件。

磁盘块的分配:查看空闲表,根据一定算法(首次适应、最佳适应算法等),将满足空间大小的连续的空闲盘块分配给文件。 

磁盘块的回收:(注意合并)① 回收区前后没有空闲盘块,在空闲表添加;② 回收区前或后有空闲盘块,在空闲表修改对应项;③ 回收区前后都有空闲盘块,在空闲表将对应项合并为一个。

操作系统对文件的管理:虚拟文件系统,文件系统(全局结构,层次结构,文件基本操作,目录,文件共享,文件保护,逻辑结构,物理结构,存储空间管理)_第17张图片

 (2)空闲链表法空闲盘块链,空闲盘区链

以盘块/盘区为单位组成一条空闲链。操作系统保存着链头、链尾指针。

① 空闲盘块链:适用于离散分配。

以空闲盘块为单位组成一条空闲链。

每个空闲盘块中存储着下一个盘块的指针。

磁盘块的分配:从空闲链的链头开始,依次取出满足空间大小的空闲盘块分配给文件。

磁盘块的回收:将回收的盘块依次挂到空闲链的链尾。

② 空闲盘区链:适用于离散分配和连续分配。

将连续的空闲盘块作为一个盘区,以盘区为单位组成一条空闲链。

每个空闲盘区的第一个盘块中存储着盘区长度(有多少空闲盘块)和下一个盘区的指针。

磁盘块的分配:从空闲链的链头开始,根据一定算法(首次适应、最佳适应算法等),取出满足空间大小的空闲盘块分配给文件;若没有合适的连续盘块,可将不同盘区的盘块同时分配给文件。

磁盘块的回收:① 回收区与空闲盘区相邻,合并到对应盘区;② 回收区没有与空闲盘区相邻,将回收的盘块单独作为一个盘区挂到空闲链的链尾。

操作系统对文件的管理:虚拟文件系统,文件系统(全局结构,层次结构,文件基本操作,目录,文件共享,文件保护,逻辑结构,物理结构,存储空间管理)_第18张图片

(3)位示图法

每个二进制位对应一个盘块,一行的长度一般为一个字长,每一行对应一个字号,字长的每一位对应一个位号,因此可用(字号,位号)对应盘块号。假设:空闲盘块为0,非空闲的盘块为1。

假设:盘块号(b),字号(i),位号(j),字长(n)

根据(字号,位号)获取盘块号:盘块号 b = n * i + j

根据盘块号获取(字号,位号):字号 i = b / n。位号 j = b % n

磁盘块的分配:若文件需要K个盘块,则顺序扫描位示图,找到K个相邻或不相邻的“0”,根据字号和位号换算成对应的盘块号,将相应空闲盘块分配给文件,并将位示图相应位设置为1。

磁盘块的回收:将回收的盘块号换算成对应的字号和位号,并将位示图相应位设置为0。

操作系统对文件的管理:虚拟文件系统,文件系统(全局结构,层次结构,文件基本操作,目录,文件共享,文件保护,逻辑结构,物理结构,存储空间管理)_第19张图片

(4)成组链接法(UNIX系统)

用于UNIX系统的大型文件系统。

超级块:在目录区专门用一个磁盘块作为超级块,超级块中记录下一组有多少空闲盘块以及对应空闲盘块号,若遇到特殊值-1则表示没有下一组空闲盘块。系统启动时,将超级块读入内存。

磁盘块的分配:检查超级块,若需要的盘块数量小于空闲盘块数,将第一组中的空闲盘块分配给文件并修改空闲盘块数;若需要的盘块数量大于等于空闲盘块数,将第一组所有空闲块分配给文件,将存放的下一组数据复制到超级块中,比对剩余需要的盘块数量和空闲盘块数,直到分配足够的盘块数给文件。

磁盘块的回收:若回收的盘块数小于等于最大可回收数,将回收的盘块号放入超级块并修改空闲盘块数;若回收的盘块数大于最大可回收数,将超级块的数据复制到新回收的块中(作为第一个分组),将新回收的块号放入超级块并修改空闲盘块数。

操作系统对文件的管理:虚拟文件系统,文件系统(全局结构,层次结构,文件基本操作,目录,文件共享,文件保护,逻辑结构,物理结构,存储空间管理)_第20张图片

补充:

操作系统对设备的管理
 

你可能感兴趣的:(计算机,笔记)