首页 > 其他分享 >操作系统-文件管理

操作系统-文件管理

时间:2022-12-13 22:24:27浏览次数:42  
标签:文件 操作系统 管理 扇区 索引 磁头 磁盘 内存

4.1 初识文件

文件的属性

  • 文件名:相同目录不可重名

  • 标识符:各文件标识符唯一,对用户无可读性

  • 类型

  • 位置:存放路径,在外存中地址(对用户地址不可见)

  • 保护信息:对文件进行保护的控制信息

无结构文件:由一些二进制或字符流组成,又称“流水文件”(如文本文件)

有结构文件:由一组相似的记录组成,又称“记录式文件”,记录是一组相关数据项的集合,每条记录有一个数据项可作为关键字,根据各条记录的长度是否相等,又可分为定长记录可变长记录

操作系统应该向上提供的功能

 

 

 

 

4.2 文件的逻辑结构

顺序文件

文件中的记录一个接一个地顺序排列(逻辑上),记录可以是定长的或可变长的;各个记录在物理上可以顺序存储链式存储

 

 

串结构:记录之间的顺序与关键字无关;通常按照记录存入的时间决定记录的顺序;

顺序结构:记录之间的顺序按关键字顺序排列;增/删比较麻烦

一般来说,考试题目中所说的顺序文件指的是物理上顺序存储的顺序文件

 

索引文件

 

 

 

索引顺序文件

 

 

查找的顺序再次降低的话可以使用多级索引顺序文件

 

4.3 文件目录

文件控制块

 

 

目录结构

多级目录结构(树形目录结构)

 

 

记录当前路径,可以从当前目录出发,节省I/O访问次数

缺点:不便于实现文件的共享

 

无环图目录结构

 

 

删除文件时,每个共享结点设置一个共享计数器,用于记录此时有多少个地方在共享该结点,只有共享计数器为0时,才删除结点

 

索引结点

 

 

使用索引结点机制可以减少存储磁盘的数量(每次磁盘I/O只读入一块),可以大大提升文件检索速度

存放在外存中的索引结点称为“磁盘索引结点”,当索引结点放入内存后称为“内存索引结点”,通常内存索引结点中需要增加一些信息,比如文件是否被修改等

 

4.4 文件的物理结构

文件块、磁盘块

磁盘中的存储单元会被分为一个个“块/磁盘块/物理块”,很多操作系统中,磁盘块的大小与内存块、页面的大小相同;内存与磁盘之间的数据交换都是以“块”为单位进行

同理,在外存管理中,为了方便对文件数据的管理,文件的逻辑地址空间也被分为了一个一个的文件“块”,于是文件的逻辑地址也可以表示为(逻辑块号,块内地址)的形式;文件块与磁盘块大小相等

 

文件分配方式

连续分配

连续分配方式要求每个文件在磁盘上占有一组连续的块

 

 

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

优点:支持随机访问;顺序读/写时速度最快

缺点:拓展比较困难;会产生难以利用的磁盘碎片

 

隐式链接方式(默认)

 

 

缺点:只支持顺序访问,不支持随机访问

优点:不会产生碎片,利用率高

 

显式链接方式

把用于链接文件各物理块的指针显式地存放在一张表中,即文件分配表

 

 

一个磁盘仅设置一张FAT,开机时,将FAT读入内存,并常驻内存;物理块号连续可省略

优点:可以随机访问,同时内存利用率提高

缺点:文件分配表需要占用一定的内存

 

索引分配

系统为每个文件建立一张索引表,索引表中记录了文件的各个逻辑块对应的物理块;索引表存放的磁盘块称为索引块,文件数据存放的磁盘块称为数据块

 

 

当文件很大,索引表太大时

  1. 链接方案:如果索引表太大,一个索引块装不下,那么可以将多个索引块链接起来存放(前面的索引块存放下一个索引块的指针)

     

     

  2. 多层索引(还可根据要求建立三层、四层索引块)

     

     

    K层索引结构,需要K+1读磁盘操作

  3. 混合索引:既包含直接地址索引(数据块),又包含一级、二级间接索引

     

     

 

4.5 文件存储空间管理(空闲空间)

 

 

 

空闲表法

 

 

 

空闲链表法

 

 

空闲盘块链

  • 操作系统保存着链头、链尾指针

  1. 分配:若某文件申请K个盘块,则从链头开始依次摘下K个盘块分配,并修改空闲链的链头指针;

  2. 回收:回收的盘块依次挂到链尾,并修改空闲链的链尾指针

  • 分配多个时有可能会重复操作

空闲盘区链

  • 操作系统保存着链头、链尾指针;

  1. 分配:若某文件申请K个盘块,则可以采用相应的算法分配一个大小合适的空闲块,若没有合适的,可以将不同盘区的盘块分配给一个文件,注意分配后要修改相应的链指针、盘区大小等数据

  2. 回收:若相邻则合并;若不相邻,作为单独的一个空闲区挂到链尾

 

位示图法

 

 

  1. 分配:若文件需要K个块:顺序扫描位示图,找到K个相邻或不相邻的”0“;根据字号、位号算出对应的盘块号,将相应盘块分配给文件;将相应位设置为”1“

  2. 回收:根据回收的盘块号计算出对应的字号、位号;将相应的二进制位设为”0“

 

成组链接法

前两者不适用大型文件系统;UNIX系统使用

文件卷的目录区中专门用一个磁盘块作为”超级块“,当系统启动时需要将超级块读入内存,并且要保证内存与外存中的”超级块“数据一致

 

 

  1. 分配:

    • 需要1个空闲块

      检查第一个分组的块数是否足够,足够;分配第一个分组中的1个空闲块,并修改数据

    • 需要100个空闲块

      检查第一个分组的块数是否足够,足够;分配第一个分组中的100个空闲块,包括300号空闲块,所以需要将300号块的数据复制到超级块中

  2. 回收

    • 第一组分组没满,直接将插入第一个空闲块,修改数据

    • 第一组分组满了,超级块的信息复制给回收的新块,并修改超级块的内容

       

       

 

4.6 文件的基本操作

创建文件

分配外村空间,创建目录项

删除文件

回收外存空间,删除目录项

打开文件

  1. 从目录表中找到文件名对应的目录项,并检查该用户是否有制定的操作权限

  2. 将目录项复制到内存中的打开文件表中,并将对应表目的编号(索引号、文件描述符)返回给用户,之后用户使用打开文件表的编号来指明要操作的文件

 

 

关闭文件

  1. 将进程的打开文件表相应表项删除

  2. 回收分配给该文件的内存空间等资源

  3. 系统打开文件表的打开计数器count减1,若count = 0,则删除对应表项

读文件

指明文件表中的索引号,读入多少数据、内存中的位置

写文件

指明文件表中的索引号,写回多少数据、写回外存中的位置(写指针)

 

4.7 文件共享

基于索引结点的共享方式(硬链接)

 

 

基于符号链的共享方式(软链接)

 

 

Link 类型的文件名可以不同

当文件1删除时,通过文件2的软链接找到的路径失效

 

4.8 文件保护

口令保护

为文件设置一个“口令”,用户请求访问该文件时必须提供“口令”

优点:保存口令的空间开销不多,验证口令的时间开销小

缺点:口令放入内存,不安全

加密保护

使用某个“密码”对文件进行加密,在访问文件时需要提供正确的“密码”,才能对文件进行正确解密

加密和解密的方式相同的话,结果是相同的

优点:保密性强,不需要在系统中存储“密码”

缺点:加密/解密需要耗费一定时间

访问控制

在每个文件的FCB(或索引结点)中增加一个访问控制列表,该表中记录各个用户可以对该文件执行哪些操作

精简的访问列表:以“组”为单位,标记各“组”用户对文件执行哪些操作

 

4.9 文件系统的层级结构

 

 

文件基本操作 -> 文件目录 -> 文件保护 -> 文件逻辑结构 ->文件物理结构 ->文件存储空间管理 -> 磁盘管理

 

4.10 磁盘

4.10.1 磁盘结构

磁盘:表面由一些磁性物质组成,可以用这些磁性物质来记录二进制数据

 

 

 

 

在磁盘中读/写数据:需要将“磁头”移动到想要读/写的扇区所在的磁道,磁盘会转动,让目标扇区从磁头下面划过,才能完成对扇区的读/写操作

 

盘面、柱面

 

 

可用(柱面号,盘面号,扇区号)来定位任意一个“磁盘块”

  1. 指定柱面

  2. 激活磁头

  3. 磁盘旋转读取

 

磁盘分类

活动头磁盘:磁头可以移动

固定头磁盘:磁头不可以移动,但是一个盘面有很多个磁头分别对应不同的磁道

可换盘磁盘:盘片可以更换

固定盘磁盘:盘片不可以更换

 

4.10.2 磁盘调度算法

一次磁盘读/写操作需要的时间

寻找时间Ts:在读/写数据前,将磁头移动到指定磁道所花的时间

  1. 启动磁头臂:s

  2. 移动磁头:假设磁头匀速移动,每跨越一个磁道耗时为m,总共需要跨越n条磁道,则寻道时间 Ts = s + m * n

延迟时间Tr:通过旋转磁盘,使磁头定位到目标扇区所需要的时间,设磁盘转速为r(单位:转/秒或转/分),则平均所需的延迟时间 Tr = (1/2)*(1/r )

传输时间Tt:从磁盘读出或向磁盘写入数据所经历的时间,假设读/写的字节数为b,每个磁道上的字节数为N,则传输时间 Tt = (1/r)*(b/N)

 

各磁盘调度算法

先来先服务算法(FCFS)

根据进程请求访问磁盘的先后顺序进行调度

 

最短寻找时间优先(SSTF)

优先处理磁道是与当前磁头最近的磁道;类似贪心算法,可以保证每次的寻道时间最短,但是不能保证总的寻道时间最短

 

 

缺点:可能产生“饥饿”现象

 

扫描算法(SCAN)

只有磁头移动到最外侧磁道的时候才能往内移动,移动到最内侧磁道的时候才能往外移动

 

 

 

LOOK调度算法

在扫描算法的基础上(优化缺点1),如果在磁头移动方向上已经没有别的请求,就可以立即改变磁头移动方向

 

循环扫描算法(C-SCAN)

在扫描算法的基础上(优化缺点2),返回时直接快速移动至起始端而不处理任何请求

 

C-LOOK调度算法

在扫描算法的基础上(优化缺点1,2),如果在磁头移动方向上已经没有别的请求,就可以立即改变磁头移动方向,并且返回第一个需要访问的位置

 

 

 

减少磁盘延迟时间的方法

交替编号

问题:由于磁头读入一个扇区数据后需要一段时间处理,如果逻辑上相邻的扇区在物理上也相邻,则读入几个连续的逻辑扇区,可能需要很长的“延迟时间”(磁盘转多一圈)

省下多转一圈的时间

 

为什么是(柱面号,盘面号,扇区号)

 

 

 

 

 

错位命名

问题:若相邻的盘面相对位置相同处扇区编号相同,则盘面交换的时候,由于处理时间,要多转一圈

 

 

 

4.10.3 磁盘的管理

磁盘初始化

 

 

引导块

开机时需要进行一系列初始化的工作,这些初始化工作是通过执行初始化程序(自举程序)完成的;

很小的自举装入程序存放在ROM中(只读),完整的自举程序放在磁盘的启动块(即引导块/启动分区)上,启动块位于磁盘的固定位置;拥有启动分区的磁盘称为启动磁盘系统磁盘

开机时计算机先运行“自举装入程序”,通过执行该程序找到引导块,并将完整的自举程序读入内存,完成内存。

 

坏块的管理

简单的磁盘,在逻辑格式化时,对整个磁盘进行坏块检查,标明哪些扇区是坏扇区

复杂的磁盘,磁盘控制器(磁盘设备内部的一个硬件部件)会维护一个坏块链表,低级格式化时将坏块链进行初始化

扇区备用:保留一些“备用扇区”,用于替换坏块,坏块对操作系统透明

 

标签:文件,操作系统,管理,扇区,索引,磁头,磁盘,内存
From: https://www.cnblogs.com/eecsCodeStar/p/16980829.html

相关文章