计算机操作系统 期末复习

第一章 引论

1.1 操作系统的目标和作用

操作系统的目标是方便性、有效性、可扩充性和开放性。
操作系统的作用是:

  1. 作为与计算机硬件系统之间的接口
  2. 作为计算机系统资源的管理者
  3. 实现了对计算机资源的抽象

1.2 操作系统的发展历程

按时间给出操作系统的分类:单道批处理系统、多道批处理系统、分时系统、实时系统。

1.2.1 各系统的优缺点和矛盾

  1. 单道批处理的缺点是系统中资源得不到充分的利用,在内存中仅有一道程序,每当发出I/O请求后CPU便处于等待状态。
  2. 多道程序技术允许多个程序同时进入内存并且允许它们在CPU中交替运行。当一道程序因I/O请求而暂停运行时,CPU立即转去运行其他道程序,使资源得到充分利用,工作效率成倍提高;因此具有资源利用率高、系统吞吐量大的优点。
  3. 多道批处理的缺点是平均周转时间长(作业排队依次进行处理)、无交互能力。
  4. 分时系统与上述两个系统处理的矛盾不同,它是为了对于共享的主机处理人机交互的需求。多道批处理中用户无法与作业进行交互的原因是作业都先驻留在外存(磁盘)上,而后经过长时间的等待才可以执行。因此分时系统实现的关键问题是及时接收、及时处理
  5. 对于多道批处理平均周转时间长的问题,分时系统提出了时间片
  6. 实时系统与分时系统的对比:多路性、独立性、及时性、交互性、可靠性;实时系统举例:工业控制系统、信息查询系统、多媒体系统、嵌入式系统

1.3 操作系统的特征

1.3.1 并发

并行性是两个或多个事件在同一时刻发生,而并发同一时间间隔内发生

1.3.2 共享

  1. 互斥共享方式:一段时间内只允许一个进程访问该资源,如打印机、磁带机
  2. 同时访问方式:宏观上允许一段时间内多个进程同时访问系统资源,微观上是交替访问的,如磁盘

1.3.3 虚拟

通过某种技术将一个物理实体变为若干个逻辑上对应的功能。

1.3.4 异步

多道程序环境多个程序并发执行,但由于资源有限,进程的执行并不是一贯到底,而是以不可预知的速度向前推进。

第二章 进程

程序顺序执行与并发执行的区别:

  1. 顺序执行具有顺序性、封闭性和可再现性
  2. 并发具有间断性、不封闭、不可再现

2.1 进程的特征

进程实体由程序段、相关的数据段PCB三部分构成。
进程具有动态性、并发性、独立性和异步性。

2.2 进程的状态

2.2.1 三状态模型

  1. 就绪状态(Ready):指程序已处于准备好运行的状态,进程已分配到除CPU以外的所有必要资源,只要再获得CPU就可以立刻执行。
  2. 执行状态(Running):已获得CPU,正在执行
  3. 阻塞状态(Block):正在执行的进程由于发生某事件(如I/O请求、申请缓冲区失败)暂时无法继续执行是的状态。

状态转换图:
计算机操作系统 期末复习_第1张图片

2.2.2 五状态模型

在2.2.1的基础上添加:

  1. 创建状态:进程刚被创建时的状态,尚未进入就绪态
  2. 终止状态:进程将要被系统删除,PCB清零。

计算机操作系统 期末复习_第2张图片

2.3 进程同步

在多道程序环境下,多个进程共享系统中的资源,他们可能存在两种制约关系:

  1. 间接相互制约关系:由于共享系统资源,如CPU、I/O等,致使这些并发执行的程序之间有相互制约的关系(说人话是因为只有一个打印机,不可能并发地同时打印两份文件,这个限制不是程序设计造成的)
  2. 直接相互制约关系:为了完成某任务而建立的多个进程,这些进程将为完成同一项任务而相互合作。

2.3.1 临界资源

许多硬件资源如磁带机、打印机等都属于临界资源
临界区:访问临界资源的那段代码叫做临界区
同步机制应当遵循的规则:空闲让进、忙则等待、有限等待、让权等待

2.3.2 信号量的应用

为使多个进程能互斥地访问某个临界资源,引入了信号量

  1. 生产者-消费者问题:

样例伪代码

int in, out;
item buffer[n];
semaphore mutex = 1, empty = n, full = 0;
void producer(){
    item x;
    do {
    wait(empty);
    wait(mutex);
    buffer[in] = nextp;
    in = (in+1) % n;	//指向下一个生产数据的位置
    signal(mutex);
    signal(empty);
    } while (TRUE)
}
void consumer(){
	do{
		wait(full);
		wait(mutex);
		nextc = buffer[out];
		out = (out+1)%n;
		signal(mutex);
		signal(empty);
	} while(TRUE);
}
  1. 哲学家进餐问题

样例代码:

semaphore chopstick[5] = {1,1,1,1,1};
do {
	wait(chopstick[i]);
	wait(chopstick[(i+1)%5];
	...
	signal(chopstick[i]);
	signal(chopstick[(i+1)%5];
  1. 读者-写者问题

2.4 进程通信

2.5 线程

在操作系统中引入线程的目的是为了减少程序在并发执行时所付出的时空开销,使OS有更好的并发性。

第三章 处理机调度

操作系统的功能被分为处理机管理(第三章)、存储器管理(第四、五章)、设备管理(六)和文件管理(七)。

3.1 (按)作业调度算法

3.1.1 先来先服务(First Come First Served)算法

FCFS是最简单的算法
系统按照作业到达的先后次序来进行调度,优先考虑等待时间最长的作业,不考虑执行时间的长短。

3.1.2 短作业优先(Shord Job First)算法

SJF只考虑执行时间的长短,作业越短优先级越高,是对FCFS的改进,然而存在很多缺点:必须预知作业的运行时间、对长作业不利、不能人机交互、不考虑紧迫性

3.1.3 优先级调度算法(Priority-Scheduling algorithm)

通过外部定义作业的紧迫性决定执行顺序

3.14 高相应比优先(Highest Response Ratio Next)算法

HRRN既考虑了作业的等待时间,又考虑了作业的运行时间:
优先权 = 等待时间 + 要求服务时间(执行时间) 要求服务时间 优先权=\frac{等待时间+要求服务时间(执行时间)}{要求服务时间} 优先权=要求服务时间等待时间+要求服务时间(执行时间)

3.2 (按时间片)轮转调度算法

在轮转法中,系统首先根据FCFS策略将所有进程排成一个队列,设置一定的时间间隔产生一次中断,将CPU分配给新的队首进程,能保证一个确定的时间段内,就绪队列中的所有进程都能获得一次执行。

3.3 多级反馈队列算法

不做要求

3.4 死锁

定义:如果一组进程中的每一个进程都在等待仅由该组进程中的其它进程才能引发的事件,那么该组进程是死锁的

3.4.1 产生死锁的必要条件

  1. 互斥条件:资源排他性使用,其他进程必须等待
  2. 请求和保持条件:请求资源未果,进程虽阻塞,但保持占有资源不放
  3. 不可抢占条件(不剥夺条件):进程已获资源未使用完之前不能被剥夺,只能在进程使用完时由自己释放
  4. 循环等待条件:存在一个进程—资源的循环链,即 { P 0 , P 1 , … , P n } \lbrace P_0, P_1, \dots, P_n\rbrace {P0,P1,,Pn}中的P0等P1,P1等P2……

3.4.2 预防死锁

安全状态:指系统能按某种进程推进顺序 ( P 1 , P 2 , … , P n ) (P_1, P_2, \dots, P_n) (P1,P2,,Pn)伪每个进程分配其资源,直至满足每个进程对资源的最大需求,使每个资源都能顺利完成。

3.4.3 银行家算法

(进入系统时)每个进程必须声明可能需要的每种资源类型的最大单元数目,不能超过总量;当进程开始请求一组资源时,系统必须首先确定是否有足够的资源分配给该进程,若有,进一步计算分配后是否处于不安全状态,如果不会,才真的进行分配。

第四章 存储器管理(内存管理)

4.1 程序的装入和链接

  1. 绝对装入方式:知道程序驻留在内存的什么位置,编译产生绝对地址(物理地址)
  2. 可重定位(静态重定位)装入方式:根据内存的具体情况将装入模块装入到适当位置,而后不再改变
  3. 动态重定位:不立即将装入模块中的逻辑抵制转换为物理地址,而是把地址转换任务留到程序真正开始执行时才进行。

4.2 连续分配存储管理

比较简单的内存管理模式,如果为了与分页、分段对仗,本方式应该叫做“分区”存储管理,将连续的内存划分为“空闲”和“进程占用”的两种区间。

4.2.1 首次适应(First Fit)算法

当一个作业到达时,从空闲分区链的链首开始顺序查找,直到找到一个大小能满足要求的分区为止。

4.2.2 循环首次适应(Next Fit)算法

基于FF,改进为从上一次找到的空闲分区的下一个空闲分区开始查找,以减少查找开销。缺点是会缺少大的空闲分区。

4.2.3 最佳适应(Best Fit)算法

每次分配内存找到能满足要求的最小空闲分区。

4.2.4 最坏适应(Worst Fit)算法

每次找到最大的空闲分区从中分割一块给作业使用。

4.3 分页存储管理

4.3.1 页面和页表

  1. 将进程内部的逻辑地址空间分成若干个,将内存的物理地址空间分为若干个,(实际上,页的大小和块的大小是相等的、且存在一一对应关系,因此可以说没有页也没有块,都是“页面”),分配内存时,多个页可以离散地装入多个块中。页面大小太小会导致页表过长,太大会导致碎片增大,应为2的幂,通常1~8KB。
  2. 分页地址结构如下:
    计算机操作系统 期末复习_第3张图片
    若给定一个逻辑地址空间内的地址为A,页面大小为L,则页号P和(页内偏移)地址d求为: P = I N T [ A L ] , d = [ A ] M O D ( L ) P=INT[\frac{A}{L}], d=[A]MOD(L) P=INT[LA],d=[A]MOD(L)
    INT表示整除,MOD表示取余
  3. 页表实现了从页号物理块号的地址映射,其实就是记住哪个页放在哪个块了,如果没有页表的话处理机是不知道现在在哪个块的。
    计算机操作系统 期末复习_第4张图片

4.3.2 访存时间与快表

根据逻辑地址求物理地址:

  1. P = I N T [ A L ] , d = [ A ] M O D ( L ) P=INT[\frac{A}{L}], d=[A]MOD(L) P=INT[LA],d=[A]MOD(L)求出页号和页内偏址
  2. 物理块号查询页表
  3. 物理地址=物理块号*页面大小+页内偏址

引入页表后,访问代码和数据的时间增加了,在直接根据物理地址读写存储器(1次访存)的基础上增加了查询页表的过程(2次访存),因此使用快表(Translation Look aside Buffer)进行优化,TLB是一种高速缓存,存储了最近访问过的虚拟地址到物理地址的映射,以免频繁地访问(内存中的)页表。
引入快表后: 平均访问时间 = 命中率 × 快表检索时间 + 未命中率 × 内存访问时间 平均访问时间=命中率\times 快表检索时间+未命中率\times 内存访问时间 平均访问时间=命中率×快表检索时间+未命中率×内存访问时间

4.3.3 两级多级页表

单级页表中所有的页表项都存储在一个大表中,若地址空间很大则整个页表会非常庞大占据大量内存,为此引入二级和多级页表。
计算机操作系统 期末复习_第5张图片

4.4 分段存储管理

在分段存储管理中,程序被划分为若干段,每个段有自己的逻辑地址空间,长度可以不同。
计算机操作系统 期末复习_第6张图片

  1. 逻辑地址 = 段号(拼接)段内偏移地址 逻辑地址=段号(拼接)段内偏移地址 逻辑地址=段号(拼接)段内偏移地址
  2. 物理地址 = 段基址 + 段内偏移地址 物理地址=段基址+段内偏移地址 物理地址=段基址+段内偏移地址

4.4.1 信息共享

分段系统的有点是易于实现段的共享,允许若干个进程共享一个或多个分段,对段的保护也简单易行。

可重入码:一种允许多个进程同时访问,但不允许任何进程对其进行修改的代码。

4.4.2 段页式存储管理

首先将用户程序分成若干段(视为子程序),而后再将每个段划分为若干页。
计算机操作系统 期末复习_第7张图片
计算机操作系统 期末复习_第8张图片

第五章 虚拟存储器

虚拟存储器扩展了程序的地址空间,使其包括了比物理内存更大的范围。程序认为它在使用整个地址空间,而实际上只有部分数据和指令在物理内存中。
虚拟存储器的特征:多次性、对换性、虚拟性

5.1 分页请求系统

请求分页存储管理是虚拟存储技术中的一种实现方式,核心思想是只有在程序访问某个页面时,该页面才会被装入物理内存,而不是一次性的整个加载。

5.1.1 请求页表机制

请求分页系统中的页表结构如下:
计算机操作系统 期末复习_第9张图片
各字段说明如下:

  1. 状态位(存在位)P:指示该页是否已经调入内存
  2. 访问字段A:用于记录本页在一段时间内访问的次数,供调换算法参考
  3. 修改位M:标识该页是否被修改过(如没有修改过就不需要写回外存)
  4. 外存地址:通常是物理块号,指出在外存上的地址

5.1.2 缺页中断处理

缺页中断发生在虚拟界面需要访问但尚未加载到物理内存时
计算机操作系统 期末复习_第10张图片

5.2 页面置换算法

在虚拟存储系统中,若访问的页面不在内存,则需要将其调入,若无空闲空间则需要将已有页面调出,此时需要控制页面置换的算法。

5.2.1 最佳(Optimal)置换算法

理论上的算法,选择在未来最长时间内不再被访问的页面进行替换(淘汰),最佳算法可以达到最小的缺页率,但实际应用中很难实现。

5.2.2 先进先出(FIFO)页面置换算法

是最早出现的置换算法,选择最早进入内存的页面进行替换,即最先被调入内存的页面最先被替换出去
实现:使用一个队列(缓冲区),每当页面被调入内存时进入对位;需要进行置换时则选择队首进行替换。
缺点:不考虑页面访问的时间顺序,增加页面数可能导致缺页率升高。

5.2.3 最近最久未使用(Least Recently Used)置换算法

LRU选择最近(当前)最久未使用的页面进行替换,可以通过寄存器、栈来实现,不断按照访问顺序更新目前最久未使用的页面。

5.2.4 最少使用(Least Frequently Used)置换算法

LFU根据频率上最少使用的页面来进行替换,数据结构上只需要计数器(移位寄存器)来实现。
LFU的页面访问图与LRU完全相同,认为LRU是较好的算法用的更多。

5.2.5 时钟(CLOCK)置换算法

Clock算法是一种近似的LRU算法,定期扫描内存中的所有页面,若该页面先前被访问过,则重置其标志位;若该页面未被访问过,则选择它置换。
改进的Clock算法把标志位细化为访问位A修改位M,将页面分为:

  1. A=0、M=0,最佳淘汰页
  2. A=0、M=1,最近未被访问,但已被修改
  3. A=1、M=0
  4. A=1、M=1
    首先扫描但不重置A,若找到1类页面则置换
    若未找到1类页面,重新扫描且重置A,将第一个找到的2类页面置换
    若还没有找到,则重复1~2,一定能找到
    Clock算法又被叫做最近未使用(Not Recently Used,NRU)算法。

5.3 页面抖动与缓冲

5.3.1 缺页

缺页率是指在虚拟存储系统中,程序访问的页面中有多少不存在于当前物理内存中而需要从磁盘中调入的比例,计算为 缺页率 = 缺页次数 访问总次数 缺页率=\frac{缺页次数}{访问总次数} 缺页率=访问总次数缺页次数
抖动(Thrashing)是指系统在不断地进行页面置换,却无法有效提高程序的性能,反而导致了额外的开销;缺页导致用于进程请求调页的时间极大增加,进程执行效率大为下降

5.3.2 页面缓冲算法(Page Buffering Algorithm)

当需要置换页面时,采用FIFO从所有已分配页面中选择最先进入的页面淘汰,该淘汰页进入空闲页面队列(缓冲区)
缺页读入时从空闲队列寻找,如果一段时间后没有再次使用,则依次淘汰;否则装入。

第六章 设备管理

6.1 I/O组成与控制

6.1.1 I/O分类

  1. 按数据传输速率分类:高速、中速、低速设备
  2. 信息交换单位分类:块设备(传输速率高、可寻址、DMA实现)、字符设备(传输速率低、不可寻址、中断实现)
  3. 按设备共享属性分类:独占设备、共享设备、虚拟设备

6.1.2 设备控制器

有这么个东西。
功能:接受识别命令、数据交换、标识报告设备状态、地址识别、数据缓冲、差错控制。

6.1.3 I/O通道

I/O通道是一种特殊的、简单的处理机,他与CPU共享内存,负责执行I/O指令,引入的目的时提高I/O过程的独立性,使得数据的传送能独立于CPU,CPU仅通过执行单条简单的通道I/O程序来控制输入输出操作。
通道类型:

  1. 字节多路通道:指一种通过在一个通信信道上传输多个不同字节流的机制。这种通道可以在同一时间段内传输给多个输出设备,不适用于高速设备
  2. 数组选择通道:操作系统会维护一个数组,数组的每个元素对应一个 I/O 操作。当其中某个 I/O 操作完成时,操作系统会通过数组索引来选择相应的操作进行处理。每次只允许一个设备传输数据,通常链接高速设备
  3. 数组多路通道:通过一个数组同时处理多个通信通道。数组的每个元素可能代表一个不同的通道或 I/O 操作。通过适当的算法,可以轮流处理数组中的不同元素,实现多个通信通道的复用。可以分别链接到高速、中速设备

6.1.4 I/O控制方式

  1. 程序I/O控制方式:对输入设备进行轮询,忙则等待。
  2. 中断驱动I/O控制方式:通过中断机制实现。
  3. 直接存储器访问控制方式:以块为数据传输单位,通过DMA控制器实现
  4. I/O通道控制方式:是DMA方式的发展,进一步减少CPU干预,实现CPU、I/O通道、I/O设备的并行操作。

6.2 缓冲管理

为平衡CPU和I/O设备间速度不匹配的矛盾、减少CPU的中断频率、放宽CPU中断响应时间的限制,引入缓冲区。
设从磁盘读入一块数据到缓冲区的时间为T,将数据再传送至用户区的时间为M,CPU对其数据处理的时间为C

6.2.1 单缓冲

每当有I/O请求,则从内存分配缓冲区,T、C是并行的,每一块数据处理时间表示为 M a x ( C , T ) + M Max(C,T) + M Max(C,T)+M,多块数据则求和。

6.2.2 多缓冲

缓冲区是共享资源,生产者与消费者对缓冲区必须互斥,因此引入了双缓冲区机制,每一块数据处理时间为 M a x ( C + M , T ) Max(C+M,T) Max(C+M,T),即要么输入更快缓冲区一直有存货(C+M>T),要么每次都要等待新的数据进来(T>C+M)。

6.2.3 循环缓冲

缓冲区循环连接

6.2.4 缓冲池

缓冲池管理多个缓冲区

6.3 设备分配

设备分配是将设备分配给请求进程的使用。
设备独立性:用户编程时使用的设备与实际使用的设备无关,用户程序在进行输入/输出的时候,不需要考虑具体的输入/输出设备,而可以用一种通用的方式进行输入/输出。

6.3.1 设备控制表DCT

包括:

  1. 设备队列队首指针
  2. 忙/闲标志:当前设备是否空闲
  3. 与设备链接的控制器表指针
  4. 重复执行次数:若超过该次数则认为数据传送失败
  5. 设备类型
  6. 设备标识符

6.3.2 设备固有属性

  1. 独占设备:仅分配给一个进程
  2. 共享设备:可以同时分配给多个进程,进行合理调度
  3. 虚拟设备:属于可共享设备。

6.3.3 分配算法

  1. FCFS
  2. 优先级

6.3.4 假脱机技术(Simultaneous Peripheral Operation On-Line)

SPOOLing是将耗时的I/O操作从主要的计算机任务中分离出来,使它们在后台异步进行。
SPOOLing由输入输出井、输入输出缓冲区、输入输出进程、请求输入输出队列组成
优点:

  1. 提高了I/O速度
  2. 将独占设备改造为共享设备
  3. 实现了虚拟设备功能

6.4 磁盘存储器

6.4.1 磁盘访问时间构成

  1. 寻道时间 T s T_s Ts T s = m × n + s T_s=m\times n + s Ts=m×n+s启动磁臂时长s,m是常数,n是磁头移动了多少磁道
  2. 旋转延迟时间 T r T_{r} Tr:指定扇区旋转到磁头下面所经历的时间
  3. 数据传输时间 T t T_t Tt T t = 字节数 每秒钟转数 × 一条磁带上的字节数 T_t=\frac{字节数}{每秒钟转数\times 一条磁带上的字节数} Tt=每秒钟转数×一条磁带上的字节数字节数

6.4.2 磁盘调度

目标:使平均访问时间(主要是寻道时间 T s T_s Ts)最小
调度算法:

  1. FCFS:优点公平简单都能得到处理,缺点随机分布寻道时间长
  2. 最短寻道时间优先调度算法SSTF:每次选择访问的磁道与磁头当前所在磁道距离最近,优点是寻道性能好,缺点可能导致饥饿
  3. 扫描算法(电梯调度算法)SCAN:当磁头向外移动时,优先访问更外面且寻道最短的,直到没有了才向里移动,反方向亦然,优点即获得较好寻道性能,又防止饥饿
  4. 循环扫描算法CSCAN:从双向扫描改为单向扫描,即扫描到最外的磁道后立即返回最里面请求的磁道,再向外扫描
  5. N-step-SCAN:将请求队列分为若干个子队列长度为N,队列层面使用FCFS,队列内部使用SCAN
  6. FSCAN:N-step-SCAN的简化,只有两个队列,一个是当前所有请求,另一个是扫描期间新出现的请求,所有新请求推迟到下一次扫描

第七章 文件管理

文件:由创建者定义的采用名称进行管理的一组数据的集合。
文件管理的目标:方便用户保证安全、存取快速(时间效率)、资源利用(空间效率)
文件管理功能:提供文件存取、共享、保护手段

7.1 文件系统

7.1.1 文件分类

  1. 按有无结构

    • 有结构文件分为定长记录和变长记录
    • 无结构文件即流式文件,长度以字节为单位。
  2. 按组织方式把有结构文件分成

    • 顺序文件:按某种顺序排列,可以定长或变长
    • 索引文件:为变长记录建立索引表,加快检索
    • 索引顺序文件:为一组记录中的第一个记录建立索引表项
  3. 检索开销比较

    • 顺序文件组织方式 ( N + 1 ) / 2 (N+1)/2 (N+1)/2
    • 索引文件组织方式 ( N + 1 ) / 2 (N+1)/2 (N+1)/2
    • 索引顺序文件组织方式 N + 1 \sqrt{N}+1 N +1

7.2 文件存储空间管理

7.2.1 连续分配

优点:顺序访问容易、速度快;支持直接存取
缺点:要求连续存储空间,空间利用率低;必须事先知道文件的长度

7.2.2 链接分配

离散分配方式,通过盘块上的指针实现链接
优点:消除外部碎片,外存空间利用率高;按需分配,无需事先知道文件长度;支持文件动态增长,方便增删改
缺点:隐式链接只适合顺序访问,随机存取很低效;只要有一个指针出现问题就断开,可靠性差
解决:文件分配表FAT

7.2.3 索引分配

FAT占用内存较大,盘块号随机。
打开文件,只需要将该文件所占用的盘块编号调入内存即可,故把每个文件对应盘块号形成索引表
缺点:小文件利用率低

7.3 空闲管理

7.3.1 空闲表法

属于连续分配方式,空闲盘区分配采用FCFS、NF、BF、WF适应算法

7.3.2 空闲链表法

所有空闲盘块区域形成一条空闲链,以盘块为基本单元链接
提高检索速度,可采用显式链接

7.3.3 位示图

计算机操作系统 期末复习_第11张图片
M a p [ i , j ] ↔ 块号 b = n ( i − 1 ) + j − 1 Map[i,j]\leftrightarrow 块号b = n(i-1)+j-1 Map[i,j]块号b=n(i1)+j1

7.3.4 成组链接法

7.4 文件目录

文件目录管理:

  1. 实现按名存取
  2. 提高目录检索速度及文件存取速度
  3. 文件共享(外村保留一份文件副本)
  4. 允许文件重名

7.4.1 FCB、索引节点

  1. 文件控制块FCB通常含有三类信息:基本信息、存取控制及使用信息
    • 基本信息:文件名、文件物理位置、文件逻辑结构、文件物理结构
    • 存取控制信息:权限
    • 使用信息:修改时间、打开该文件的进程数
  2. 索引节点(Inode):为了减少检索的开销
    • 磁盘索引节点:存放在磁盘上的索引节点,每个文件有唯一的一个,有文件主标识符、文件类型、……
    • 内存索引节点:从磁盘拷贝到内存

7.4.2 目录结构

  1. 单级目录:缺点查找速度慢、不允许重名、不便于共享计算机操作系统 期末复习_第12张图片

  2. 两级目录:优点提高了检索速度(单级目录最多检索n*m,多级目录最多检索n+m)、不同目录可以使用同文件名、不同用户可以不同名称访问同一共享文件,缺点用户隔离不便于共享协作计算机操作系统 期末复习_第13张图片

  3. 树形目录:满足目录管理的所有要求

7.3.4 目录查询

  1. 线性(顺序)检索法
  2. 散列方法

7.4 文件共享与保护

7.4.1 基于索引节点的文件共享

没有索引节点:造成FCB在不同目录文件中的拷贝、一旦文件改变则难以保证一致性、存在指针悬空问题
有索引节点:当删除文件,索引节点也被删除,则不会出现上述情况

7.4.2 利用符号链实现共享

允许一个文件或子目录有多个父目录,但仅有一个作为主父目录其他都是通过符号链接方式访问的。
优点:只有文件主才拥有索引节点,因此避免指针悬空;可用于链接网络中任何计算机的文件
缺点:增加系统开销,造成多次读盘和磁盘启动、符号链具有索引节点的开销、遍历操作的复杂度加大

7.4.3 安全保护

  1. 系统级安全管理
  2. 用户级安全管理
  3. 目录级安全管理
  4. 文件级安全管理

7.4.5 磁盘容错技术

设置冗余部件以提高可靠性

  1. 低级容错技术SFT-Ⅰ
  2. 中级容错技术SFT-Ⅱ

7.4.6 数据一致性控制

当一个数据被分别存储到多个文件中会出现一致性问题
事务:用于访问和修改各种数据项的一个程序单位
检查点:使对事务记录清理工作经常化,减少恢复开销

你可能感兴趣的:(硬件工程,microsoft,学习)