趁着2019的最后一天,将之前写好的操作系统笔记整理了一下。
一开始只是想着做思维导图,觉得这样梳理知识点还挺不错的,后来发现思维导图看起来不太方便。因此只有前四章是有思维导图的。
后来想着是写完笔记再做思维导图…结果就写了笔记,因此后面第五~七章都只有笔记。
不过后半年写的计网笔记都是有笔记有思维导图的!
考虑到这个好像是408的教材,2020年应该会有修改版或者新的版本(或许)
————————————————————————————————————————
教材:计算机操作系统
作者:汤小丹
出版社:西安电子科技大学出版社
第一章 操作系统引论
![](https://raw.githubusercontent.com/NgSzeOi/cloudimg/master/img/一、%20操作系统引论.jpg)
第二章 进程的描述与控制
![](https://raw.githubusercontent.com/NgSzeOi/cloudimg/master/img/二、%20进程的描述.jpg)
第三章 处理机调度与死锁
![](https://raw.githubusercontent.com/NgSzeOi/cloudimg/master/img/三、%20处理机调度与死锁.jpg)
第四章 存储器管理
![](https://raw.githubusercontent.com/NgSzeOi/cloudimg/master/img/四、%20存储器管理.jpg)
第五章 虚拟存储器
5.1 概述
第四章介绍的各种存储管理方式都有一个共同的特点,即它们都要求将一个作业全部装入内存后运行
(1)两种情况
- 有的作业很大,其所要求的内存空间超过内存容量,作业不能全部装入内存,致使该作业无法运行
- 有大量作业要求运行,不过只能少数进入内存
(2)解决方法
- 物理上增加内存容量
- 逻辑上扩充内存容量
1. 传统存储器管理方式
- 一次性
- 驻留性
2. 虚拟存储器
- 定义:具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统
- 逻辑容量由内存容量+外存容量所决定
- 虚拟存储器,是指仅把作业的一部分装入内存便可运行的存储器系统
(1)特征
- 多次性
- 对换性
- 虚拟性
(2)实现基础
- 离散存放
- 多次装入
(3)方式
-
请求分页系统
主要硬件支持:请求分页的页表机制、缺页中断机构、地址变换机构
-
请求分段系统
主要硬件支持:请求分段的段表机制、缺段中断机构、地址变换机构
5.2 请求分页存储管理方式
1. 硬件支持
(1)请求页表机制
-
页表除了提供地址变换需要的信息外,还提供请求调入和置换所需的必要信息
页号 | 物理块号 | 状态位P | 访问字段A | 修改位M |外存地址
- 状态位P:是否已调入内存
- 访问字段A:记录访问次数/最近多长时间没被访问
- 修改位M:调入内存后是否被修改过;若已修改,将该页重写到内存上
- 外存地址:该页在外存上的地址,通常为物理块号
(2)缺页中断机制
- 中断是由当前进程产生的
- 在指令执行期间产生和处理中断信号
- 一条指令执行期间可产生多次中断
(3)地址变换机构
- 检索快表,若命中(一定在内存中)
- 修改访问位
- 如果是写指令,修改修改位
- 检索快表未命中(有可能在内存中),若未找到,则到内存中找页表
- 查看状态位
- 如果已经调入内存,则将该页的页表项写入快表
- 若未调入内存,产生缺页中断,请求OS丛外存把该页调入内存
- 当快表快满时,按某种算法调出某页表项,再写入该页页表项
- 中断位指示该页不在内存,则引起缺页中断
- 转向相应的缺页中断处理子程序
- 把所缺页面装入内存并填写页表
- 形成物理地址,转断点指令继续执行
相关计算
(1)不考虑命中率和缺页率的有效访问时间
注:t1—访问快表,t2—访问内存,t3—缺页处理
- 快表命中(页面一定在内存)
T = 查 快 表 + 取 指 令 = t 1 + t 2 T=查快表+取指令=t_1+t_2 T=查快表+取指令=t1+t2
- 快表未命中,页面在内存
T
=
查
快
表
+
查
页
表
+
修
改
快
表
+
取
指
令
T=查快表+查页表+修改快表+取指令
T=查快表+查页表+修改快表+取指令
=
t
1
+
t
2
+
t
1
+
t
2
=
2
(
t
1
+
t
2
)
=t_1+t_2+t_1+t_2=2(t_1+t_2)
=t1+t2+t1+t2=2(t1+t2)
- 快表未命中,页面不在内存
T
=
查
快
表
+
查
页
表
+
缺
页
处
理
+
修
改
快
表
+
取
指
令
T=查快表+查页表+缺页处理+修改快表+取指令
T=查快表+查页表+缺页处理+修改快表+取指令
=
t
1
+
t
2
+
t
3
+
t
1
+
t
2
=
t
3
+
2
(
t
1
+
t
2
)
=t_1+t_2+t_3+t_1+t_2=t_3+2(t_1+t_2)
=t1+t2+t3+t1+t2=t3+2(t1+t2)
(2)考虑命中率和缺页率的有效访问时间
注:ta—回写调页,tb—直接调页,α—快表命中率,р—缺页率,β—页面修改率*
T
=
α
∗
(
查
快
表
+
取
指
令
)
+
(
1
−
α
)
∗
[
(
1
−
р
)
∗
(
查
快
表
+
查
页
表
+
修
改
快
表
+
取
指
令
)
T=α*(查快表+取指令)+(1-α)*[(1-р)*(查快表+查页表+修改快表+取指令)
T=α∗(查快表+取指令)+(1−α)∗[(1−р)∗(查快表+查页表+修改快表+取指令)
+ р ∗ ( 查 快 表 + 查 页 表 + 缺 页 处 理 + 修 改 快 表 + 取 指 令 ) ] +р*(查快表+查页表+缺页处理+修改快表+取指令)] +р∗(查快表+查页表+缺页处理+修改快表+取指令)]
= t 1 + α ∗ t 2 + ( 1 − α ) ∗ [ t 2 + ( 1 − р ) ∗ ( t 1 + t 2 ) + р ∗ ( t 3 + t 1 + t 2 ) ] =t_1+α*t_2+(1-α)*[t_2+(1-р)*(t_1+t_2)+р*(t_3+t_1+t_2)] =t1+α∗t2+(1−α)∗[t2+(1−р)∗(t1+t2)+р∗(t3+t1+t2)]
(3)缺页处理时间
t
3
=
β
∗
t
a
+
(
1
−
β
)
∗
t
b
t_3=β*t_a+(1-β)*t_b
t3=β∗ta+(1−β)∗tb
(4)没有快表的有效访问时间
T
=
t
2
+
(
1
−
р
)
∗
t
2
+
р
∗
(
t
3
+
t
2
)
T= t_2+(1-р)*t_2+р*(t_3+t_2)
T=t2+(1−р)∗t2+р∗(t3+t2)
(这条公式可能存在错误,请自行查证)
2. 请求分页中的内存分配
(1)最小物理块数的确定
- 能保证进程正常运行所需的最小物理块数
- 取决于指令的格式、功能和寻址方式
(2)分配策略
分配物理块是采取怎样的分配策略(所分配的物理块是固定的,还是可变的)
- 固定分配+局部置换
- 可变分配+全局置换
- 可变分配+局部置换
(3)分配算法
为不同进程所分配的物理块数,是采取平均分配算法,还是根据进程大小按比例分配
- 平均分配算法
- 按比例分配算法
- 优先权分配算法
3. 调页策略
(1)调入页面的时机
- 预调页:用于首次调入时
- 请求调页:用于中间运行时
(2)从何处调入页面
-
请求分页系统中的外存分为两部分
- 文件区:存放文件的(离散分配方式)
- 对换区:存放对换页面的(连续分配方式)
-
从何处将缺页调入内存,三种情况:
- 系统拥有足够的对换区空间:全部从对换区调入:文件区→对换区
- 系统缺少对换区空间:不会被修改的从文件区调入(不需回写),可能修改的从对换区调入(回写方便)
- UNIX方式:首次运行的页面从文件区调入;换出的页面放在对换区,从对换区调入。
5.3 页面置换算法
- 当发生缺页中断而内存全满时,系统需淘汰内存中的一个页面
- 用来选取淘汰页面的规则叫置换算法
- 不好的置换算法容易产生抖动
1. 最佳置换算法(OPT)
- 理论算法
- 采用最佳置换算法,通常可保证获得最低的缺页率,但难以实现
- 常用于评价其它算法
2. 先进先出置换算法(FIFO)
该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰
- 将内存页面按进入的先后次序链接成队列,并设置替换指针使之指向队首页面
- 选择替换指针所指的最老页面淘汰
- 存在“Belady”异常现象:随内存块数的增加内存命中率可能反而减少
3. 最近最久未用置换算法(LRU)
选择最后一次访问时间距离当前时间最长的页面淘汰,即淘汰没有使用的时间最长的页面
(1)硬件支持
寄存器
- 为每个内存块设置一个移位寄存器 R = R n − 1 R n − 2 R n − 3 … R 2 R 1 R 0 R=R_{n-1}R_{n-2}R_{n-3} … R_2R_1R_0 R=Rn−1Rn−2Rn−3…R2R1R0
- 内存块被访问时,置寄存器的Rn-1位为 “1”
- 每隔一定时间将寄存器R右移一位,左边添“0”
- 具有最小值的寄存器所对应的页面即最近最久未用的页面
栈
- 调入的新页压栈
- 淘汰的旧页弹栈
- 命中的页面弹至栈顶
4. 最少使用置换算法(LFU)
同样采用移位寄存器
5. 近似的LRU算法(NRU)——Clock算法
(1)简单的 Clock 置换算法
- 为内存每个页面设置一个访问位,并将内存页面链接成循环队列
- 当某页面被访问时,置其访问位为“1”
- 选择淘汰页面时,检查访问位:
- 为0:选择该页淘汰
- 为1:置“0”,暂不换出;继续检查下一个页面
(2)改进型 Clock 置换算法
四种类型页面
-
由访问位A和修改位M组合成四种类型页面
- 1类(A=0, M=0)
-
表示该页最近既未被访问,又未被修改,是最佳淘汰页
- 2类(A=0, M=1)
-
表示该页最近未被访问,但已被修改,并不是很好的淘汰页
- 3类(A=1, M=0)
-
最近已被访问,但未被修改,该页有可能再被访问
- 4类(A=1, M=1)
-
最近已被访问且被修改, 该页可能再被访问
重复执行三步骤
-
从指针所指示的当前位置开始,扫描循环队列
- 在第一次扫描期间不改变访问位A
- 寻找A=0且M=0的第一类页面,将所遇到的第一个页面作为所选中的淘汰页
-
如果查找一周后未遇到第一类页面,则开始第二轮扫描:
- 寻找A=0且M=1的第二类页面,将所遇到的第一个这类页面作为淘汰页
- 把所有页面的访问位A由1置0
-
如果未找到第二类页面,则将指针返回到开始位置,开始第三轮扫描
抖动与工作集
前提:系统采取可变分配+全局置换
根本原因:在系统中运行的进程太多,由此分配给每一个进程的物理块太少,不能满足进程正常运行的基本要求,致使每个进程在运行时,频繁地出现缺页,必须请求系统将所缺之页调入内存。
原因:
- 页面置换算法不合理
- 分配给进程的物理块数太少
(1)“抖动”预防方法
- 采取局部置换策略
- 引入工作集算法
- L=S准则
- 挂起若干进程
(2)例子
如何改善CPU利用率?
-
CPU:13%,对换盘:3%
- 可进一步提高多道度
-
CPU:87%,对换盘:3%
- 可试探性提高多道度
-
CPU:13%,对换盘:97%
- 必须减少多道度
第六章 输入输出系统
6.1 I/O系统的功能、模型和接口
I/O系统管理主要对象是:I/O设备和相应的设备控制器
任务:完成用户提出的I/O请求,提高I/O速率,以及提高设备的利用率,并能为高层的进程方便地使用这些设备提供手段
6.1.1 I/O系统的基本功能
-
隐藏物理设备的细节
-
与设备的无关性
-
提高CPU和I/O设备的利用率
-
对I/O设备进行控制
-
确保对设备的正确共享
- 独占设备:互斥使用
- 共享设备:交替使用
-
错误处理
6.1.2 I/O系统的层次结构和模型
I/O软件的层次结构
- 用户层I/O软件
- 设备独立性软件
- 设备驱动程序
- 中断处理程序
6.2 I/O设备和设备控制器
I/O设备组成:
- 执行I/O操作的机械部分(I/O设备)
- 执行控制I/O的电子部件(设备控制器/适配器)
6.2.1 I/O设备
1. I/O设备
(1)按使用特性分
- 存储型设备
- 输入输出型设备
(2)按传输速率分
- 低速设备:键盘、鼠标等
- 中速设备:打印机
- 高速设备:磁带机、磁盘机等
(3)按从属关系分
- 系统设备
- 用户设备
(4)按使用角度分
- 逻辑设备
- 物理设备
2. 设备与控制器之间的接口
设备 → 设备控制器 → CPU
设备 → DR → 内存
- 数据信号线
- 控制信号线
- 状态信号线
6.2.2 设备控制器
(1)两类
- 控制字符设备的控制器
- 控制块设备的控制器
(2)组成
-
设备控制器与处理机的接口
- 三类信号线:数据线、地址线、控制线
- 两类寄存器:数据寄存器、控制/状态寄存器
- 数据线与两类寄存器相连
-
设备控制器与设备的接口
- 三种信号:数据、状态、控制
-
I/O逻辑
6.3 中断处理机构
6.4 设备驱动程序
6.4.3 对I/O设备的控制方式
1. 直接存储器访问方式
(1)目的:减少CPU的干预
-
命令/状态寄存器CR
-
内存地址寄存器MAR
- 输入:存放把数据从设备传送到内存的起始目标地址
- 输出:存放由内存到设备的内存源地址
-
数据寄存器DR:暂存从设备到内存/内存到设备的数据
-
数据计数器DC:存放本次CPU要读/写的字节数
(2)工作过程
- CPU发启动命令,打开CR中的中断允许位
- CPU设置控制器的MAR和DC
- 当前进程阻塞,发生新的进程调度
- 不断挪用CPU周期,将DR中的数据写入内存指定单元,直至DC=0
- 控制器向CPU发中断信号,CPU转中断处理子程序,完成后返回被中断进程继续执行
- 随后调度到发出I/O请求的进程,从指定单元取出数据继续执行
(3)与中断驱动方式的区别
-
中断方式是以字符为单位传送数据
DMA方式是以块为单位传送数据
-
中断方式是在DR满后发中断信号
DMA方式是在数据块传送完后发中断信号
-
中断方式的数据传送是在CPU的控制下由中断处理程序完成的
DMA方式的数据传送是在控制器的控制下盗用CPU周期完成的
2. I/O通道控制方式
进一步减少CPU的干预
通道是通过执行通道程序和设备控制器共同实现对I/设备的控制
(1)通道程序
由通道指令/通道命令所构成
-
操作码:规定指令所执行的操作
-
内存地址:标明数据送入内存和从内存取出的起始地址
-
计数:表示本条指令读/写数据的字节数通道程序结束标志P
- P=0:通道程序尚未结束
- P=1:本指令是通道程序的最后一条指令
-
记录结束标志R
- R=0:本通道指令与下一条同属一条记录
- R=1:处理某记录的最后一条指令
(2)与DMA方式的区别
-
DMA方式一次传送一块数据
通道方式一次传送多块数据
-
DMA方式中某些控制由CPU完成
通道方式中I/O控制由通道完成
-
DMA方式在一块数据传送完后发中断信号
通道方式在全部数据传送完后发中断信号
6.5 与设备无关的I/O软件
6.5.3 设备分配
1. 数据结构
-
设备控制表(DCT)
每个设备一张DCT,记录设备使用情况
DCT在系统生成或该设备和系统连接时生成
- 设备类型:type
- 设备标识符:deviceid
- 设备状态:忙/闲
-
指向控制器表的指针
- 重复执行次数或时间
- 设备队列的队首指针
-
控制器控制表(COCT)
-
通道控制表 (CHCT)
-
系设备表(SDT)
2. 设备的固有属性
- 独占设备
- 共享设备
- 虚拟设备
3. 设备分配算法
- 先来先服务
- 优先权最高者优先
4. 设备分配中的安全性
- 安全分配方式
- 不安全分配方式
6.6 用户层的I/O软件
1. SPOOLing 技术
是对脱机I/O的模拟
在联机情况下实现的同时外围操作
目的:将独占打印机改造成共享打印机
6.7 缓冲区管理
6.7.1 缓冲的引入
- 缓和CPU与I/O设备间速度不匹配的矛盾
- 减少对CPU的中断频率,放宽对中断响应时间的限制
- 提高CPU和I/O设备之间的并行性
1. 单缓冲
-
I/O设备→缓冲区:输入(T)
-
缓冲区→用户进程:传送(M)
-
用户进程→工作区:处理©
一块: T ≈ M a x ( C , T ) + M T ≈ Max(C,T) + M T≈Max(C,T)+M
多块: T ≈ n ∗ [ M a x ( C , T ) + M ] + C T ≈ n* [Max(C,T)+M] + C T≈n∗[Max(C,T)+M]+C
2. 双缓冲
一块: T ≈ M a x ( C , T ) T ≈ Max(C,T) T≈Max(C,T) (忽略M)
多块: T ≈ n ∗ M a x ( C , T ) + M + C T ≈ n*Max(C,T)+M+C T≈n∗Max(C,T)+M+C
6.8 磁盘存储器的性能和调度
改善磁盘系统的性能
- 选择好的调度算法
- 提高磁盘I/O速度
- 采取冗余技术
6.6.1 磁盘性能简述
- 磁盘由若干磁盘片组成
- 每个磁盘片划分为磁道和扇区
- 信息存储在各个磁道的不同扇区上
- 磁盘片的不同盘面有一个读写磁头
- 所有磁盘片的同一磁道组成一个柱面
- 磁盘的物理地址格式:磁头号(盘面号)、磁道号(柱面号)、扇区号
2.磁盘的类型
- 固定头磁盘
- 移动头磁盘
3.磁盘访问时间
- 寻道时间:磁臂(磁头)移动到指定的磁道上
T s = m ∗ n + s ( m : 寻 道 时 间 , n : 寻 道 距 离 , s : 启 动 时 间 ) T_s=m*n+s (m:寻道时间,n:寻道距离,s:启动时间) Ts=m∗n+s(m:寻道时间,n:寻道距离,s:启动时间)
- 旋转延迟时间:扇区移动到磁头下
T r = 1 / 2 r ( r : 磁 盘 转 速 ) T_r=1/2r (r:磁盘转速) Tr=1/2r(r:磁盘转速)
- 传输时间:数据读出或写入磁盘
T t = b / r ∗ N ( r : 磁 盘 转 速 , N : 一 条 磁 道 字 节 数 , b : 待 传 送 字 节 数 ) T_t=b/r*N (r:磁盘转速,N:一条磁道字节数,b:待传送字节数) Tt=b/r∗N(r:磁盘转速,N:一条磁道字节数,b:待传送字节数)
访 盘 时 间 = T s + T r + T t 访盘时间=T_s + T_r + T_t 访盘时间=Ts+Tr+Tt
6.6.2 早期的磁盘调度
目标:使磁盘平均寻道时间最少
1. 先来先服务(FCFS)
根据进程请求访问磁盘的先后次序进行调度。
表面公平,未优化寻道时间。
2. 最短寻道时间优先(SSTF)
选择要求访问的磁道与当前磁头所在磁道距离最近的进程调度,使每次的寻道时间最短。
不能保证平均寻道时间最短。
6.6.3 基于扫描的磁盘调度
1. 扫描算法(SCAN)
基于优先级的调度算法。又称电梯调度算法
(1)进程“饥饿”现象
SSTF算法选取所要访问的磁道与磁头当前所在磁道的距离较近的新进程调度,使老进程出现“饥饿”现象
(2)SCAN算法
不但考虑磁头距离,更优先考虑磁头方向
2. 循环扫描(CSCAN)
磁头只能单向移动,按磁道号由小到大的次序循环扫描。
3. NStepSCAN算法
磁臂粘着:某个或某些进程反复请求对某一磁道的I/O操作,从而垄断了整个磁盘设备。
SSTF、SCAN、CSCAN都会出现磁臂粘着
- 按FCFS算法依次处理磁盘请求子队列
- 按SCAN算法处理每个磁盘请求
- 新的磁盘请求新队列,避免“磁臂粘着”
4. FSCAN算法
- 对n步SCAN算法的简化
- 分为当前队列和新进程队列
- 对当前队列按SCAN算法进行处理
- 将新的磁盘请求推迟到下一次扫描时处理
第七章 文件管理
7.1 文件和文件系统
文件系统的管理功能:将其管理的程序和数据通过组织为一系列文件的方式实现
-
文件是指有文件名的若干元素的集合
-
元素通常是记录
-
记录是一组有意义的数据项的集合
7.1.1 文件、记录和数据项
(1)数据项
两种类型:
- 基本数据项(字段):可以命名的最小数据单位, 包括数据名和数据类型两个属性
- 组合数据项(组项):若干基本数据项的组合
(2)记录
- 记录是一组相关数据项的集合,用于描述一个对象某方面的属性
- 关键字是能够唯一标识一个记录的数据项
(3)文件
文件是具有文件名的一组相关信息的集合,是文件系统中最大的数据单位
文件属性:
- 文件类型
- 文件长度
- 文件的物理位置
- 文件的建立时间
7.1.2 文件类型和文件系统模型
1. 文件类型
(1)按数据形式
- 源文件
- 目标文件
- 可执行文件
(2)按组织形式
- 普通文件
- 目录文件
- 特殊文件
(3)按逻辑结构分类
- 有结构文件
- 无结构文件
(4)按文件的物理结构分类
- 顺序文件
- 链接文件
- 索引文件
(5)按用途分类
- 系统文件
- 用户文件
- 库文件
2. 文件系统模型
(1)对象
- 文件
- 目录
- 磁盘存储空间
(2)对对象操纵和管理的软件集合
- 用户(程序)
- ↓↓↓↓↓↓↓↓↓
- 文件系统接口
- 对对象操纵和管理的软件集合
- 对象及其属性
(3)文件系统的接口
- 命令接口
- 程序接口
7.1.3 文件操作
(1)基本的文件操作
- 创建文件
- 删除文件
- 读文件
- 写文件
- 截断文件
- 设置文件的读/写位置
7.2 文件逻辑结构
- 文件的逻辑结构:又称文件组织。从用户观点出发,所观察到的文件组织形式,即文件是由一系列的逻辑记录组成的。
- 文件物理结构:又称文件的存储方式。指系统将文件存储在外存上所形成的一种存储组织方式,是用户不能看见的。
7.2.1 文件逻辑结构的类型
1. 按文件是否有结构分类
(1)有结构文件
记录式文件。记录有定长和不定长两种
- 顺序文件:按某种顺序排列的定长文件
- 索引文件:按索引表查询的不定长文件
- 索引顺序文件:以上两者的结合
(2)无结构文件
即流式文件,利用读写指针指出下一个要访问的字符
7.2.2 顺序文件
(1)逻辑记录的排序
- 串结构:记录的顺序与关键字无关,由存储的先后顺序决定
- 顺序结构:所有记录按照关键字排列
缺点:
- 如果用户要求查找或修改单个记录时,顺
序文件的性能可能很差 - 增加或者删除一个记录都比较困难
1. 寻址
为了访问顺序文件中的一条记录,首先应该找到该记录的地址
(1)隐式寻址
- 定长记录文件:简单计算
- 变长记录文件:每次从正在读写的记录中读出该记录的长度
(2)显式寻址
针对定长的方法
- 通过文件中记录的位置
- 利用关键字
7.2.3 索引文件
- 为变长记录文件建立一张索引表
- 为每条记录在索引表中建立一个表项
- 索引表是一个定长记录的顺序文件,按关键字排序
因此转变为对定长记录索引文件的随机检索
7.2.4 索引顺序文件
1. 索引顺序文件的组织
(1)一级索引文件
- 将顺序文件的所有记录分成若干组;
- 为顺序文件建立一张索引表
- 为每组的第一个记录建立一个索引项;
- 索引项包含该记录的关键字值和记录指针
(2)二级索引文件
在一级索引文件的基础上,为索引文件再建立一张索引表
7.3 文件物理结构
7.3.1 连续分配
(1)基本思想
- 由一组相邻的物理块组成,是对记录式文件取连续区分配而构成的文件
- 每个文件的目录项只需指出文件所占据的起始块号和总块数即可
7.3.2 链接结构
- 将逻辑上连续的文件分散存放在若干不连续的物理块中
- 每块有一个指针,指向其后续的物理块
- 将同属于一个文件的多个离散的盘块链接成一个链表,称为链接文件
- 隐式链接:文件目录项需记录文件的第一个盘块号和最后一个块号
- 显式链接:用于链接文件各物理块的指针显式地存放在内存的一张链接表中。在整个磁盘中仅设置一张。(FAT) 文件目录项记录文件的第一个盘块号,文件结束标志EOF保存在文件分配表FAT中。
7.3.3 FAT
1. FAT12
MS-DOS使用FAT12文件系统,将磁盘划分为四个“卷”,即磁盘分区;
以盘块为基本分配单位
- 磁盘实际容量 → FAT实际大小
- FAT最大大小 → 磁盘最大容量
F A T 大 小 = 表 项 数 ∗ 表 项 大 小 ( 12 b i t ) FAT大小=表项数*表项大小(12bit) FAT大小=表项数∗表项大小(12bit)
- 最 大 表 项 数 = 2 12 最大表项数=2^{12} 最大表项数=212
- 实际表项数=磁盘盘块数=总容量/盘块大小