什么是操作系统?操作系统的作用有哪些

操作系统是一组控制和管理计算机硬件和软件资源,合理地组织计算机工作流程,以及方便用户使用的程序集合

作用:

  1. 作为用户与计算机硬件系统之间的接口
  2. 作为计算机系统资源的管理者
  3. 用作扩充机器

操作系统通常具有哪4个基本特征

  • 并发
  • 共享
  • 虚拟
  • 异步性

操作系统应实现哪些基本目标

  1. 使计算机系统更易于使用(方便性)
  2. 以一种效率的方式使用资源(有效性)
  3. 采用模块化结构,易于增、删、改(可扩充性)
  4. 要求统一开放的环境,能通过网络集成化并正确、有效地协同工作,实现应用程序的移植(开放性)

操作系统的基本功能有哪些

  1. 处理器管理主要控制和管理CPU的工作,控制和管理处理机。主要功能是进程控制、进程同步、进程通信和进程调度等

  2. 存储管理:主要进行内存的分配和管理。主要功能是内存分配、内存保护、地址映射、内存扩充等

  3. 设备管理:主要管理基本的输入输出设备。主要功能是缓冲管理、设备分配、设备处理、虚拟设备等

  4. 文件管理:负责对计算机文件组织、存储、操作和保护等。

  5. 用户接口管理:主要负责管理操作系统提供给用户的接口,使用户能够方便地与计算机系统交互。主要功能为命令接口,程序接口,图形接口等。

处理机管理功能

主要任务:

  • 对处理机进行分配
  • 对处理机运行进行有效的控制和管理

处理机管理的功能:

  • 进程控制
  • 进程同步
  • 进程通信
  • 调度

存储器管理功能

主要任务:

  • 为多道程序的运行提供良好的环境
  • 方便用户使用存储器
  • 提高存储器的利用率
  • 从逻辑上扩充内存

功能:

  • 内存分配
  • 内存保护
  • 地址映射
  • 内存扩充

设备管理功能

主要任务:

  • 完成用户提出的I/O请求
  • 为用户分配I/O设备
  • 提高I/O设备的利用率及速度
  • 方便用户使用I/O设备

功能:

  • 缓冲管理
  • 设备分配
  • 设备处理
  • 虚拟设备

文件管理功能

主要任务:

  • 对用户文件和系统文件进行管理
  • 方便用户使用文件
  • 保证文件的安全性

功能:

  • 文件存储空间的管理
  • 目录管理
  • 文件的读、写管理
  • 文件的共享与保护

用户接口管理的功能

主要任务:

  • 方便用户使用操作系统

功能:

  • 命令接口
  • 程序接口(系统调用)
  • 图形接口

什么是通用操作系统?

如果一个操作系统兼有批处理、分时和实时系统三者或二者的功能,则称该操作系统为通用操作系统。


根据程序段绘制语句的前驱图

image-20231116191200023

程序的顺序执行:

image-20231116191229930


简要描述程序和进程之间的区别

  1. 程序是指令的有序集合,其本身没有任何运行的含义,它是一个静态的概念。而进程是程序在处理机上的一次执行过程,它是一个动态概念。
  2. 程序的存在是永久的。而进程则是有生命期的,它因创建而产生,因调度而执行,因得不到资源而暂停,因撤消而消亡。
  3. 程序仅是指令的有序集合。而进程则由程序段、相关数据段和进程控制块(PCB)组成。
  4. 进程与程序之间不是一一对应。
程序 进程
概念 静态 动态
所在存储器 外存 内存
存在时间 永久 有生命期
组成 有序指令 程序段,数据段,PCB
对应关系 一个程序可对应多个进程
一个进程可对应多个程序

请简要描述进程的3种基本状态

  • 就绪: 进程已获得了除处理机以外的所有资源,等待分配处理机执行的等待状态。

  • 运行/执行: 当一个进程获得必要的资源并正在处理机上执行的状态。

  • 等待/阻塞: 正在执行的进程由于发生某事件而暂时无法执行下去,此时进程所处的状态。


进程三种基本状态的转换图

image-20231118220040451


进程创建的流程图

image-20231118220600417


同步机制应当遵循哪些规则

  • 有空让进(空闲让进):当无进程处于临界区时,表明临界资源处于空闲状态,应允许一个请求进入临界区的进程立即进入自己的临界区,以有效地利用临界资源。
  • 互斥(忙则等待):当已有进程进入临界区时,表明临界资源正在被访问,因而其他试图进入临界区的进程必须等待,以保证对临界资源的互斥访问
  • 有限等待:对要求访问临界资源的进程,应保证在有限时间内能进入自己的临界区,以免陷入“死等”状态.
  • 让权等待:当进程不能进入自己的临界区时,应立即释放处理机,以免进程陷入“忙等”。

关于信号量的典型例题

读者-写者问题

writer进程要求写或修改。允许多个reader进程同时读共享数据,但绝不允许一个writer进程与其它的reader进程或writer进程同时访问,即writer进程必须与其它进程互斥访问共享对象。请用PV操作实现相应的reader和writer进程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
semaphore rmutex = 1; /* 读互斥信号量 */
semaphore wmutex = 1; /* 写互斥信号量 */
int readcount = 0;
Main() {
cobegin
reader();
writer();
coend
}

reader() {
while (true) {
P(rmutex);
if (readcount == 0) P(wmutex); /* 第一位读者阻止写者 */
readcount++;
V(rmutex);
读数据集;
P(rmutex);
readcount--;
if(readcount == 0) V(wmutex); /* 第末位读者允许写者 */
V(rmutex);
}
}

writer() {
while (true) {
P(wmutex); /* 阻止其它进程(读写)进 */
写数据集;
V(wmutex); /* 允许其它进程(读写)进 */
}
}

现有四个进程:R1,R2,W1和W2,它们共享可以存放一个数的缓冲区B。

进程R1每次把从键盘上读入的一个数存到缓冲区B中,供进程W1打印输出;

进程R2每次把从磁盘上读入的一个数存到缓冲区B中,供进程W2打印输出。

怎样用P、V操作协调四个并发进程的工作?

设信号量e,f1,f2

其初值分别为e=1,f1=0,f2=0 // e表示一个可用资源,f1表示R1生产的,f2表示R2生产的

R1:

1
2
3
4
5
L:
P(e)
从键盘上读入的一个数存到缓冲区B中
V(f1)
Goto L

R2:

1
2
3
4
5
L:
P(e)
从键盘上读入的一个数存到缓冲区B中
V(f2)
Goto L

W1:

1
2
3
4
5
L:
P(f1)
将缓冲区B中的数据打印输出
V(e)
Goto L

W2:

1
2
3
4
5
L:
P(f2)
将缓冲区B中的数据打印输出
V(e)
Goto L

系统中有三个进程GET、PRO、PUT,如图所示,共有两个缓冲区BUF1和BUF2,

假设BUF1中最多可以放11个信息,现已放入了两个信息;BUF2最多可放5个信息

GET进程负责不断地将输入信息送入BUF1中,PRO进程负责从BUF2中读取结果并输出。

使用P、V操作写出正确实现GET、PRO、PUT的同步与互斥的算法

image-20231121204312767

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
semaphore empty1=9	// 空buf1的数目
semaphore full1=2 // 有数据的buf1的数目
semaphore empty2=5 // 空buf2的数目
semaphore full2=0 // 有数据的buf2的数目
semaphore mutex1=mutex2=1

int main(){
Cobegin // 并发开始
GET();
PRO();
PUT();
Coend // 并发结束
return 0;
}

// GET进程
void GET() {
while(1){
...
P(empty1); // wait()
P(mutex1);
将信息送入buf1;
V(mutex1); // signal()
V(full1);
...
}
}

// PRO进程
void PRO() {
while(1) {
...
P(full1);
P(mutex1);
从buf1中取出信息;
V(mutex1);
V(empty1);
P(empty2);
P(mutex2);
将信息送入buf2;
V(mutex2);
V(full2);
...
}
}

// PUT进程
void PUT() {
while(1) {
P(full2);
P(mutex2);
从buf2中取出信息;
V(mutex2);
V(empty2);
}
}

产生死锁的4个必要条件是什么?

  • 互斥条件(资源独占条件)

    指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其它进程请求该资源,则请求者只能等待,直至占有该资源的进程用毕释放

  • 请求和保持条件(部分分配条件)

    指进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源又已经被其它进程占有,此时请求进程阻塞,但又对自己已获得的其他资源保持不放

  • 不剥夺条件

    指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放

  • 循环等待条件(环路条件)

    指发生死锁时,必然存在一个进程——资源的环形链,即进程集合${P_0, P_1, P_2, \cdots, P_n}$中的$P_0$正在等待一个$P_1$占用的资源;$P_1$正在等待$P_2$占用的资源,……,$P_n$正在等待已被$P_0$占用的资源。


安全状态,银行家算法

安全状态实例

假定系统中有三个进程P1,P2和P3,共有12台磁带机,三个进程对磁带机的需求和占有情况如下表所示:

进 程 最大需求 已分配 可用
P1 10 5 3
P2 4 2
P3 9 2

T0时刻,存在一个安全序列(P2,P1,P3)或(P2,P3,P1),所以系统是安全的。

银行家算法

数据结构

具有代表性的避免死锁算法,是Dijkstra给出的银行家算法,为实现银行家算法,系统中必须设置若干数据结构。假定系统中有$n$个进程$(P_1,P_2,\cdots,P_n)$,$m$类资源$(R_1,R_2,\cdots,R_m)$,银行家算法中使用的数据结构如下:

  • 可利用资源向量:available[j] = k,资源$R_j$类有k个可用
  • 最大需求矩阵:Max[i, j] = k,进程$P_i$最大请求k个$R_j$类资源
  • 分配矩阵:Allocation[i, j] = k,进程$P_i$分配到k个$R_j$类资源
  • 需求矩阵:Need[i, j] = k,进程$P_i$还需要k个$R_j$类资源

矩阵关系:

Need[i, j] = Max[i, j] - Allocation[i, j]

算法流程

设$Request_i$是进程$P_i$的请求向量,设$Request_i[j]=k$,表示进进程$P_i$请求分配$R_j$类资源$k$个。当进程$P_i$发出资源请求后,系统按如下步骤进行检查

  1. 如$Request_i[j]≤Need[i,j]$,转2;否则出错,因为进程申请资源量超过它申明的最大量

  2. 如$Request_i[j] ≤Available[j]$,转3;否则表示资源不够,需等待。

  3. 系统试分配资源给进程$P_i$,并作如下修改:

    $Available[j]= Available[j]- Request_i[j]$

    $Allocation[i,j]= Allocation[i,j]+ Request_i[j]$

    $Need[i,j]= Need[i,j]- Request_i[j]$

  4. 系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。若安全,则正式进行分配,否则恢复原状态让进程Pi等待。

先判断申请资源数量是否满足条件

再判断申请到资源后系统是否是安全状态

试题

设某系统中有4种资源,在某时刻系统中共有5个进程,进程(P0,P1,P2,P3,P4)的最大资源需求数向量和此时已分配的资源数向量分别为:

进程 最大资源需求 当前已分配的资源
P0 (0,0,1,2) (0,0,1,2)
P1 (2,7,5,0) (2,0,0,0)
P2 (6,6,5,6) (0,0,3,4)
P3 (4,3,5,6) (2,3,5,4)
P4 (0,6,5,2) (0,3,3,2)

系统中当前可用资源向量为(2,1,0,0),问:

  1. 系统当前是否处于安全状态?

    答:有安全序列:$(P_0, P_3, P_4,P_1, P_1)$,所以处于安全状态

  2. 当进程P2申请(0,1,0,0)时,系统能立即满足吗?

image-20231124161551160


请解释什么是静止优先权,什么是动态优先权

  • 静态优先权:优先权在创建进程时确定,且在进程的整个运行期间保持不变。一般用一个整数表示,小表示优先级高
  • 动态优先权:优先权在创建进程时确定,但在进程的运行期间会发生变化

什么是抢占式优先权算法?

系统把处理机分配给就绪队列中优先权最高的进程,使之执行。但在其执行期间,只要出现了另一个优先权更高的进程,进程调度程序就立即停止当前进程的执行,重新将处理机资源分配给新到的优先权最高的进程。


在最低松弛度优先算法(LLF)中,松弛度的计算公式是什么?

==松弛度 = 必须完成时间 - 其本身的运行时间 - 当前时间==

image-20231121212233890


调度相关例题

在一个单通道批处理系统中,已知一组作业的到达时间和运行时间。计算使用先到先服务短作业优先算法时的平均周转时间

周转时间:

周转时间 = 作业完成时刻 - 作业到达时刻

平均周转时间:

平均周转时间 = 作业周转总时间/作业个数

先到先服务

基本思想:按照进程进入就绪队列的先后次序来分配处理机资源。一般采用非剥夺的调度方式

image-20231121212830696

短作业优先

主要任务是从就绪队列中选出一估计运行时间最短的进程,将处理机分配给它。

非抢占式

image-20231121212956483

抢占式

image-20231121215734235


存储管理应具有哪4个基本功能?

  • 实现内存的分配和回收
  • 地址变换(相对地址<——>绝对地址)
  • “扩充”内存容量
  • 进行存储保护

一个用户源程序要变为在内存中可执行的程序,通常要进行哪几步处理?

  • 编译:由编译程序将用户源程序编译成若干个目标模块
  • 链接:由链接程序将目标模块和相应的库函数链接成装入模块
  • 装入:由装入程序将装入模块装入内存

内存分配例题

按照固定分区分配方式的分区说明表,请绘出当前的内存分配情况

固定分区分配方式

是最早使用的一种可运行多道程序的存储管理方法。

存储管理办法

  • 内存空间的划分:将内存空间划分为若干个固定大小的分区,除OS占一区外,其余的一个分区装入一道程序。分区的大小可以相等,也可以不等,但事先必须确定,在运行时不能改变。即分区大小及边界在运行时不能改变

  • 系统需建立一张分区说明表或使用表,以记录分区号、分区大小、分区的起始地址及状态(已分配或未分配)

image-20231122200000218

内存分配

  • 当某个用户程序要装入内存时
    • 内存分配程序检索分区说明表,从表中找出一个满足要求的尚未分配的分区
      • 找到的同时将分区分配给该程序并修改说明表中相应分区的状态
      • 若找不到大小足够的分区,则拒绝为该程序分配内存
  • 当程序执行完毕
    • 释放占用的分区
    • 管理程序将修改说明表中相应分区的状态为未分配
    • 实现内存资源的回收。

例题

在某系统中,采用固定分区分配管理方式,内存分区(单位字节)情况如图所示,现有大小为1K、9K、33K、121K的多个作业要求进入内存,试画出它们进入内存后的空间分配情况,并说明主存浪费多大?

image-20231122200352145

image-20231122200436048


讨论覆盖与交换技术的异同

覆盖与交换技术是在多道程序扩充内存的两种方法,

覆盖技术要求程序员给出程序覆盖结构,交换技术不要求程序员给出覆盖结构,

覆盖技术主要在一个作业或进程进行,交换主要在作业或进程之间进行。


什么是分页虚拟存储系统中的抖动现象?

刚被淘汰出内存的页面,过后不久又要访问它,需要再次将其调入,而该页调入内存后不久又再次被淘汰出内存,然后又要访问它,如此反复,使得系统把大部分时间用在了页面的调进转换上,而几乎不能完成任何有效工作,这种现象称为抖动(又称颠簸)


分页存储和段式存储逻辑地址物理地址变换典型例题

最终结果要写成十六进制

分页存储

地址结构

image-20231122200842097

地址结构例题

设有一页式存储管理系统,向用户提供的逻辑地址空间最大为16页,每页2048B,内存总共有8个存储块,试问逻辑地址至少应为多少位?内存空间有多大?

image-20231122201113620

页表

image-20231122201506911

地址变换例题

若在一分页存储管理系统中,某作业的页表如表所示,已知页面大小为1024B,试将逻辑地址1011,2148,5012转化为相应的物理地址?画出其地址转换图。

页号 块号
0 2
1 3
2 1
3 6

image-20231122201734956

考试例题

设有一页式存储管理系统,向用户提供的逻辑地址空间最大为32页,每页2048B,内存总共有16个存储块,页表的记录情况如下表所示,试将逻辑地址2548转换成物理地址。

页号 块号
0 2
1 5
3 7
4 9
29 12
30 15

image-20231124163052146


某虚拟存储器的用户编程空间共32个页面,每页为1KB,内存为16KB。假定某时刻一用户页表中已调入内存的页面的页号和物理块号(十进制)的对照表如下:

页号 物理块号
0 3
1 7
2 11
3 8

则逻辑地址000 1010 0101 1100(二进制)所对应的物理地址是什么?

image-20231124162545235


段式存储

段表

  • 记录了内存位置对应关系

  • 段表常保存在内存中(或一组寄存器中)

  • 段表的基址长度段表寄存器给出

  • 访问一个字节的数据/指令需访问内存2次(段表一次,内存一次),所以也出现内存访问速度降低的问题

  • 逻辑地址:段号_段内地址

段号_段长_基址

例:采用段式存储管理的系统中,若地址用24位表示,其中8位表示段号,则允许段的最大长度是( B

A.$2^{24}$ B. $2^{16}$ C. $2^8$ D. $2^{32}$

地址变换

IMG_F8F4AA99062F-1

例题

某段表的内容如下:

​ 段号 段首址 段长度

​ 0 120K 40K

​ 1 760K 30K

​ 2 480K 20K

​ 3 370K 20K

一逻辑地址为(2154),它对应的物理地址为多少?

image-20231122205319277


在一个段式存储管理系统中,其段表为:

​ 段号 内存起始地址 段长

​ 0 210 500

​ 1 2350 20

​ 2 100 90

​ 3 1350 590

​ 4 1938 95

试求表中逻辑地址对应的物理地址是什么?

0 430
2 120

image-20231122210129159


考试例题

假设有下面的段表:

基址 长度
0 219 600
1 2300 14
2 90 100
3 1327 580
4 1952 96

下面逻辑地址的物理地址分别是多少?

a、[1,12]

b、[2,500]

image-20231124163226367


带快表页式系统存取时间计算

有效访问内存的时间

其中,$P{TLB}$为快表的命中率,$T{TLB}$为快表的访问时间,$T_M$为内存的访问时间

题目

有一页式系统,其页表存放在主存中。

(1)如果对主存的一次存取需要100ns,试问实现一次页面访问的存取时间是多少?

(2)如果系统加有快表,对快表的一次存取需要20ns,若平均命中率为85%,试问此时的存取时间为多少?


解答:

(1)页表放主存中,则实现一次页面访问需2次访问主存,一次是访问页表,确定所存取页面的物理块,从而得到其物理地址,一次根据物理地址存取页面数据。(就是没有使用快表的情况)

所以实现一次页面访问的存取时间为:$100ns*2=200ns$

(2)系统加有快表,根据公式,则实现一次页面访问的存取时间为:

$0.85(20ns+100ns)+(1-0.85)(20ns+2*100ns)=135ns$


页面置换算法典型例题

画表格

对于如下的页面访问序列:1,2,3,4,1,2,5,1,2,3,4,5。当内存块数量为3时试问:使用FIFO、LRU置换算法产生的缺页中断是多少?写出一次产生缺页中断后应淘汰的页。(画表格)

FIFO(先进先出置换算法)

image-20231122210821198

LRU(最近最久未使用算法)

image-20231122211029223


什么是设备控制器?

处于CPU与I/O设备之间的接口,接收CPU发来的命令,并控制I/O设备工作,是一个可编址设备


在设备管理中主要使用哪四种输入/输出控制方式?

解释1

  • 程序直接控制方式

    image-20231122211510074

  • 中断控制方式

    image-20231122211531531

  • 直接存储器访问(DMA)方式

    image-20231122211556193

  • 通道控制方式

    image-20231122211615035

1.   **程序直接控制方式**:在早期的计算机中,由于无中断机构,**处理机对I/O设备的控制采用程序直接控制方式**,或称为忙-等待方式。这种方式虽然简单易于实现,但是其缺点也是显而易见的,由于CPU和I/O设备**只能串行工作**,**导致**CPU的利用率相当低

2.   **中断控制方式**:中断控制方式的思想是,**允许I/O设备主动打断CPU的运行并请求服务**,从而“解放”CPU,使得CPU向I/O控制器发送读命令后可以继续做其他有用的工作,CPU与I/O可以并行操作

3.   **DMA方式**:DMA(直接存储器存取)方式的基本思想是在I/O设备和内存**之间**开辟直接的数据交换通路,彻底“解放” CPU。DMA方式的特点是:**基本单位是数据块**。所传送的数据,是从设备直接送入内存的,或者相反(数据从内存直接送入设备)。仅在传送一个或多个数据块的开始和结束时,才需CPU干预,**整块数据的传送是在DMA控制器的控制下完成的**

4.   **通道控制方式**:**I/O通道是指专门负责输入/输出的处理机**。I/O通道方式是DMA方式的发展,它可以进一步减少CPU的干预,即把对**一个**数据块的读(或写)为单位的干预,减少为对**一组**数据块的读(或写)**及有关的控制和管理**为单位的干预

在设备分配中需要使用哪四种基本数据结构?

  • 设备控制表DCT
  • 控制器控制表COCT
  • 通道控制表CHCT
  • 系统设备表SDT

image-20231122211734406


设备驱动程序有哪些基本功能?

  • 将接收到的抽象要求转换为具体要求

  • 检查用户I/O请求的合法性,I/O设备状态,传参数,设设备的工作方式

  • 按处理机的I/O请求去启动指定的设备进行I/O操作

  • 及时响应由控制器或通知发来的中断请求,并进行相应处理

  • 按I/O请求构成相应通道程序


什么是虚拟设备?

虚拟设备:指通过虚拟技术将一台独占设备变换为若干台逻辑设备,供若干个用户进程同时使用,通常把这种经过虚拟技术处理后的设备称为虚拟设备


缓冲数据处理时间计算例题

双缓冲一块数据的处理时间

系统处理一块数据的时间可以粗略地认为是$Max(C, T)$。

如果$CT$,则可使CPU不必等待设备输入。

image-20231122212356911

题目

在某系统中,从磁盘将一块数据输入到缓冲区需要花费的时间$T=100ms$,CPU对一块数据进行处理的时间为$C=5ms$,将缓冲区的数据传送到用户区所花时间为$M=10ms$,那么在双缓冲情况下,系统处理大量数据时,一块数据的处理时间为多少?

答:因为$C<T$,所以处理时间为:$MAX(C, T) = T = 100ms$


磁盘寻道算法例题

SSTF(最短寻道时间优先)

image-20231122212920516

FCFS(先来先服务)

image-20231122213054764

SCAN(扫描算法)

image-20231122213545211

没说方向就是先往右再往左。

题目

设某磁盘有200个柱面,编号为0,1,2,…,199。磁头停在100号磁道,若9个磁盘按到达时间的先后排成的等待服务队列为:55,58,39,18,90,160,150,38,184,采用最短寻道时间优先SSTF磁盘调度算法FCFSSCAN磁盘寻道调度算法

试画出寻道图,求磁道响应请求道次序。求总磁头移动量,磁头的平均寻道长度。

最短寻道时间优先SSTF:

image-20231124163441052

FCFS:

image-20231124163535462

SCAN:

image-20231124163825739


索引逻辑结构文件的优缺点

  • 优点
    • 通过索引表可方便地实现直接存取,具有较快的检索速度
    • 易于进行文件的增删
  • 缺点
    • 索引表的使用增加了存储费用
    • 索引表的查找策略对文件系统的效率影响很大

有哪三种常见的外存分配方法?

  • 连续分配(顺序分配)
    • 每一个文件分配一片连续的磁盘块/簇
    • 只需要起始块/簇号长度,适用于预分配方法
    • 可以随机存取
    • 文件不能增长
    • 从逻辑地址映射到物理地址较简单
    • 浪费空间:动态存储分配问题
    • 可以通过紧缩(compact)将外存空闲空间合并成连续的区域。
  • 链接分配
    • 每个文件是一个磁盘块的链接列表:块可以分散在磁盘各处
    • 按所需分配磁盘块,链接在一起
    • 在每个块中有指向下一个块的指针
    • 只需要起始地址
    • 可以通过合并(consolidation)将一个文件的各个簇连续存放,以提高I/O访问性能。
  • 索引分配

    • 为每一个文件分配一个索引块(表),再把分配给该文件的所有块号都记录在该索引块中。故索引块就是一个含有许多块号地址的数组
    • 该索引块的地址由该文件的目录项指出
    • 支持随机/直接存取
    • 不会产生外部碎片
    • 适用于文件较大时
  • 连续分配:为每个文件分配一片连续的磁盘块,只需起始块号和长度,适用于预分配方法,可以随机存取,但文件不能增长。

  • 链接分配:每个文件是一个磁盘块的链接列表,按需分配磁盘块并链接在一起,在每个块中有指向下一个块的指针,只需起始地址。
  • 索引分配:为每个文件分配一个索引块,记录所有分配给该文件的块号,故索引块就是一个含有许多块号地址的数组,支持随机存取,适用于大文件。

文件目录管理有哪些基本要求?

  • 实现“按名存取”
  • 提高对目录的检索速度
  • 文件共享
  • 允许文件重名

请解释什么是目录文件?

为了实现对文件目录的管理,通常将文件目录以文件的形式保存在外存这个文件就叫做目录文件。


FAT容量计算

软盘(或硬盘)容量/ 盘块大小 = 盘块个数。

比盘块个数大的最小的2的n次方,表项有n/8个字节

表项个数*表项所占字节数 = FAT所占空间

题目

假定磁盘块大小为2KB,对于20G的硬盘,计算其文件分配表FAT占用的空间 30MB


假定盘块的大小为4KB,硬盘的大小为12GB,计算:

  1. 硬盘应共有多少个盘块 3MB
  1. FAT的每个表项有多少个字节 2.75B

对于FAT12文件系统来说,每个表项有1.5个字节

对于FAT16文件系统来说,每个表项有2个字节

对于FAT32文件系统来说,每个表项有4个字节

通过题目中计算:

因此每个表项有$22/8=2.75$个字节

  1. FAT需占用多少存储空间 8.25MB

对于FAT12文件系统来说,1.5*3MB=4.5MB

对于FAT16文件系统来说,2*3MB=6MB

对于FAT32文件系统来说,4*3MB=12MB

通过题目中计算: