以下是我在期末自己整理的复习资料 —— 操作系统,谢谢观看!
第一章 操作系统概论
- 操作系统的特性
并发性:计算机系统中存在若干个运行的程序。
共享性:计算机系统的资源可被多个并发执行的程序共同使用。
异步性:程序的执行顺序和速度始终是动态变化和随机的。
虚拟性:1物理实体→N虚拟,N物理实体→1虚拟。
- 操作系统的结构(大标题)
整体式结构
层次式结构
客户/服务器结构
虚拟机结构
第二章 处理器管理及并发进程
- 并发程序执行的条件(Bernstein条件)
并发进程如果是无关的,则这些进程可以并发执行。
约定程序Pi在执行期间所需引用的变量的集合,记作R(Pi)={a1,a2,……,an},
实际上,R(Pi)就是Pi的读集。
约定程序Pi在执行期间所需修改的变量的集合,记作W(Pi)={a1,a2,……,an},
实际上,W(Pi)就是Pi的写集。
Bernstein条件可描述为:若P1、P2满足R(P1)∩W(P2)∪R(P2)∩W(P1)∪W(P1)∩W(P2)={},它们就能够并发执行,否则不能并发执行,会发生与时间有关的错误。
例题:对于下列四条语句,将它们的读集和写集都写出来
答:语句 读集 写集
S1:a=x*y R(s1)={x,y} W(s1)={a}
S2:b=z-1 R(s2)={z} W(s2)={b}
S3:c=b+a+8 R(s3)={a,b} W(s1)={c}
S4:w=c+5 R(s1)={c} W(s1)={w}
R(s1)∩W(s2)∪R(s2)∩W(s1)∪W(s1)∩W(s2)={},s1和s2可以并发执行;
R(s1)∩W(s3)∪R(s3)∩W(s1)∪W(s1)∩W(s3)={a}≠{},s1和s3不可以并发执行……
不能并发的可以通过信号量和PV操作或者管程机制等来解决。
- 基本状态
- 进程的控制块PCB
描述和控制进程的运行的一种数表结构,是进程存在的唯一标志,是进程实体的一部分。
- 内核运行状态
在操作系统内核中运行的状态,即核心态,也称管理态;
不在操作系统核心态运行的状态,即用户态,也称目标态。
中断是操作系统从用户态转入核心态的唯一手段。
只能在核心态下运行的指令称为特权指令,
其他指令为非特权指令。
- 进程调度算法
①先来先服务FCFS(作业+进程)
②短作业优先SJF、短进程优先SPF
③优先级(作业+进程)
周转时间 = 完成时间 - 提交时间 ; 带权周转时间 = 周转时间/运行时间
④高响应比优先(作业)
响应比 = 1+ 等待时间/要求服务时间
⑤时间片轮转(进程)
⑥多级反馈轮转(进程)
2-5:优先级共10级,用1~10表示,数值越大级别越高。不考虑进程调度所花的时间,调度采用不可抢夺式,设系统调度从8时刻开始。
进程名 进入就绪队列的时刻 计算时间 优先级
P1 0 2 3
P2 2 3 4
P3 3 5 8
P4 5 4 1
P5 6 3 4
P6 8 6 7
解答:
①由于在8时刻开始调度(不看先来后到了)
静态优先级(从8~1)调度:P3,P6,P2,P5,P1,P4(若优先数相同,按先来先服务调度进行)
先来先服务算法调度:P1,P2,,P3, P4, P5, P6。
②各个进程的等待时间如下:
进程名 进入就绪队列的时刻 计算时间 静态优先级法等待时间 FCFS 等待时间
P1 0 2 8+5+6+3+3-0=25 8-0=8
静态优先级法等待时间:8为开始时刻,经过P3、P6、P2、P5的计算,减去P1的时间。
P2 2 3 8+5+6-2=17 8+2-2=8
P3 3 5 8-3=5 8+2+3-3=10
P4 5 4 8+5+6+3+3+2-5=22 8+2+3+5-5=13
P5 6 3 8+5+6+3-6=16 8+2+3+5+4-6=16
P6 8 6 8+5-8=5 8+2+3+5+4+3-8=17
静态优先数算法的平均等待时间是:(25+17+22+16+5)/6=15
先来先服务算法的平均等待时间是: (8+8+10+13+16+17)/6=12
习题:设一个单CPU批处理系统中有4个作业,它们提交时间、运行时间见下表,
若分别按先来先服务、短作业优先、响应比高者优先,请完成各表格空白的填写,计算各作业的平均周转时间T和平均带权周转时间TW。(提示:系统有空就调度) (以下时间均为十进制,以分钟计)。
作业 |
提交时间 |
运行时间 |
J1 |
8.0 |
2.0 |
J2 |
8.5 |
0.5 |
J3 |
9.0 |
0.1 |
J4 |
9.5 |
0.2 |
- 进程和线程区别(单位)
进程:重量级WP进程,一个进程可以拥有多个线程(⾄少一个,主线程)
线程:轻量级LWP进程。
①并发性:两者都有;
②资源分配与占有:
进程是资源分配和保护的基本单位;
线程几乎不拥有资源,但可共享本进程的资源和内存空间,进程下的各个线程可共享通信。
③系统开销与效率:进程在创建或撤销时,系统要对进程进行分配和回收资源。
④调度与灵活性:
进程是资源分配和保护的基本单位;
线程是系统调度和分派的基本单位;
- Peterson算法
Peterson算法仍然以两个进程举例,但很容易可以推广到多个进程的并发执行中去。
int InTurn=0; //Inturn 只取值0或1
int InCS[2]= {0, 0} ; //InCs的元素的值为0或1
//进程Pi执行的代码
while (1){
InCS[i]=1; 准备访问
InTurn=i; 请求进程是i进程
while (InCS[1-i]==1 && Inturn==i) ;判断能否进入,为真则等待
临界区;
InCS[i]=0; 离开临界区
}
假如一开始P0想进入临界区,则首先将InCS[0]置为1,InTurm 置为0,如果此时PI不想进入临界区,则InCS[1 -i]为0,那么进程P0立即进入临界区;这时,假设P1要求进入临界区,通过测试循环条件InCS[0] &&InTurn==1为真,从而P1等待,当P0退出后,循环条件为假,P1可以进入临界区。
再如,P0和P1两个进程几乎同时想进入临界区。都将InCS[i]置为1, InTurn 置为对应的进程下标。最后的InTum的值应该是两个进程稍慢的那个进程设置的值。设P0稍快了点,P1 稍慢了点,那么最后 InTum的值是1。然后执行判断,InCS[i]都为 1,关键看InTurm==i,由于InTurm是1,P1的循环条件是真的,于是P1循环等待,而P0的循环条件是假的,P0可以立即进入临界区。
- PV操作
可用资源的个数s:s>0:有s个资源可用;s=0:资源刚好分配完;s<0:还需|s|个资源。
P操作(原语操作):执行时不能够被中断。进入前
void P (Semaphore s) {
s-- ;
if(s<0)
wait(s); //进程调用wait判断有无资源,若无则进行自我封锁,转入等待状态
}
V操作(原语操作):执行时不能够被中断。离开后
void V (Semaphore s) {
s++ ;
if(s<=0)
Revoke(s); //该进程担负起唤醒在信号量s上: 等待的进程(需要s个资源)
}
互斥
假定一个阅览室可供50个人同时阅读。读者进入和离开阅览室时都必须在阅览室入口处的一个登记表上登记,阅览室有50个座位,规定每次只允许一个人登记或注销登记。请写出能使实现读者进程的wait、signal操作和信号量的程序。(10分) 。
同步
- 管程
11.1 基本思路:
将分散在各个进程中的临界区集中起来进⾏统一管理和控制,并将系统中的共享资源⽤数据结构抽象地描述出来。
11.2 特性
①互斥性:任意时刻,只有一个进程可以管理;
②安全性:管中内部变量只能由管程方法访问;
③共享性:define方法可被进或管调用。
10.3 官程的一般结构:
struct Monitor{ 管程内部的变量说明:
condition 条件变量列表;
define 函数或方法;
use 函数或方法;
void 函数名(){}
……
void init(){
对管程中的局部变量进行初始化;}};
- 汉森Hansen
Wait():等待,进程由于自身原因不能运行,进入阻塞态,放开管程。
Signal():发信号,唤醒相应条件变量上的等待进程队列中的一个进程,进入管程。
Check():检查,若管程可用,进程进入管程,管程关闭;若管程不可用,进程进入等待调用状态。
Relaease():释放,若无进程进入管程且不处于阻塞态的进程,唤醒一个等待调用状态的进程或开放管程(无等待状态的进程)。
- 进程通信(进程的高级通信)的三种方式
①管道文件通信方式:连接两个命令地一个打开文件(写入数据、读出数据)。
②共享存储器方式:在内存区域开辟一个共享存储区。
③消息传递方式:以消息为单位在各个进程之间进行信息交换。
- 死锁
14.1 产生原因
根本:资源匮乏
①资源分配策略不当; ②进程推进顺序不当; ③进程对资源的使⽤要求。
14.2 产生的四个必要条件(缺一不可)
①互斥;②占有且申请资源;③不可抢夺式分配;④循环等待。
14.3 防止
①资源的按序分配;②资源的静态分配;③可抢夺式分配。
进程数m 资源类n 一定不会死锁的资源数m*(n-1)+1
14.4 死锁的避免和银行家算法
①安全状态:安全状态一定不是死锁状态;
②不安全状态:不安全状态不一定是死锁状态;
③死锁状态:死锁状态一定是不安全状态。
14.5 死锁的检测与解除
例题:
2-1: 设有两道作业,一道单纯计算11分钟,另一道先计算3分钟,再打印6分钟。
答:
在单道中,顺序运行,执行总时间是11+(3+6)=20 (分钟),
在多道中,并行工作,执行总时间是3+11=14 (分钟)。
2-2: 现有两道作业同时执行,一道以计算为主,一道以I/O操作为主,先调度哪个?
答:处理器可与外部设备并行工作。应先调度I/O型的作业进程,赋予更高的优先级,可提高系统资源的使用效率。
因为先调度运行I/O型的作业进程,利用CPU进行运算,完成后让出CPU处理器,进行输入输出处理,此时可调度运行计算型作业进程,这样做到CPU与外部设备并行工作,提高了资源利用率。
2-3:有一台计算机,配置有1MB主存,操作系统占用200KB,每个用户进程各占用200KB,如果用户进程等待I/O的时间为70%,
若增加1MB主存,则CPU的利用率提高多少?
再增加1MB主存,则CPU的利用率提高多少?
答:
①1MB主存,除了操作系统占用的200KB,则其余的800KB主存可以容纳4个用户进程。只有4个进程都同时等待时, CPU才是空闲的,那么CPU的利用率是1-(0.7)4=0.7599 ≈0.76;
②若再增加1MB主存,则主存中的用户进程共4+5=9个, CPU的利用率是1-(0.7)9 ≈0.96,那么CPU的利用率提高了(0.96-0.76)/0.76* 100% ≈26%。
③若再增加1MB主存,则CPU的利用率是1-(0.7)14 ≈0.99, CPU的利用率提高了(0.99-0.76)/0.76*100% ≈30%。
2-10:有两个进程P和Q,共享两个资源RI (输入机)和R2 (打印机)采用pV操作实现请求和归还后,可能会发生死锁吗?
答:设计两个信号量S1、S2,分别代表RI和R2资源。
2-11:假设当前系统有12个资源,3个进程,当前的资源分配如下:
进程 |
已占有资源数 |
最大资源需求 |
还需资源数 |
P1 |
2 |
4 |
2 |
P2 |
2 |
9 |
7 |
P3 |
5 |
10 |
5 |
剩余资源数 |
3 |
系统还剩3个资源,可满足进程P1,P1运行结束,释放的5个(2+3)资源能满足进程P3,P3结束后,系统有10个资源,可满足进程P2,每个进程都能够完成,系统处于安全状态。
2-12:假设这时进程P2申请一个资源, 能否分配?先看假设分配后的资源分配情况如下:
进程 |
已占有资源数 |
最大资源需求 |
还需资源数 |
P1 |
2 |
4 |
2 |
P2 |
3 |
9 |
6 |
P3 |
5 |
10 |
5 |
剩余资源数 |
2 |
系统还剩2个资源,只能满足P1进程的最大需求,假设分配给进程p1,当进程P1完成归还资源后,系统有4个可用资源,但这4个可用资源已经不能满足进程P2和P3任一个进程的最大需求,所以此时系统处于不安全状态。因此,这时进程P2申请一个资源不能够分配,进程P2必须等待。
第三章 存储管理
- 存储器的层次(分类)
高速缓冲存储器(缓存)
主存储器(主存/内存)
外存储器(外存/辅存)
- 地址重定位(概念、区别)选择题
静态重定位:
①程序运⾏前一次性完成;②简单易实现;③程序运⾏快;
④程序在内存中连续存放;⑤不可移动。
动态重定位:
①程序运⾏前部分完成;②需要硬件⽀持;③程序运⾏慢;
④支持连续存放和离散存放;⑤可移动。
- 存储管理的功能
- 常用的可变分区管理中的分配方式(了解+做题)
解答题:介绍四种算法的优缺点,例题样板。
①最先适应FF
按空闲区起始地址大小递增规则排列。总是从表头开始顺序查找。
优点:总是从低地址开始查找,保留了高地址空闲区,有利于大作业的装入;
在低地址分配较均衡,释放分区时可以合并相邻的空闲分区。
缺点:查找工作耗时,影响了系统效率。
②最佳适应BF
以容量大小递增的顺序排列,寻找到的空闲区是最佳的。
优点:相对于FF降低了工作量;≥工作要求的空闲区总能被找到;保留了较大的空闲区。
缺点:往往不存在≥工作要求的空闲区,非常小的空闲区不被利用,称为“外部碎片”。
③最坏适应WF (总是找一个空闲区,大小与工作要求相差最大)
空闲区链表的表目按照空闲区大小递减的顺序排列。
优点:空闲区分配时分割产生的新的空闲区不至于太小,一般仍可以分配使用。
缺点:总是分配大的空闲区,无空闲区留给大的作业。
④下次适应NF
从空闲区链表中上次查找结束处开始顺序查找链表,找到第一个满足要求的。
优点:不会导致小的空闲区集中,使主存空间的利用更加均衡。
缺点:查找工作耗时,影响了系统效率。
- 简单分页存储管理(一次性装入,离散分配)
地址转换(计算题、解答题5分)
例3-4:在简单分页存储管理中,逻辑地址长度为16位,页面大小为4096字节,现有一逻辑地址为2A43H,试问该逻辑地址的页号以及页内偏移为多少?
2:0010;A:1010;4:0100;3:0011;H
解答:页面大小为4096=212字节,可以确定在16位逻辑地址位中,低12位表示页内偏移,高4位表示页号,所以逻辑地址2A43H在页号为2的页面中,且月内偏移为A43H。
例3-5:系统提供24位虚拟地址空间主存为 218B,采用简单分页存储管理,页面尺寸为1KB。现有逻辑地址为AB6868H,该页面分得块号为40H,试说明如何得到相应的物理地址。
物理地址=块号*块长+页内偏移
解答:1KB = 1024字节 = 210,A:1010;B:1011;6:0110;8:1000;H
由页面尺寸为1KB确定逻辑地址的低10位表示页内偏移,高14位表示页号,所以逻辑地址AB6868H中页内偏移为00 0110 1000(B68的低10位)。有218/210=256个块,块号40H= 0100 0000=64没有超出上存页号范围,且页内偏移00 0110 1000没有超出页面尺寸大小,所以物理地址可以由块号40H代替页号得来: 01 0000 0000 0110 1000共18位。
例3-6:在简单分页存储管理中,假设页表全部存放在主存中,
①若一次访问主存需要120μs,问访问一个数据的时间是多少?
②如果增加一个快表,快表的开销是20μs,快表的命中率是80%,访问一个数据的时间又为多少?
解答:
①240μs;因为采用主存中页表进行地址转换,必须访问两次主存(页表和内存)。
②分情况讨论:A. 快表中找到,命中率为80%。B. 页表中找到,命中率20%。
所以,时间为(120+20)*80%+(120+120+20)*20%=174μs。
- 多级分页的特点
- 简单分段存储管理(含义+解题)
分段存储管理的地址结构示意图
段号 |
段内偏移 |
- 页面置换算法
①最佳置换算法OPT
理想的,无法实现。作为衡量其他置换算法效率的标准。
调入页面前先淘汰,淘汰以后不再访问或距离现在最长时间后再访问的页面。
②先进先出置换算法FIFO
淘汰最先进入主存的页面。运行规律不适应,效率不高。
将页面先后排成一个队列,设置替换指针指向最早进入主存的页面,当发生缺页中断时,淘汰指针指向的页面。
③最近最久未使用算法LRU
淘汰最久未使用(第一次访问时间距当前时间间隔最长)的页面。
- 计时法:被访问的页面,时间计数器为0;不被访问的页面,时间计数器+1;置换出数值最高的。
B. 堆栈法:栈顶为当前访问,栈底为最久未访问。
④二次机会置换算法SC(略)
⑤最近未用置换算法NRU(略)
⑥时钟算法Clock
采用环形链表,指针指向最早进入主存的页面,移动指针来查找满足条件的页面。
首先检测指针指向的页面,
若它的访问位为0(在主存时间长且未被访问),则淘汰,将新调入的页面插入此位置,并将指针前进一个位置;
若它的访问位为1(在主存时间长且被访问过),则清除为0,并将指针前进一个位置,重复,直到找到访问位为0的页面为止。
- “抖动”现象(填空题):刚置换出,又装入内存块(内存块数分配太少)
- Belady现象:出现在先进先出算法,即若对一个进程未分配它所要求的全部页面,有时就会出现分配的页面数增多但缺页率反而提高的异常现象。
- 缺页中断率分析
①⻚⾯⼤⼩的选择:页面尺寸越大,缺页中断率越低。(尺寸0.5~4KB)
②分配给作业的主存块数 :主存块数越多,缺页中断率越低。
③⻚⾯置换算法的选取 :FIFO > CLOCK > LRU > OPT
④程序的局部性:局部性越高,缺页中断率越低。
———————————————————————————————————————
例:现有作业的页面访问序列为:6,7,6,5,9,6,8,9,7,6,9,6,系统分配3个主存块,试分别用OPT、FIFO、LRU必考和CLOCK算法计算缺页中断次数和缺页中断率。
解答:采用表格描述页面置换过程(缺页中断:要访问的页面不在主存内,打√)
①OPT最佳:(淘汰最长时间才访问的)
6 |
6 |
6 |
6 |
6 |
6 |
8,6距离远 |
8 |
8 |
6,8距离远 |
6 |
6 |
|
7 |
7 |
7 |
7 |
7 |
7 |
7 |
7 |
7 |
7 |
7 |
|
|
6 |
5 |
9,5不再访问 |
9 |
9 |
9 |
9 |
9 |
9 |
9 |
√ |
√ |
|
√ |
√ |
|
√ |
|
|
√ |
|
|
中断次数=6次,缺页中断率为6/12=50%
②FIFO先进先出:
6 |
6 |
6 |
6 |
7 |
5 |
9 |
9 |
6 |
6 |
8 |
7 |
7* |
7 |
7 |
5 |
9 |
6 |
6 |
8 |
8 |
7 |
9 |
|
5* |
9 |
6 |
8* |
8* |
7 |
7 |
9* |
6 |
|||
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
中断次数=9次,缺页中断率为9/12=75%
③LRU最近最久未使用:(刚进的放顶部)
6 |
7 |
6 |
5 |
9 |
6 |
8 |
9 |
7 |
6 |
9 |
6 |
|
6 |
7 |
6 |
5 |
9 |
6 |
8 |
9 |
7 |
6 |
9 |
|
|
|
7 |
6 |
5 |
9 |
6 |
8 |
9 |
7 |
7 |
√ |
√ |
|
√ |
√ |
|
√ |
|
√ |
√ |
|
|
中断次数=7次,缺页中断率为7/12≈58.3%
④CLOCK:
6* |
6* |
6* |
6* |
9* |
9* |
9* |
9* |
7* |
7* |
7* |
7* |
|
7* |
7* |
7* |
7 |
6* |
6* |
6* |
6 |
6* |
6 |
6* |
|
|
|
5* |
5 |
5 |
8* |
8* |
8 |
8 |
9* |
9* |
√ |
√ |
|
√ |
√ |
√ |
√ |
|
√ |
|
√ |
|
中断次数=8次,缺页中断率为8/12≈66.7%
OPT最好,FIFO最差,LRU和CLOCK接近。
———————————————————————————————————————
习题15:(必考:判断是否越界,段内偏移是否超过段长)
某段式存储管理的系统中为一个作业建立如下段表:计算作业访问的逻辑地址[0,260]、[1,36]、[2,86]、[3,400]相对应的绝对地址(物理地址)。
段号 |
段长 |
段首址 |
0 |
300 |
10 |
1 |
420 |
400 |
2 |
100 |
800 |
3 |
560 |
1200 |
4 |
980 |
3500 |
习题22:一个进程以下列次序访问5个页:A、B、C、D、A、B、E、A、B、C、D、E;假定用FIFO替换算法,在主存器中有3个和4个空闲页框(块)的情况下,分别给出页面替换次数。通过该题的计算,出现了什么现象?(注:本题页面初始装入主存也计入缺页中断次数)
区号 |
起始地址 |
长度 |
占用标志 |
1 |
100KB |
100KB |
0 |
2 |
200KB |
500KB |
0 |
3 |
700KB |
200KB |
0 |
4 |
900KB |
300KB |
0 |
第四章 设备管理
- 通道字缩写
CPU是主设备,通道是从设备。
CCW通道命令字:组成通道程序,每一条CCW规定了外部设备的一个操作。
CAW通道地址字:用来存放通道程序首地址的固定单元。
CSW通道状态字:用来记录设备和通道状态的固定主存单元。
- I/O软件的分层结构(I/O 中断请求从上往下,中断响应从下而上)(顺序+名字)
用户级的IO软件(I/O 系统调用、Spooling 技术) |
与设备无关的I/O软件(接口、设备命名、保护、缓冲、分配、出错) |
设备驱动程序(检查、转换、发出、响应、组织) |
I/O中断处理程序( 正常结束、异常处理、进程状态改变) |
硬件(执行I/O传输) |
- 磁盘驱动调度
访问一个扇区的时间=寻找时间+延迟时间+传输时间
设每个柱面上有n个磁道,每个磁道上有m个扇区:
柱面号=(块号+1)/ (n*m)+1
磁头号=(块号+1)%(n*m)/m
扇区号=(块号+1)%(n* m)%m
块号=(柱面号-1)*n*m+(磁头号1)1m+扇区号-1
- 磁盘移臂调度(寻找时间的最短化)
①先来先服务FCFS
②最短寻找时间优先SSTF
③单向扫描US
④双向扫描DS
⑤电梯Elevator
例4-4:100个柱面,编号从1开始,移动臂正在处理54,
请求者顺序:27,47,36,67,50,70,90,55,81,38。
先来先服务:54→27→47→36→67→50→70→90→55→81→38
移动时间=27+20+11+……
最短寻找时间优先:54→55→50→47→38→36→27→67→70→81→90
移动时间=1+5+3+……
电梯:54→55→67→70→81→90→50→47→38→36→27
移动时间=1+12+……
例4-5:若一个磁盘有100个柱面,请求先后顺序:10,22,21,2,40,6,38,67,99,50。
磁头位于柱面20处,查找移过每个柱面需要5ms。求查找时间以及平均寻道长度。
先来先服务:20,10,22,21,2,40,6,38,67,99,50。
移动时间=10+12+1+……=256;
查找时间:256*5=1280ms;
平均寻道长度:256/10=25.6。
最短寻找时间优先:20,21,22,10,6,2,38,40,50,67,99。
移动时间=1+1+12+……=119
查找时间:119*5=595ms;
平均寻道长度:119/10=11.9。
电梯:20,21,22,38,40,50,67,99,10,6,2。
移动时间=1+1+……=176;
查找时间:176*5=880ms;
平均寻道长度:176/10=17.6。
- 磁盘的旋转调度(根据延迟时间决定执行顺序)
例4-2:设有4个访问67号柱面的访问请求者,访问请求如表
访问次序 |
柱面号 |
磁头号后 |
扇区号先 |
A |
67 |
5 |
3 |
B |
67 |
2 |
6 |
C |
67 |
5 |
6 |
D |
67 |
3 |
8 |
解答:经过旋转调度之后,执行次序变为A、C、D、B,
若约定柱面号定位完成后,
扇区号相同而磁头号不同时,此项从磁头号小的优先,则次序为A、B、D、C。
例4-3:设一个移动臂磁盘当前的移动臂正处在第10柱面,有7个请求者等待访问磁盘,具体请求情况如表,给出最省时间的次序。
访问次序 |
柱面号 |
磁头号后 |
扇区号先 |
A |
11 |
8 |
4 |
B |
9 |
5 |
7 |
C |
17 |
20 |
7 |
D |
11 |
4 |
5 |
E |
22 |
9 |
6 |
F |
9 |
16 |
3 |
G |
11 |
12 |
5 |
解答:需要考虑移臂调度和旋转调度
先进行移臂调度:
若走10→11→9→17→22,则移动距离为1+2+8+5=15;
若走10→9→11→17→22,则移动距离为1+2+6+5=14。(最节省时间)
进行旋转调度:
柱面9和11需要旋转调度,(扇区小优先)
第9柱面,先调度请求F,再调度请求B;
第11柱面,先调度请求A,再调度请求D,下一圈再调度G。
最后次序为:F、B、A、D、G、C、E。
- Spooling技术
第五章 文件管理
文件:文件体、文件说明
文件系统:操作系统中负责管理和存取文件信息的软件机构。
优点:①使用的方便性;②数据的安全性;③接口的统一性。
分类:
①按性质和用途:系统文件、库文件、用户文件、临时文件、档案文件、永久文件。
②按保护方式:只读文件、读写文件、不保护文件。
③按数据形式:源文件、目标文件、可执行文件。
④按信息流向:输入文件、输出文件、输入输出文件。
⑤按组织形式:一般文件、目录文件、特殊文件。
- 单级目录结构:
整个系统只建立一张目录表,为每个文件分配一个目录项(文件名,文件的起始块号)
设置一个状态位,表明目录项是否为空闲。
缺点:①查找速度慢;②不允许重名;③不便于实现文件共享。
二级目录结构:
为每个用户建立一个单独的用户文件目录。
再建立一个主文件目录,每个用户文件目录都占有一个目录项,包括用户名和指向用户目录文件的指针。
优点:①解决了重名问题;②速度提高了;③不同用户可以使用不同的文件名。
多级目录结构:
- 物理结构
①顺序结构文件
②链接结构文件
③索引结构文件
例5-1:设文件为链接文件, 由5个逻辑记录组成,每个逻辑记录的大小与物理磁盘块的大小相同,均为512B,并依次存放在60、120、 70、88、56号物理块中。现若要访问文件中第1057字节的信息,请问要访问哪个物理磁盘块?
解答:1057=512*2+33,要访问的逻辑字节在第3个逻辑记录中,则要访问磁盘块号70。
例5-2:某文件系统采用索引文件结构,设文件索引表的每个表目占4个字节,存放一个盘块的块号,磁盘块大小为512B。问该文件系统采用直接、二级和三级索引所能管理的最大磁盘空间为多少字节?
解答:首先计算索引表项目的大小:512/4=128 (个)。
直接索引:因为每项对应一个 物理块,所以能管理的最大磁盘空间=128*512B=64KB。
二级索引:因为是索引的索引,所以能管理的最大磁盘空间=128*128*512B=8192KB。
三级索引:因为是索引的索引的索引,所以能管理的最大磁盘空间=128*128*128*512B
= 1048576KB。
例5-3:有一磁盘组共有10个盘面,每个盘面有100个磁道,每个磁道有16个扇区。
①假定以扇区作为分配单位,若使用位示图管理磁盘空间,问位示图要占用多少空间?
②若采用空白文件目录管理法,现有空闲扇区400个,要使空白文件目录所占空间与前面位示图所占空间一致,问空白文件目录中的表目占用多少空间?
解答:
①磁盘组扇区总数为:10* 100* 16= 16000。
②设每个表目占用的空间为X位,则: 400*X= 16000, X=40 位,即为5字节。
例:5-7:为保证文件系统的安全性,可以采用哪些措施?
答:对文件的保护和保密等措施。
文件保护:
①防止系统故障造成的破坏:采用复制文件副本和定时转储的方式。
②防止用户共享文件时可能造成的破坏:采用属性文件目录、存取控制表、规定文件使用权限等。
文件保密:隐藏文件目录、设置口令和对文件进行加密等方法。
第六章 windows和Linux操作系统
- 管道线和过滤器(命令含义)
可通过写“管道”操怍符“I”把一个命令的标准输出连接到另一个命令标准输入上,如在
ls-1 | wc
中以这种方式连接的两个命令组成个管道线与下面的表述:
ls -1 > file; wc < file
除了未使用file 之外整体效果上等同。但这两个进程是用管道连接的而且是并行运行。
管道是单向的,并通过当管道中没有东西可读的时候暂停we和当管道满的时候暂停Is来实
现同步。
过滤器是读它的标准输入,以某种方式转换它,并输出结果作为输出的命令。这样的一一个过
滤器如grep,从它的输入中选择出包含指定字符串的那些行。例如,命令)
ls | grep old
打印来自ls 的输出中包含字符串old的那些行,如果有的话。另一个有用的过滤器是sort。例如,
命令
who| sort
将打印登录的用户的按字符排序的一一个列表。
-一个管道线可以由多于两个的命令组成。例如,命令
ls | grep old|wc-1
打印在当前目录中的文件名字中包含字符串old的数目。