【命题重点】
1.绝对目录与相对目录,文件控制块,文件共享的两种方式,文件的打开与关闭。
2.文件的集中物理结构及特点,FCB的存储方式及原因,混合索引分配方式。
3.各种磁盘调度算法的原理,特别是SCAN和CSCAN。
目录结构
【考点笔记1】绝对路径与相对路径
用户要访问某个文件时,用文件路径名标识文件,文件路径名是个字符串,由从根目录出发到所找文件的通路上的所有目录名与数据文件名用分隔符“/”链接起来而成。
绝对路径: 从根目录出发的路径
相对路径: 从用户(进程)的当前目录出发到所找文件通路上所有目录名与数据文件名用分隔符“/”链接而成。进程对各文件的访问都是相对于当前目录进行的,设置当前目录有利于加快文件的检索速度
【考点笔记2】文件控制块
文件控制块(FCB)是用来存放控制文件需要的各种信息的数据结构,以实现“按名存取”。FCB的有序集合称为文件目录,一个FCB就是一个文件目录项。为了创建一个新文件,系统将分配一个FCB并存放在目录文件中,成为目录项。
FCB主要包含以下信息:
- 基本信息,如文件名、文件的物理地址、文件的逻辑结构、文件的物理结构等、
- 存取控制信息,如文件存取权限等。
- 使用信息,如文件建立信息、修改时间等。
文件保护和文件共享
【考点笔记3】文件共享
(1)硬链接文件共享
硬链接文件共享采用索引结点方式。在树形结构的目录中只设置文件名及指向相应索引节点的指针。共享文件的用户目录都设置指向该文件索引结点的指针。在索引结点中还应有一个链接计数器count,用于表示链接到本索引结点(亦及文件)上的用户目录项的数目,当count>1时,文件拥有者不能将文件删除,如图4-1所示。
优点:实现了异名共享。
缺点:文件拥有者不能删除与他人共享的文件。
(2)符号链(软链接)
在利用符号链实现文件共享时,只有文件的拥有者才拥有指向其索引结点的指针。当用户B要共享用户A的一个文件F时,可以由系统在用户B的目录下创建一个只包含被共享文件F的路径名的LINK类型的新文件。称这样的链接方法为符号链接。
优点:文件拥有者可以删除被他人共享的文件。
缺点:当其他用户读共享文件时,需要根据路径名的各个分量逐个查找,访问开销大。
eg.用Windows操作系统的快捷方式来理解
文件的操作
【考点笔记4】文件的创建和删除
(1)创建文件:创建文件有两个必要的步骤,一是在文件系统中为文件找到空间;二是在目录中为文件创建条目,该条目记录文件名称、在文件系统中的位置以及其他可能信息。
(2)删除文件:先从目录中找到要删除的文件的目录项,使之成为空项,然后回收该文件所占用的存储空间(包括文件控制块、缓冲区等)。
【考点笔记5】文件的打开
许多系统要求在首次打开文件时,使用系统调用open。操作系统维护打开文件表(open-filetable),当需要一个文件操作时,可通过该表的一个索引指向文件,就省略了搜索环节。当文件不再使用时,进程可以关闭它,操作系统从打开文件表中删除这一条目。
如果调用open的请求(创建、只读、读写、添加等)得到允许,进程就可以打开文件,而open通常返回一个指向打开文件表中的一个条目的指针。通过使用该指针(而非文件名)进行所有的I/O操作,以简化步骤并节省资源。
【考点笔记6】常用系统调用(UNIX为例)
类型 |
|
---|---|
进程控制类 | 常见进程fork。新进程作为调用者的子进程继承了其父进程的环境、已打开的所有文件、根目录和当前目录等。 终止进程exit。父进程将其安排在子进程的末尾。子进程在完成后,进行自我终止。 等待子进程结束wait。wait用于将调用者进程自身挂起,直至其某一子进程终止。 |
文件操作类 | 创建文件create。根据用户提供的文件名和许可方式,创建一个新文件或重写一个已存文件。 打开文件open。根据文件名搜索目录,将目录条目复制到打开文件表,并给用户返回文件描述符fd。文件被打开后,用户对文件的任何操作都只须使用fd而非路径名。 关闭文件close。断开用户程序和该文件之间已建立的快捷通路。 读文件read和写文件write。仅当用户利用open打开指定文件后,方可调用read或write对文件执行读或写操作。 |
文件实现
【考点笔记7】文件分配方式
文件分配方式 |
|
---|---|
连续分配 | 连续分配方法要求每个文件在磁盘上占有一组连续的块,其文件的FCB包含第一块的磁盘地址和连续块的数量。 ①支持顺序访问和直接访问(随机存取) ②实现简单、访问文件时需要的寻道数和寻道时间最小,存取速度快。 ③文件长度不宜动态增加。 ④反复增删文件会产生外部碎片,只适用于长度固定的文件。 |
隐式链接分配 | 隐式链接分配将每个文件对应一个磁盘块的链表;磁盘块离散分布,除最后一个磁盘块外,每一个盘块都有指向下一个盘块的指针。目录包括文件第一块的指针和最后一块的指针。 ①只能顺序访问文件; ②消除了外部碎片,显著地提高了外存空间的利用率; ③可动态地按需分配磁盘块,无需事先知道文件的大小; ④对文件的增、删、改很方便; ⑤稳定性存在问题,一旦断链将导致文件数据的丢失。 |
显示链接分配 | 显示链接,是指把用于链接文件各物理块的指针,显示地存放在内存的一张链表中。该表在整个磁盘仅设置一张,在每个表项中存放链接指针,即下一个盘块号。在该表中,凡是属于某一文件的第一个盘块号,或者说是每一条链的链首指针所对应的盘块号,均作为文件地址被填入相应文件的FCB的“物理字段”中,从而大大减少了访问磁盘的次数。由于分配给文件的所有磁盘块都放在该表中,故把该表称为文件分配表FAT(File Allocation Table)。 |
索引分配 | 把每个文件的所有盘块号都集中放在一起构成索引块(表)。每个文件都有其索引块,这是一个磁盘块地址的数组。索引块的第i个条目指向文件的第i个块。目录条目包括索引块的地址。 ①索引分配支持直接访问,且没有外部碎片问题 ②增加了系统存储空间的开销 |
【考点笔记8】混合索引分配方式
混合索引分配方式把所有的地址项分为两类,即直接地址和间接地址。如图4-2所示。
直接地址: 每项中所存放的是该文件数据所在盘块的盘块号。
一次间接地址: 每项一次间接地址指向一个一次间址块(索引块),一次间址块存放着文件的多个盘块号。
二次间接地址: 每项二次间接地址指向一个二次间址块,二次间址块中记入所有一次间址块的盘号。
在采用混合索引分配文件时,假如有
N
0
N0
N0个直接地址,
N
1
N1
N1个一次间接地址项,
N
2
N2
N2个二次间接地址项,每个盘块的大小为
M
M
M个字节,盘块号占
m
m
m个字节。其所允许的文件最大长度为(字节):
(
N
0
+
N
1
×
M
m
+
N
2
×
(
M
m
)
2
)
×
M
(N0+N1\times \frac{M}{m} +N2 \times (\frac{M}{m})^2)\times M
(N0+N1×mM+N2×(mM)2)×M
磁盘组织与管理
【考点笔记9】磁盘调度算法
一次磁盘读写操作的时间由寻找(寻道)时间、延迟时间和传输时间决定:
时间 |
| 决定因素 |
---|---|---|
寻找时间Ts | 将磁头移动到指定磁道所需要的时间 | 磁盘调度算法 |
延迟时间Tr | 磁头定位到某一磁道的扇区(块号)所需要的时间 | 磁盘转速 |
传输时间Tt | 从磁盘读出或向磁盘写入数据所经历的时间 | 磁盘转速 |
访问时间=寻道时间+延迟时间+传输时间
寻找时间Ts=m×n+s
s是启动磁头臂的时间
n是需要移动的磁道数
m是每一动一个磁道所需时间
延迟时间Tr=(1/r)/2=1/(2r)
r为磁盘的旋转速度
平均延迟时间 = 磁盘旋转半周的时间
传输时间Tt=b/(rN)
r是磁盘转速
N是一个磁道上的字节数
b是每次读写的字节数
目前常用的磁盘调度算法有以下几种:
算法 |
|
|
---|---|---|
先来先服务(FCFS)算法 | FCFS算法根据进程请求访问磁盘的先后顺序进行调度处理,这是一种最简单的调度算法 | FCFS具有公平性,对于局部性较好的访问序列有良好的性能 |
最短寻道时间优先(SSTF)算法 | SSTF算法选择调度处理的磁道是当前磁头所在磁道距离最近的磁道 | 每次的寻道时间最短(平均寻找时间不一定最小)。 SSTF能提供比FCFS算法更好的性能,但会产生“饥饿”现象。 |
扫描(SCAN)算法(电梯算法) | SCAN算法在磁头当前移动方向上选择与当前磁头所在磁道距离最近的请求作为下一次服务的对象 | SCAN算法对最近扫描过的区域不公平,在访问局部性方面不如FCFS算法和SSTF算法好。 |
循环扫描(C-SCAN)算法 | 在扫描算法的基础上规定磁头单向移动来提供服务,回返时直接快速移动至起始端而不服务任何请求 | C-SCAN算法克服了SCAN趋向处理最内道与最外道请求的缺点 |
SCAN算法(扫描算法)
C-SCAN算法(循环扫描算法)磁头移动方向