作者:夏日
博客地址:https://blog.csdn.net/zss192
思维导图快速复习见我这篇博客:操作系统思维导图总结
本文结合天勤考研的高分笔记和王道考研的PPT进行总结
所用到的资料:传送门 密码: j6md
1.操作系统(Operating System即OS):指控制和管理整个计算机系统的硬件和软件资源,并合理的组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口的环境。它是计算机系统中的最基本的系统软件。
2.操作系统的特征
3.操作系统的五大基本功能
由于功能描述较多,前四个的分类有印象即可(了解后可帮助理解)
4.操作系统的形成
各阶段的优点主要是解决了上一阶段的主要缺点
5.操作系统的分类
6.两种指令、处理器状态、程序
特权指令:不允许用户直接使用的指令,如I/O指令、中断屏蔽指令、清内存指令
非特权指令:普通的运算指令
核心态(管态):能执行一切指令,能访问所有寄存器和存储器
用户态(目态):只能执行非特权指令,访问指定的寄存器和存储器
内核程序:系统的管理者,可执行一切指令、运行在核心态
应用程序:普通用户程序只能执行非特权指令,运行在用户态
助记:类似于Linux系统下的root用户和一般用户
7.操作系统的内核:操作系统最基本最核心的部分
8.中断:为实现多道程序并发执行而引入的一种技术(如因I/O请求暂停执行时,可转去运行其它程序),是CPU从用户态进入核心态的唯一途径
9.系统调用:系统给程序员(应用程序)提供的唯一接口,可获得OS的服务。在用户态发生,核心态处理
程序接口:由一组系统调用组成,进一步封装
库函数:应用程序通过高级语言提供的库函数间接(编程方便)进行系统调用,在用户态运行
10.用户执行系统调用的过程:先传递系统调用所需参数,通过陷入(trap)指令进入核心态,然后执行相应服务程序,最后返回用户态。
11.操作系统的体系结构
大内核:将OS的主要功能模块作为系统内核
微内核:只保存基本的功能在内核
1.操作系统提供给编程人员的接口是(C)
A.库函数 B.高级语言 C.系统调用 D.子程序
答:程序员通过调用操作系统提供的系统调用函数来使用操作系统提供的服务。
而库函数是由程序设计语言提供的,它不是操作系统提供的接口。
2.在单处理机系统中,可并行的是( D )。
Ⅰ 进程与进程 Ⅱ 处理机与设备 Ⅲ 处理机与通道 Ⅳ 设备与设备
A.Ⅰ、Ⅱ和Ⅲ B.Ⅰ、Ⅱ和Ⅳ
C.Ⅰ、Ⅲ和Ⅳ D.Ⅱ、Ⅲ和Ⅳ
答:注意是并行即同时运行,而又是单处理机即单核,则同一时刻只能运行一个进程,但多个进程可以并发即交替的运行。
处理器、通道、设备都能并行运行(因为不属于同一类),比如同时打印(设备)、计算(处理器)、传输数据(通道)
3.一个多道批处理系统中仅有P1和P2两个作业,P2 比 P1 晚 5ms到达,它们的计算和 I/O操作顺序如下:
P1 :计算 60ms ,I/O 80ms,计算 20ms
P2 :计算 120ms,I/O 40ms,计算 40ms
若不考虑调度和切换时间,则完成两个作业需要的时间最少是(B)
A.240ms B.260ms C.340ms D.360ms
答:由于P2晚到,所以P1先执行
特别注意的是多道只是并发即交替执行,同一时刻CPU还是只能处理一个计算过程,但可以同时计算机处理I/O操作
4.下列选项中,不可能在用户态发生的事件是(C)
A.系统调用 B.外部中断 C.进程切换 D.缺页
答:注意题目问的是发生时处于用户态
系统调用本来就是操作系统提供给用户使用的接口,所以自然是由用户使用
外部中断比如用户敲击键盘,会产生外部中断,也是在用户态发生的
缺页会产生缺页中断,也是会发生在用户态下
而进程切换比如挂起一个正在运行的进程,显然用户是没有这个权限的,实质上需要修改程序状态字,且全程在核心态执行
1.进程是进程实体的运行过程,是资源分配的基本单位,也是接受调度的基本单位
2.进程的基本特征
3.进程和程序的区别
4.进程的组成(严谨的说是进程实体或进程映像的组成)
PCB是给操作系统用的,程序段和数据段是给进程自己用的
5.进程控制块PCB(Process Control Block)的组成
6.进程的组织方式
7.进程的5种基本状态
8.进程控制:实现进程状态的相互转换,用原语实现
助记:阻塞到运行转个圈,运行也可到就绪
9.进程的创建
进程的终止
进程的阻塞和唤醒
进程的切换
无论哪个进程控制原语,其实只做三件事
1.更新PCB中的信息(修改进程状态)
2.将PCB插入合适的队列
3.分配/回收资源
10.进程通信:即进程间的信息交换。
11.高级进程通信可分为三类
12.引入线程带来的变化
13.线程的属性
14.线程的实现方式
很多编程语言提供了线程库(用户级),而大多数操作系统都实现了内核级线程(内核级)
两个的区别关键在于OS能不能意识到线程的存在
15.多线程模型:根据用户级线程和内核级线程的映射关系,可分为以下三种
16.七状态模型
注意挂起和阻塞都没获得CPU服务和所需资源,但挂起是将进程映像调到外存,而阻塞仍在内存
由于所参考资料书中将进程描述和处理机调度合为了一章,进程的描述习题放在下章处理机调度中
1.处理机调度:按某种算法选择一个进程将处理机分配给它
助记:从高到低的调度其实也是从外到内的过程,先是作业调度创建进程然后是进程调度执行进程。而发生频率由低到高
2.引起进程调度或进程切换的原因
3.不能进行进程调度和进程切换的情况
4.进程调度的方式
非抢占方式(不可剥夺式):只允许进程主动放弃(完成或主动进入阻塞态)处理机,即使有更紧迫的任务到达也不搭理它
抢占方式(可剥夺方式):有个更重要的进程需使用处理机,则立即暂停当前进程,将处理机分配给它
5.进程的切换与过程
进程调度和切换都是有代价的,过于频繁会使系统效率下降
6.调度算法的评价指标
7.周转时间包括四部分
由此可看出周转时间含很多等待时间,显然运行时间越长即等待时间越短用户越满意
8.早期批处理的调度算法
三种调度算法对比
9.交互式系统的调度算法
三种调度算法对比
10.各调度算法优点
算法 | 优点 |
---|---|
FCFS | 公平 |
SJF | 能尽快处理完短作业,平均等待/周转时间等参数很优秀 |
时间片轮转调度 | 可让各个进程得到及时的响应 |
优先级调度 | 可灵活的调整各进程被服务的机会 |
多级反馈队列调度 | 对以上算法折中权衡,综合表现优秀平衡 |
11.进程同步与互斥
同步(直接制约关系):异步性结果不可预知用同步实现先后顺序执行的目的
互斥(间接制约关系):一个进程访问临界资源时,另一个进程必须等待
临界资源:同时仅允许一个进程使用的资源
12.对临界资源的访问分为
13.互斥的要求
14.进程互斥的软件实现方法
如果此时允许P0进入,P0却一直不进入使得虽然空闲P1也一直访问不了
由于异步性,若按照125637的顺序两个进程将会同时访问临界区
若按1526的顺序两个进程都无法进入
15.进程互斥的硬件实现方法
16.信号量机制
wait又称P操作即申请资源,signal又称V操作即释放资源
整型信号量:用一个整型变量表示某种资源数,不满足让权等待
记录型信号量:P操作若无可用资源则阻塞(block),V操作唤醒(wakeup)链表第一个进程
S.L表等待队列,S.value表资源数。P会S.value–,V会S.value++。满足让权等待
17.信号量实现同步与互斥
实现互斥:信号量(可理解成资源数)初值为1,临界区之前P,临界区之后V
mutex=1; P(mutex); 临界区代码; V(mutex);
实现同步:信号量初值为0,前操作V释放资源后,后操作才能P申请资源
若先P1才能P2 -----> P1{代码...V(s);} P2{P(s);代码...}
18.生产者-消费者问题:缓冲区没满生产者才能放数据,缓冲区不空消费者才能取数据,所以两个同步信号量
必须先P资源信号量(full和empty)再P互斥信号量(mutex),否则可能有占用权但无可用资源发生死锁
要会默写上述代码,其它问题与这个类似
19.其它同步问题
20.为解决信号量机制编程麻烦、易出错的问题引入管程
如Java中用关键字synchronized声明的函数,同一时间段内只能被一个线程调用
21.死锁:各进程都在等待对方的资源导致各进程都阻塞
22.死锁产生的必要条件
23.预防死锁:破坏死锁产生的四个必要条件中的一个或多个
24.避免死锁:避免系统进入不安全状态(银行家算法)
安全序列:按照此序列分配资源每个进程都能顺利完成
安全状态:此时系统至少存在一个安全序列
不安全状态不一定会导致死锁,但死锁一定不安全。例如你在河边走处于不安全的状态只是有可能掉下去,而你要是掉下去了肯定处于不安全状态。但你要是离河远远地你就处于安全状态肯定不会掉下去。
25.银行家算法:在资源分配之前先判断会不会进入不安全状态,若不会再分配
用到的数据结构:
算法步骤
①检查此次申请是否超过之前声明的最大需求数(Requesti ≤ Needi)
②检查此时剩余可用资源是否满足这次请求(Requesti ≤ Availablei)
③对于请求的资源预分配,修改以下向量
Availablei=Availablei-Requesti //可用=可用-申请
Allocationi=Allocationi+Requesti //已分配=已分配+申请
Needi=Needi-Requesti //需求=需求-申请
④用安全性算法检测此次分配是否会进入不安全状态
25.死锁的检测与解除:允许死锁发生,系统负责检测出死锁并解除
死锁的检测:类似拓扑排序,找到一个点消除它的所有连接边直到消除所有边
找到既不阻塞又不孤立的点即P1(P1申请的资源还足够),消除它的所有边,此时P2向R1申请一个资源,而R1还剩两个可用资源满足要求则消除P2所有边,所有边均消除说明没有死锁。
死锁的解除:一旦检验到死锁就应该立即解除
1.进程处于临界区不能进行处理机调度(X)
答:对于内核程序临界区访问的资源如果不尽快释放,极有可能影响OS内核的其它管理工作,所以处于内核程序临界区的时候不能进行调度和切换。
而题目所说的是临界区,这包括普通的临界区如打印机,此时调度和切换并不会影响OS内核的管理工作。而且如果访问打印机这种慢速外设如果不能调度系统性能肯定非常低。
2.适用于早期批处理调度算法的计算
由于非抢占,t=2时虽然P2已经到了但也只能等P1执行完
3.适用于交互式系统的算法的计算
注:以下括号内表示当前处于就绪队列的进程,下同
0时刻(P1(5)):0时刻只有P1到达就绪队列,让P1上处理机运行一个时间片
2时刻(P2(4) > P1(3)):2时刻P2到达就绪队列,P1运行完一个时间片,被剥夺处理机,重新放到队尾。此时P2排在队头,因此让P2上处理机。(注意: 2时刻, P1下处理机,同一时刻新进程P2到达,如果在题目中遇到这种情况,默认新到达的进程先进入就绪队列)
4时刻(P1(3)→ P3(1) > P2(2)):4时刻,P3到达,先插到就绪队尾,紧接着,P2下处理机也插到队尾
5时刻(P3(1) > P2(2) > P4(6)):5时刻,P4到达插到就绪队尾(注意:由于P1的时间片还没用完,因此暂时不调度。另外,此时P1处于运行态,并不在就绪队列中)
6时刻(P3(1)→ P2(2) > P4(6)→P1(1)):6时刻,P1时间片用完,下 处理机,重新放回就绪队尾,发生调度
7时刻(P2(2) →P4(6)→P1(1)):虽然P3的时间片没用完,但是由于P3只需运行1个单位的时间,运行完了会主动放弃处理机,因此也会发生调度。队头进程P2上处理机。
9时刻(P4(6) > P1(1)):进程P2时间片用完,并刚好运行完,发生调度,P4上处理机
11时刻(P1(1)→ P4(4) ):P4时间片用完,重新回到就绪队列。P1上处理机
12时刻(P4(4)):P1运行完,主动放弃处理机,此时就绪队列中只剩P4,P4上处理机
14时刻():就绪队列为空,因此让P4接着运行一个时间片。
16时刻:所有进程运行结束
0时刻(P1(5) ):只有P1到达,P1. 上处理机。
2时刻(P2(4)):P2到达,但P1时间片尚未结束,因此暂不调度
4时刻(P2(4)> P3(1)):P3到达,但P1时间片尚未结束,因此暂不调度
5时刻( P2(4)> P3(1)> P4(6) ):P4到达,同时,P1运行结束。发生调度,P2上处理机。
9时刻( P3(1)> P4(6) ):P2运行结束,虽然时间片没用完,但是会主动放弃处理机。发生调度。
10时刻( P4(6) ):P3运行结束,虽然时间片没用完,但是会主动放弃处理机。发生调度。
15时刻( ):P4时 间片用完,但就绪队列为空,因此会让P4继续执行一个时间片。
16时刻( ):P4运行完,主动放弃处理机。所有进程运行完。
如果时间片太大,使得每个进程都可以在一个时间片内就完成,则时间片轮转调度算法退化为先来先服务调度算法,并且会增大进程响应时间。因此时间片不能太大。
另一方面,进程调度、切换是有时间代价的(保存、恢复运行环境),因此如果时间片太小,会导致进程切换过于频繁,系统会花大量的时间来处理进程切换,从而导致实际用于进程执行的时间比例减少。可见时间片也不能太小。
0时刻(P1):只有P1到达,P1上处理机。
7时刻(P2、P3、P4):P1运行完成主动放弃处理机,其余进程都已到达,P3优先级最高,P3上处理机。
8时刻(P2、P4):P3完成,P2、 P4优先级相同,由于P2先到达,因此P2优先上处理机
12时刻(P4):P2完成,就绪队列只剩P4,P4上处理机。
16时刻():P4完成,所有进程都结束
0时刻(P1):只有P1到达, P1上处理机。
2时刻(P2):P2到达就绪队列,优先级比P1更高,发生抢占。P1回到就绪队列,P2上处理机。
4时刻(P1、P3):P3到达, 优先级比P2更高,P2回到就绪队列,P3抢占处理机。
5时刻(P1、P2、P4):P3完成,主动释放处理机,同时,P4也到达,由于P2比P4更先进入就绪队列,因此选择P2上处理机
7时刻(P1、P4):P2完成,就绪队列只剩P1、P4,P4上处理
11时刻(P1):P4完成,P1上处理机
16时刻():P1完成,所有进程均完成
4.并发进程执行的相对速度是(C)
A.由进程的程序结构决定的 B.由进程自己来控制的
C.与进程调度策略有关的 D.在进程被创建时确定的
答:并发速度受调度策略影响,采用不同的调度策略(FCFS、SJF)会影响执行的相对速度。要不然也不会那么费力去研究调度算法了。
5.中断扫描机构是(B)扫描一次中断寄存器。
A.每隔一个时间片 B.每条指令执行周期内最后时刻
C.每当进程释放CPU D.每产生一次中断
答:处理器执行完一条指令后,中断扫描机构立即检查有无中断,无中断就继续下一条指令,若有中断就处理中断,这一过程称为"中断响应"
6.关于临界问题的一个算法(假设只有P0和P1可能会进入临界区)如下
repeat
retry:
if(turn!=-1) turn=i;
if(turn!=i) go to retry;
turn=-1;
临界区;
turn=0;
其他区域;
until false;
该算法(B)
A.不能保持进程互斥进入临界区,且会出现“饥饿”
B.不能保持进程互斥进入临界区,但不会出现“饥饿”
C.保证进程互斥进入临界区,但会出现“饥饿”
D.保证进程互斥进入临界区,不会出现“饥饿”
答:最容易出错的地方就是两个进程同时申请进入临界区的时候,由于并发交替进行无法确定执行顺序可能就会带来问题。
①若P0先执行两个判断然后P1执行两个判断,然后他们再执行turn=-1。
P0:满足turn!=-1置turn=0;满足turn=0不回退
P1:满足turn!=-1置turn=1;满足turn=1不回退
P0执行turn=-1然后P1执行turn=-1,就会发生他们同时进入临界区的问题
②对于饥饿问题,根本原因在于进程一直进不去临界区,而只有turn=-1时他们才会进不去,但如果turn=-1那么肯定有个进程已经进去临界区了,它出来的时候就会把turn置为0所以不会有进程饿死。
7.(B)有利于CPU繁忙型的作业,而不利于I/O繁忙型的作业(进程)。
A.时间片轮转调度算法 B.先来先服务调度算法
C.短作业(进程)优先调度算法 D.优先权调度算法
答:CPU繁忙型指该类作业需要大量的CPU时间进行计算而很少请求I/O,例如一般的科学计算。I/O繁忙型指CPU进行处理的时候需要频繁请求I/O,而每次操作I/O时间又很短,例如目前大多数事务处理。
因此可以转换为哪个算法有利于长作业而不利于短作业?
FCFS先来先服务有利于长作业不利于短作业。例如排队买杯奶茶但前面却有人要了100杯。
8.下面哪一个不会引起进程创建(C)
A.用户登录 B.作业调度 C.设备分配 D.应用请求
答:引起进程创建的四类典型事件除了ABD还有提供服务
9.要实现两个进程互斥,设一个互斥信号量 mutex,当 mutex为0时,表示(B)
A.没有进程进入临界区
B.有一个进程进入临界区
C.有一个进程进入临界区,另外一个进程在等候
D.两个进程都进入临界区
答:两个进程互斥,互斥信号量mutex的取值为1,0,-1且初值为1。
当一个进程请求访问后mutex为0,再有一个进程申请的时候执行P操作mutex-1=-1此时一个进入一个在等待。因此为0时时一个进入了临界区
注意C中的另一个在等候,第二个进程要是不申请就不会等候,而它要是申请了mutex=-1
10.下面关于管程的叙述错误的是(C)
A.管程是进程的同步工具,解决信号量机制大量同步操作分散的问题
B.管程每次只允许一个进程进入管程
C.管程中ⅴ操作的作用和信号量机制中V操作的作用相同
D.管程是被进程调用的,是语法范围,无法创建和撤销
答:管程的V操作不同于信号量机制中的V操作,前者V必须在P之后,而后者则没有这个要求,只要P和V成对出现即可。
11.若系统中有5台绘图仪,有多个进程需要使用两台,规定每个进程一次仅允许申请一台,则最多允许(D)个进程参与竞争,而不会发生死锁。
A.5 B.2 C.3 D.4
答:m个进程,都需要两个同类资源,不会发生死锁的最少资源数是m*(2-1)+1即m+1 ≤ 5,所以m ≤ 4
最坏情况,所有进程都差了一个资源(先给其中一个进程等它运行完就会释放资源)
12.若系统中有n个进程,则在阻塞队列中进程的个数最多为(A)
A.n B.n-1 C.n-2 D.1
答:一定不要忘了有种特殊情况就是死锁,n个进程都在互相等待对方手里的资源最终都处于阻塞状态。
13.下列关于线程的叙述中,正确的是(D)
Ⅰ.在采用轮转调度算法时,一进程拥有10个用户级线程,则在系统调度执行时间上占用10个时间片
Ⅱ.属于同一个进程的各个线程共享栈空间
I.同一进程中的线程可以并发执行,但不同进程内的线程不可以并发执行
Ⅳ.线程的切换,不会引起进程的切换
A.仅Ⅰ、Ⅱ、Ⅲ B.仅Ⅱ、Ⅳ
C.仅Ⅱ、Ⅲ D.全错
答:I错误,由于用户级线程不依赖于系统内核,内核是看不到用户级线程的,别管你有几个线程在它看来看到的都只是一个进程,因此只分一个时间片
而对于内核级线程,由于内核知道线程的存在,所以有多少线程就能分多少时间片
II错误,共享进程的地址空间,共享进程的资源但线程有自己的栈空间不与其他线程共享
III错误,同一进程的线程可并发,甚至不同进程的线程也可以并发
IV错误,从一个进程的线程切换到另一个进程的线程,进程都变了肯定会引起进程的切换
14.若一个用户进程通过read系统调用读取一个磁盘文件中的数据,则下列关于此过程的叙述中,正确的是(A)
I.若该文件的数据不在内存中,则该进程进入睡眠等待状态
II.请求read系统调用会导致CPU从用户态切换到核心态
Ⅲ.read系统调用的参数应包含文件的名称
A.仅I、Ⅱ B.仅1、Ⅲ C.仅Ⅱ、Ⅲ D.1、Ⅱ和Ⅲ
答:若用户读取的磁盘文件不在内存中,就会转向中断处理,导致CPU从用户态切换到核心态,此时该进程进入睡眠等待状态(其实就是阻塞态)
对于III,调用read之前需要用open打开文件,而open函数会指定文件的名称然后产生一个文件编号或索引,之后的所有操作都是操作这个编号或索引号就可以,因此read系统调用的参数并不会包含文件名称
15.若某单处理器多进程系统中有多个就绪进程,则下列关于处理器调度的叙述中,错误的是(C)
A.在进程结束时能进行处理器调度
B.创建新进程后能进行处理器调度
C.在进程处于临界区时不能进行处理器调度
D.在系统调用完成并返回用户态时能进行处理器调度
答:A.进程结束后进程撤销处理器应当处理下一个进程了,自然会出现处理器调度
B.创建新进程后若该进程较紧急,处理器可能就会暂停当前活动而转向调度执行新创建的进程,因此也可能会发生处理器调度
C.进程处于临界区,其它进程肯定进不去临界区,但是系统可以暂停执行处于临界区的进程而转去执行其它进程,处理完之后再继续执行临界区的剩余代码即可,因此也可能会发生处理机调度
D.系统调用结束后返回正常执行的过程,此时肯定也可以继续进行系统调用
16.某系统有n台互斥使用的同类设备,3个并发进程分别需要3、4、5台设备,可确保系统不发生死锁的设备数n最小为(B)
A.9 B.10 C.11 D.12
答:当系统只有(3-1)+(4-1)+(5-1)=9台设备时,三个进程分别分配2、3、4台。这种情况下3个进程都无法继续执行发生死锁,而只需要再添加一个设备把它分配给任意一个进程就保证都可以执行完成,也就是最少需要10台
这类问题都是固定解法,先找最坏情况或者说都缺一个的情况
17.若系统S1采用死锁避免方法,S2采用死锁检测方法,下列叙述中,正确的是(B)
I.S1会限制用户申请资源的顺序,而S2不会
Ⅱ.S1需要进程运行所需资源总量信息,而S2不需要
Ⅲ.S1不会给可能导致死锁的进程分配资源,而S2会
A.仅I、Ⅱ B.仅Ⅱ、Ⅲ C.仅I、Ⅲ D.I、Ⅱ、Ⅲ
答:死锁避免最典型的是银行家算法,注意它会限制分配资源的顺序而不会限制申请资源的顺序,你原先咋申请现在还咋申请,只不过我不一定给你分配
而对于死锁预防典型代表为顺序资源分配,只能按编号从小到大申请资源,其限制了申请资源的顺序。
而对于死锁检测就是你得先出事(发生死锁)我才会管你
因此I是错的
18.系统中有3个不同的临界资源R1、R2和R3,被4个进程p1、p2、p3及p4共享。各进程对资源的需求为:pl申请R1和R2,p2申请R2和R3,p3申请R1和R3,p4申请R2。若系统出现死锁,则处于死锁状态的进程数至少是(C)
A.1 B.2 C.3 D.4
答:可用死锁检测画图来计算
而要是想形成循环和P4没关系,当发生下图时形成一个循环
若先分配给P4那么死锁就是3个,要是没事先分配就是4个
1.内存管理的功能
2.从源程序到执行的过程,经历了三个阶段
3.覆盖技术:将程序分为多个段,常用的段常驻内存,不常用的段在需要时调入内存,解决大作业小内存问题
4.交换技术:内存紧张时换出(挂起)某些进程再换入某些已具备运行条件的进程
文件区:占磁盘小部分,存放文件,追求存储空间的利用率
对换区:存放被换出的进程数据(PCB不会被换出),追求换入换出速度
由中级(内存)调度决定将哪个挂起的进程调入内存
在不同作业或进程之间发生
5.内部碎片:已经分配给作业但不能被利用的内存空间
外部碎片:还未分配给作业但由于碎片太小无法分配给作业
6.连续分配管理:为用户进程分配的必须是一个连续的内存空间
助记:只要是固定大小的分配都会产生内部碎片,其余的都会产生外部碎片
单一连续分配:内存分为系统区和用户区,只能有一道用户程序且独占用户区
固定分区分配:将内存空间分为若干个固定大小的分区,每个分区只能装一道程序
动态分区分配:进程装入内存时才根据进程大小动态创建分区
7.非连续分配:为用户进程分配的可以是一些分散的内存空间
8.基本分页存储管理:把进程分页,各个页面可离散放到各个内存块中
将进程分成若干大小相等区域,称为页或页面。
将内存空间分成与页面大小相等的区域,称为页框(页框=页帧=内存块=物理块=物理页面)。
OS将进程中的任意一页放到内存中的任意一个页框(页框装着页)中。
简单来说就是将内存和进程都划分成若干大小相等区域,然后把进程的区域"随便"放到内存的区域中一一对应(进程分页,内存分块)
9.页表:记录每个页面和内存中实际存放的内存块之间的映射关系
假设有一本书,每一页有固定字数,页面大小就是每一页字数数量,每本书都有目录,一个目录项(页表项)对应一页
10.基本地址变换机构(由逻辑地址确定物理地址)
11.具有快表的地址变换机构:是基本地址变换机构的改进版本
快表(TLB):访问速度比内存快很多的高速缓存,存放最近访问的页表项的副本
页表寄存器:存放页表在内存中的起始地址F和页表长度M
页表长度表示页表有多少个页表项用来判断是否越界:若p ≥ M则越界中断
若命中先访问的是快表,而快表是高速缓存不属于内存,所以只需一次访存
查快表和查页表其实看着都一样,只不过查快表速度要快的多,可理解成一个速度快得多的页表
注意给的是一个逻辑地址,而一个页或一个块中有很多地址,所以需要一个页内偏移指出要访问的是哪个块中的具体哪个地址
12.局部性原理
时间局部性:使用了某个指令或数据,不久后很可能又再次使用
空间局部性:程序访问了某个存储单元,不久后其附近的存储单元也可能被访问
基本地址变换机构中,每次访问一个逻辑地址都要查询页表,由于局部性原理,可能连续多次查到的都是同一个页表项
13.单级页表存在的问题及解决方法
14.两级页表如何实现地址变换
①按照地址结构将逻辑地址拆分成三部分(之前是页号+页内偏移量)
②从PCB 中读出页目录表始址,再根据一级页号查页目录表,找到下一级页表在内存中的存放位置
③根据二级页号查二级页表,找到最终想访问的内存块号
④结合页内偏移量得到物理地址
15.基本分段存储管理:思想和过程类似于基本分页存储管理,但各段长度可以不同
16.分段地址变换
注意分页存储中,物理地址的格式为块号+页内偏移,而分段存储中物理地址格式为段基址+段内地址
17.分页和分段的对比
18.段页式存储管理:将进程按逻辑分段,再将各段分页。然后将内存分为与页面大小相等的内存块。就是分段+分页
19.传统存储管理方式的缺点(连续、非连续分配):
20.虚拟内存:程序不需全部装入即可运行,运行时根据需要动态调入,若内存不够还需换出一些数据
21.请求分页存储管理:基本分页+请求调页+页面置换
页表结构
缺页中断机构
地址变换机构
在具有快表机构的请求分页系统中,访问一个逻辑地址时,若发生缺页,则地址变换步骤是:查快表(未命中)——查慢表(发现未调入内存)——调页(调入的页面对应的表项会直接加入快表)——查快表(命中)——访问目标内存单元
22.页面置换算法:决定将内存中哪个页面置换出去
以下前三个算法是重点
最佳置换OPT向后看淘汰最远,最近最少使用LRU向前看淘汰最远
只有FIFO才可能产生Belady异常
23.页面分配策略
24.3种离散分配方式的比较
助记:只要是固定大小的分配都会产生内部碎片,其余的都会产生外部碎片
分页和分段都2次访存,带快表就访存1或2次,段页式访存3次
25.几种内存管理方式的比较
1.假设某系统物理内存大小为4GB,页面大小为4KB,则每个页表项至少应该为多少字节?
答:内存块大小=页面大小=4KB=212B
4GB的内存总共会被分为232/212=220个内存块
内存块号的范围应该是0~220-1
内存块号至少要用20bit来表示即至少要用3B来表示块号(3*8=24bit)
页表项=页号+块号,由于页号可以是隐含的所以页表项至少为3B
2.若页面大小L为1K字节,页号2对应的内存块号b=8,将逻辑地址A=2500转换为物理地址E
答:题目等价描述:某系统按字节寻址,页内偏移量占10位(210=1KB),页号2对应的内存块号 b = 8,将逻辑地址 A=2500 转换为物理地址E
①页号P=A/L=2500/1024=2 页内偏移量W=A%L=2500%1024=452
②根据题目描述页号2没有越界(因为其有对应的内存块号)
③物理地址E=b*L+W=8*1024+452=8644
3.某系统使用基本分页存储管理,并采用了具有快表的地址变换机构。访问一次快表耗时 1us,访问一次内存耗时 100us。若快表的命中率为 90%,那么访问一个逻辑地址的平均耗时是多少?
答:①若先查快表再查慢表:(1+100)*0.9 + (1+100+100)*0.1=111us
②有的系统支持快表和慢表同时查找,平均耗时为 (1+100)*0.9 + (100+100) *0.1=110.9 us
若未引入快表,需要100+100=200us,这题关键在于是几次访存
4.在一个请求分页系统中,采用LRU页面置换算法时,加入一个作业的页面走向为:1,3,2,1,1,3,5,1,3,2,1,5。当分配给该作业的物理块数分别为3和4时,在访问过程中所发生的缺页率为(C)
A.25%,33% B.25%,100%
C.50%,33% D.50%,75%
答:物理块为3时,缺页情况如下
解释:LRU即最近最少使用算法,向前看找访问串里离缺页那一列最远出现的数替换掉它
如第四次缺页时,现在有1、3、2,我们往前看访问串依次是3112到这3个数字都出现了,而2是排最后所以把它替换掉。又如第五次缺页,此时有1、3、5,我们向前看访问串依次是315到这3个数字全部出现而最远的是5所以替换掉5
缺页次数为6,缺页率为6/12=50%
物理块数为4时,也可以向上图一样画表,但我们可以发现访问串访问的其实就只有1325这四个数,所以一定是只有4次缺页
即缺页次数为4,缺页率为4/12=33%
5.设有8页的逻辑空间,每页有1024B,它们被映射到32块的物理存储区中。那么,逻辑地址的有效位是()位,物理地址至少是()位。 (C)
A.10、11 B.12、14 C.13、15 D.14、16
答:8页=23,所以页号地址有3位。每页有1024B=210,所以页内偏移量有10位,因此逻辑地址至少要有13位
物理块大小和页面大小相同,所以物理块大小为1024B,而内存至少要有32个物理块,因此内存至少为32*1024B=215B,因此物理地址至少为15位,不然无法访问内存的所有区域
6.假定某页式管理系统中,主存为128KB,分成32块,块号为0,1,2,3,…,31。某作业有5块,其页号为0,1,2,3,4,被分别装入主存的3,8,4,6,9块中。有一逻辑地址为[3,70]。试求出相应的物理地址(其中方括号中的第一个元素为页号,第二个元素为页内地址,按十进制计算)(B)
A.14646 B.24646 C.24576 D.34576
答:每块大小为128KB/32=4KB,所以每页也为4KB大小
第3页被装入到第6块中,因此[3,70]对应的物理地址为6*4K+70=24646
7.©存储管理方式能使存储碎片尽可能少,而且使内存利用率较高。
A.固定分区 B.可变分区 C.分页管理 D.段页式管理
答:分页管理与固定分区和可变分区相比碎片明显减少。因为分页管理的碎片都能控制在一个页面大小内,而页面大小通常都较小。
段页式虽然结合了段式和页式的优点,但一个进程会有很多段,其中一个段对应一张页表每段都会有一个页内碎片,而页式管理中一个进程对应一张页表只有一个页内碎片。
8.下列选项中,属于多级页表优点的是(D)
A.加快地址变换速度
B.减少缺页中断次数
C.减少页表项所占字节数
D.减少页表所占的连续内存空间
答:对于A,多级页表不仅不会加快地址变换速度反而会减慢速度(多级一级一级查肯定没有单级只查一级快)
对于B,如果访问过程中多级的页表都不在内存中反而增加了缺页中断次数
对于C,多级和页表项长度没关系
对于D,既然多级上面三个都不是它优点那为什么还要发明它呢?因为如果页表太大占了太多连续内存空间,我们可以把它分级使得每一级的页表大小在一定范围内
9.系统为某进程分配了4个页框,该进程已访问的页号序列为2,0,2,9,3,4,2,8,2,4,8,4,5。若进程要访问的下一页的页号为7,依据LRU算法,应淘汰页的页号是(A)
A.2 B.3 C.4 D.8
答:LRU最近最久未访问算法,现在最后一个访问的是5,向前看然后是4,再接着是8,然后又是4,现在占了3个页框,然后是2占满了4个页框,显然在5482里最久未访问的是2所以替换2
10.在请求分页系统中,页面分配策略与页面置换策略不能组合使用的是©
A.可变分配,全局置换
B.可变分配,局部置换
C.固定分配,全局置换
D.固定分配,局部置换
答:固定分配:操作系统为每个进程分配一组固定数组的物理块,在进程运行期间不再改变。
全局置换:可以将操作系统保留的空闲物理块分配给缺页的进程,也可以将别的进程保持有的物理块置换到外存,再分配给缺页进程。
局部置换:发生缺页时只能选进程自己的物理块进行置换。
固定分配后页数是固定的了不能再接受全局置换的分配了,只能自己内部置换
11.某计算机按字节编址,其动态分区内存管理采用最佳适应算法,每次分配和回收内存后都对空闲分区链重新排序。当前空闲分区信息如下
分区起始地址 | 20K | 500K | 1000K | 200K |
---|---|---|---|---|
分区大小 | 40K | 80K | 100K | 200K |
回收起始地址为60K、大小为140KB的分区后,系统中空闲分区的数量、空闲分区链第一个分区的起始地址和大小分别是(B)
A.3、20K、380KB
B.3、500K、80KB
C.4、20K、180KB
D.4、500K、80KB
答:回收了起始地址为60K大小为140K的分区(60+140=200K)后它会与表中第一个和最后一个分区合并(第一个末尾地址20+40=60K,最后一个起始200K)形成起始地址20K大小为380K的分区。
但是题目中说了每次回收内存都要重新排序,而采用最佳适应算法,排序后空闲分区由小到大排列。排列后的分区为500K+80K、1000K+100K、20K+380K
所以空闲分区数量为3,第一个起始为500K大小为80K
12.某虚拟存储器的用户编程空间共32个页面,每页为1KB,内存为16KB。假定某时刻一用户页表中已调入内存的页面的页号和物理块号的对照表如下:
页号 | 物理块号 |
---|---|
0 | 5 |
1 | 10 |
2 | 4 |
3 | 7 |
则逻辑地址 0A5D(H)所对应的物理地址是什么?
答:这道题有两种解法
(1):按照一般解法,页号=逻辑地址/页面大小,偏移量=逻辑地址%页面大小
每页1KB,所以页面大小为1024,逻辑地址0A5D即0000 1010 0101 1101转为十进制后是2653
页号=2653/1024=2,偏移量=2653%1024=605
页号2对应的物理块号是4即0100,605转为二进制后是1001 0111 01
物理地址=物理块号+偏移量 发现4位加10位不满16位前面补0即可
最终结果为0001 0010 0101 1101 即 125D(H)
也可用十进制计算
页号2对应的物理块号是4,而每页1KB,因此物理地址为4*1024+605=4701
转换为二进制为1001001011101,则最终结果为0001 0010 0101 1101 即 125D(H)
这题偏移量固定占10位,如果十进制转为二进制后不足10位,要补成10位
(2):事实上我们发现题目中有的条件没用到,我们也可以用下面方法求解
页面有32个即25,所以要用逻辑地址中5位页号来表示这32个页面。每页1KB所以偏移量占10位
所以0A5D即0000 1010 0101 1101中000 10是页号,10 0101 1101是偏移量
00010即十进制的2对应的物理块号是4即0100
所以物理地址=物理块号+偏移量即0100 10 0101 1101 前面补0成16位即125D(H)
13.在基本分页存储管理系统中,假定页面大小为 1024 字节,每个页表项占用 4 个字节。(题目中所有数据都是十进制)
(1)若采用一级页表,系统能支持的逻辑空间最多为多少?
答:一级页表即在一本书中有一页目录,一页纸能写1024个字,每个目录项占4个字,那么一页纸就能有1024/4=256个目录项。而一个目录项对应着书本里的一页,256个目录项对应256页,按字节寻址即一个字节为一个地址,页面大小为1024字节说明一页能表示1024个地址,256页就能表示256*1024=256K个地址即最多为256K
(2)若采用两级页表,系统能支持的逻辑空间最多为多少?
答:二级页表能表示256*256个页面即216个页面,一个页面能表示1024个地址即210
所以总共能表示216*210=226=64M
(3)在两级页表中,现有逻辑地址为 542783,求该地址对应的外层页号(页表页面号)、页号和页内地址。
答:如下图所示,已知逻辑地址我们先求外层页号。
我们可以把二级页表中的页面看成是连续的页面。再给他们编上序号,那542783对应着542783/1024=530,也就是说542783在序号为530的页面中。
其实这个时候问题可以转换为已知逻辑地址为530,求它的页号(对应着本题的外层表号)和页内地址(对应着本题的页号)
这个序号530又在哪个一级页表中呢,一个一级页表项能表示256个页面即序号0-255在一级页表中的0,256-511在一级页表中的1
那530就在530/256=2及序号为2的页表项里,那在对应的二级页表中的哪一项呢,即530%256=18
对于页内地址,还是来看二级页表把所有页表当成连续的来看,那542783/1024是所在编号,而542783%1024正是页内地址即63
总结:外层页号=逻辑地址/页面大小/一页有多少页表项 (542783/1024/256)
页号=逻辑地址/页面大小%一页有多少页表项 (542783/1024%256)
页内地址=逻辑地址%页面大小 (542783%1024)
1.文件的属性
2.文件的逻辑结构分为两种,如下
无结构文件:文件内部数据是一系列二进制流或字符流,又称流式文件如txt
有结构文件:由一组相似的记录组成,又称记录式文件,每条记录由若干数据项组成
顺序文件:文件中记录逻辑上一个接一个顺序排列,记录可定长可变长
类比数据结构的顺序表
索引文件:建立一张索引表,每个记录对应一个表项,各记录不用保持顺序
相当于建了个目录
索引顺序文件:将记录分组每一组对应一个索引表项
先分组再建立目录
3.文件目录:一个文件对应一个FCB(文件控制块),一个FCB就是一个目录项,多个FCB构成文件目录
对目录的操作
4.目录结构
5.索引结点:FCB的改进,除了文件名之外的所有信息都放到索引结点中,每个文件对应一个索引结点
6.文件的物理结构(也就是文件应怎样存在外存中)(相较于逻辑结构这个更容易考)
连续(顺序)分配可随机存取但不便于文件长度动态增长(随机存取能力最强)
链接便于文件动态长度增长但不可随机存取
索引既可随机存取也便于文件长度动态增长
7.文件逻辑结构对比物理结构
8.文件的基本操作
创建文件:create系统调用,分配外存空间,创建目录项
删除文件:delete系统调用,回收外存空间,删除目录项
打开文件:open系统调用,将目录项中的信息复制到内存中的打开文件中,并将打开文件表的索引号返回给用户
关闭文件:close系统调用,将进程中打开文件表的相应表项删除并让系统打开表的打开计数器减1,若减为0则删除系统打开表表项
读文件:read系统调用,根据读指针、读入数据量、内存位置将数据从外存读入内存
根据打开文件得到的文件描述符(索引号)即可指明文件,无需文件名,下同
写文件:write系统调用,根据写指针、写出数据量、内存位置将文件数据从内存写入外存
9.文件存储空间管理
10.文件共享:使得多个用户共享同一个文件
基于索引结点的共享方式–硬链接
基于符号链的共享方式–软链接(快捷方式)
在一个Link型文件中记录共享文件的存放路径(如windows快捷方式)
操作系统根据存放路径一层一层查找目录,会有多次磁盘I/O,因此比硬链接速度慢
即使软链接指向的共享文件已删除,Link型文件依然存在,而通过Link型文件中的路径去找文件会提示失败
例如快捷方式指向的文件被删除了,快捷方式依然存在但双击会提示找不到文件
11.文件保护:即保护文件数据的安全
12.文件系统的层次结构
小案例如下
13.磁盘:由表面涂有磁性物质的圆形盘片组成
14.磁盘的分类
15.一次磁盘读/写操作所需时间=寻道时间+延迟时间+传输时间
16.磁盘调度算法
17.减少磁盘延迟时间的方法
18.磁盘的管理
1.若8个字(字长32位)组成的位示图管理内存,假定用户归还一个块号为100的内存块,它对应位示图的位置为(B)。假定字号、位号、块号均从1开始算起,而不是从0开始。
A.字号为3,位号为5 B.字号为4,位号为4
C.字号为3,位号为4 D.字号为4,位号为5
答:位示图中一位可表示一个内存块
字长32位,由于都是从1开始所以依次是1-32、33-64、65-96、97-98-99-100
因此字号是4,位号也是4(注意都从1开始)
这样的题当然可以用公式算,但是由于有时候是0开始有时候1开始,保险起见写下来更稳点
2.现代操作系统是用(C)来实现重名(即允许不同用户的文件可以具有相同的文件名)问题的
A.重名翻译结构 B.建立索引表
C.树形目录结构 D.建立指针
答:树形目录结构由一个根目录和若干层子目录组成。这种目录结构一是能够解决文件重名问题,即不同的目录可以包含相同的文件名或目录名;二是能够解决文件多而根目录容量有限带来的问题。
3.文件系统采用两级索引分配方式。若每个磁盘块的大小为1KB,每个盘块号占4B,则该系统中单个文件的最大长度是(A)。
A.64MB B.128MB C.32MB D.都不对
答:每个磁盘块最多有1KB/4B=256个索引项,两级索引可表示256*256个磁盘块,这些磁盘块可以占256*256*1KB=64MB大小,因此单个文件最大长度为64MB
4.下列算法中,用于磁盘调度的是©。
A.时间片轮转法 B.LRU算法
C.最短寻道时间优先算法 D.高优先级算法
答:时间片轮转法是进程调度算法,LRU算法是页面淘汰算法。
最短寻道时间优先算法是磁盘调度算法,髙优先级算法是进程调度和作业调度的算法。
之所以记录这道题是提醒大家由于学了很多调度算法不要弄混了
单看这道题,从C的寻道也能看出它和磁盘有关(磁道)
5.如果当前读写磁头正在53号柱面上执行操作,依次有4个等待访问的请求,柱面号依次为98、37、124、65,当采用©算法时,下一次磁头才可能到达37号柱面。
A.先来先服务 B.最短寻道时间优先
C.电梯调度(初始磁头移动方向向着小磁道方向)
D.循环扫描(磁头移动方向向着大磁道方向)
答:先来先服务FCFS先来的先访问所以下一次访问98
最短寻道时间优先SSTF先访问寻道时间最短的这其中65离53最近
电梯调度SCAN向小磁道移动而只有37比53小满足题意
循环扫描C-SCAN向大磁道移动下一个访问65
注意题目选项可能只给出英文要知道对应的中文及算法思想
6.下面关于文件的叙述中,错误的是(D)
I.打开文件的主要操作是把指定文件复制到内存指定的区域
Ⅱ.对一个文件的访问,常由用户访问权限和用户优先级共同限制
Ⅲ.文件系统采用树形目录结构后,对于不同用户的文件,其文件名应该不同
Ⅳ.为防止系统故障造成系统内文件受损,常采用存取控制矩阵方法保护文件
A.仅Ⅱ B.仅Ⅰ、Ⅲ
C.仅I、Ⅲ、Ⅳ D.I、Ⅱ、Ⅲ、Ⅳ
答:Ⅰ错误,系统调用open把文件的信息目录放到打开文件表中并将文件编号返回给用户。
读取文件才会把指定文件复制到内存指定的区域
Ⅱ错误,对一个文件的访问,常由用户访问权限和文件属性共同限制。
Ⅲ错误,文件系统采用树形目录结构后,对于不同用户的文件,其文件名可以不同,也可以相同。
Ⅳ错误,常采用备份的方法保护文件,而存取控制矩阵的方法是用于多用户之间的存取权限保护。
7.在一个文件被用户进程首次打开的过程中,操作系统需做的是(B)
A.将文件内容读到内存中 B.将文件控制块读到内存中
C.修改文件控制块中的读写权限
D.将文件的数据缓冲区首指针返回给用户进程
答:一个文件被用户进程首次打开即被执行了Open操作,会把文件的FCB调入内存,而不会把文件的内容读到内存中,只有进程希望获取文件内容的时候才会读入文件内容。
这个类似的题经常考,考点就是Open函数是否将文件内容读到了内存
助记:想一下平常编程都是先open打开文件然后再读取文件内容,并不是open打开文件就直接获得了内容
8.在文件的索引结点中存放直接索引指针10个,一级和二级索引指针各1个。磁盘块大小为1KB,每个索引指针占4B。若某文件的索引结点已在内存中,则把该文件偏移量(按字节编址)为 1234和 307400 处所在的磁盘块读入内存,需访问的磁盘块个数分别是(B)
A.1,2 B.1,3 C.2,3 D.2,4
答:注意索引结点存的是指针,一级索引就是根据这个指针找一级索引表,根据一级索引表的内容访问磁盘。而直接索引指针存放的就是数据的地址
如上图所示,一级索引需根据索引指针先访问一次一级索引表(存在磁盘中)再根据表内容第二次访问磁盘
10个直接索引指针指向的数据块大小为10×1KB=10KB;
每个索引指针占4B,则每个磁盘块可存放1KB/4B=256个索引指针,索引指针指向的数据块大小为256×1KB=256KB;
二级索引指针指向的数据块大小为256×256×1KB=216=64MB。
按字节编址,偏移量为1234时,因为1234B<10KB,则由直接索引指针可得到其所在的磁盘块地址。然后再根据磁盘块地址访问。要注意的是文件的索引结点已在内存中即直接索引指针也在内存中,访问直接索引指针访问的是内存而不是磁盘,故仅需1次访盘即可。
偏移量为307400时,因为10KB+256KB<307400<64MB,可知该偏移量的内容在二级索引指针所指向的某个磁盘块中,索引结点已在内存中,先根据索引结点的指针一次访盘访问一级索引表,再根据一级索引表的内容二次访盘访问二级索引表,最后根据二级索引表的内容即文件的真正地址三次访盘取得数据
9.文件系统用位图法表示磁盘空间的分配情况,位图存于磁盘的32~127号块中,每个盘块占1024B,盘块和块内字节均从0开始编号。假设要释放的盘块号为40962,则位图中要修改的位所在的盘块号和块内字节序号分别是©
A.81、1 B.81、2 C.82、1 D.82、2
答:409612/(1024*8)=50 409612%(1024*8)=12
除后取整为50说明它相对起始块偏移了五十个块,块号为32+50=82
如果取整为1块号为32+1,取整为2块号为32+2,建议试一下保险
取模为12,12是求得的位号,而问的是字节序号,1字节为8位,块内字节又从0开始所以它的块内字节序号为1
10.某文件系统的簇和磁盘扇区大小分别为1KB和512B。若一个文件的大小为1026B,则系统分配给该文件的磁盘空间大小是(D)
A.1026B B.1536B C.1538B D.2048B
答:绝大多数操作系统为改善磁盘访问时间,以簇为单位进行空间分配,该文件大小为1026B>1024B=1KB,故分配给其两个簇的大小,即2048B。
簇:由若干个连续的磁盘块组成
11.某文件系统中,针对每个文件,用户类别分为4类:安全管理员、文件主、文件主的伙伴、其他用户;访问权限分为5类:完全控制、执行、修改、读取、写入。若文件控制块中用二进制位串表示文件权限,为表示不同类别用户对一个文件的访问权限,则描述文件权限的位数至少应为(D)
A.5 B.9 C.12 D.20
答:可以把用户访问权限抽象成一个矩阵,行代表用户,列代表访问权限。这个矩阵有4行5列,1代表tue,0代表 false,所以需要20位,选D
可能会误认为4*5=20而25=32所以用5位就够了
其实不然,如果20位的话那是一类用户只有一个权限的时候,而比如"其他用户"可能同时会有修改、读取、写入的权限那你用20位怎么表示这个状态?
12.若文件f1的硬链接为f2,两个进程分别打开f1和f2,获得对应的文件描述符为fd1和fd2,则下列叙述中,正确的是(B)
I.f1和f2的读写指针位置保持相同 Ⅱ.f1和f2共享同一个内存索引结点
Ⅲ.fd1和fd2分别指向各自的用户打开文件表中的一项
A.仅Ⅲ B.仅ⅡⅢ C.仅I、Ⅱ D.I、Ⅱ和Ⅲ
答:硬链接各个用户目录项指向同一索引结点,索引结点指向文件,所以f1和f2共享一个内存索引结点
硬链接在用户看来好像是自己创建的文件一样,如甲可读文件头同时乙读文件尾,所以读写指针不可能一样。
13.某磁盘文件系统使用链接分配方式组织文件,簇大小为4KB。目录文件的每个目录项包括文件名和文件的第一个簇号,其他簇号存放在文件分配表FAT中。
(1)假定目录树如下图所示,各文件占用的簇号及顺序如下表所示,其中dir、dir1是目录,file1、file2是用户文件。请给出所有目录文件的内容。
答:两个目录文件的dir和dir1的内容如下
注意目录项只包括文件的第一个簇号
(2)若FAT的每个表项仅存放簇号,占2个字节,则FAT的最大长度为多少字节?该文件系统支持的文件长度最大是多少?
答:FAT即文件分配表,簇号占2个字节即16bit,全1时是最大表项数即FAT表中最多允许216个表项。
一个FAT文件最多含有216个簇(表项全不为空时),而一个簇号占2个字节,所以FAT长度=216*2B=128KB
FAT即文件分配表,FAT的最大长度即这个表的最大长度就等于多少个表项*每个表项的长度
文件的最大长度就等于一个FAT文件可表示的最大簇数*一个簇的大小即216 * 4KB=256MB
(3)系统通过目录文件和FAT实现对文件的按名存取,说明file1的106、108两个簇号分别存放在FAT的哪个表项中。
答:FAT的每个表项存放的是下一个簇号(题目说是链接分配),所以file1的簇号106存放在FAT的100号表项里,而簇号108存放在FAT的106号表项里
(4)假设仅FAT和dir目录文件已读入内存,若需将文件dir/dir1/file1的第5000个字节读入内存,则要访问哪几个簇?
答:先在dir目录文件里找到dirl的簇号,然后读取48号簇,得到dirl目录文件,接着找到file1的第一个簇号,据此在FAT里查找fiel的第5000B所在的簇号,最后访问磁盘中的该簇。
因此,需要访问目录文件dirl所在的48号簇,及文件flel的106号簇(5000B>簇大小4KB所以访问第二个簇)。
14.在某个文件系统中,每个盘块为 512 字节,文件控制块占 64 个字节,其中文件名占 8 个字节。如果索引结点编号占 2 个字节,对一个存放在磁盘上的 256 个目录项的目录,试比较引入索引结点前后,为找到其中一个文件的FCB,平均启动磁盘的次数。
答::引入索引节点前,每个目录项中存放的是对应文件的 FCB,故 256 个目录项的目录总共需要占用 256×64/512=32 个盘块。故在该目录中检索到一个文件平均启动磁盘次数为 (1+32)/2=16.5
引入索引节点后,每个目录项中只需存放文件名和索引节点的编号,因此 256 个目录项的目录总共需要占用 256×(8+2)/512=5 个盘块。因此,找到匹配的目录项平均需要启动 3 次磁盘;而得到索引结点编号后还需启动磁盘将对应文件的索引结点读入内存,故平均需要启动磁盘 4 次。
1.I/O设备:可以将数据输入到计算机或者可以接收计算机输出数据的外部设备
2.I/O控制器:CPU可控制I/O控制器,由I/O控制器控制设备
3.IO控制方式:即用什么样的方式来控制I/O设备的数据读/写
4.I/O软件层次
用户发出I/O请求系统从上到下处理(一定要记住这个顺序可能考选择)
助记:俩软件(先用户再设备),俩程序(先设备再中断)
5.I/O核心子系统:上图中设备独立性软件、设备驱动程序和中断处理程序属于OS的内核部分即I/O核心子系统。提供的服务有以下几种
6.高速缓存与缓冲区:缓冲区是一个存储区域,一般用内存作为缓冲区
缓冲区的作用
单缓冲:操作系统在主存中为其分配一个缓冲区(通常为一个块大小)
双缓冲:操作系统在主存中为其分配两个缓冲区
循环缓冲区:将多个大小相等的缓冲区链接成一个循环队列
缓冲池:由系统中共用的缓冲区组成
7.设备的分配与回收
8.假脱机(SPOOLing)技术:用软件的方式模拟脱机技术,可将独占式设备改造成共享式设备
1.下列关于 SPOOLing的叙述中,不正确的是(D)
A. SPOOLing系统中必须使用独占设备
B. SPOOLing系统加快了作业执行的速度
C. SPOOLing系统使独占设备变成了共享设备
D. SPOOLing系统利用了处理器与通道并行工作的能力
答:SPOOLing是操作系统中采用的一种将独占设备改造为共享设备的技术,它有效减少了进程等待读入/读出信息的时间,加快了作业执行的速度。
不过,无论有没有通道,SPOOLing系统都可以运行,因此D选项是不对的。
2.在如下几种类型的系统中,(B)采用忙等待I/O是合适的。
a.专门用来控制单IO设备的系统
b.运行一个单任务操作系统的个人计算机
C.作为一个负载很大的网络服务器的工作站
A. a B. a、b C. b、c D. c
答:忙等待I/O就是CPU等待I/O的完成的时候,进程不能继续执行。
对于a和b只有单个设备或单个任务,执行I/O时OS不会处理其它事情
而对于c负载很大有个I/O请求就CPU就停止工作了显然是不合理的,必须让CPU具有并行处理的能力
3.在采用 SPOOLing技术的系统中,用户暂时未能打印的数据首先会被送到(A)
存储起来。
A.磁盘固定区域 B.内存固定区域
C.终端 D.打印机
答:采用 SPOOLing技术的系统中,用户的打印数据首先由内存经过缓冲区传递至输出井暂存,等输出设备(打印机)空闲时再将输出井中的数据经缓冲区传递到输出设备上。而输出井通常是在磁盘上开辟的一块固定存储区。
4.下列有关设备独立性的说法中,正确的是(B)。
A.设备独立性是指I/O设备具有独立执行I/O功能的一种特性
B.设备独立性是指用户程序独立于具体物理设备的一种特性
C.设备独立性是指能够实现设备共享的一种特性
D.设备独立性是指设备驱动程序独立于具体物理设备的一种特性
答:设备独立性是指用户程序独立于具体物理设备的一种特性。其他选项都不是设备独立性的描述。
D选项中设备驱动程序是不可能独立于具体物理设备的,因为驱动程序就是为具体物理设备而专门定制的。
5.通道又称I/O处理器,用于实现(A)之间的信息传输
A.内存与外设 B.CPU与外设 C.内存与外存 D.CPU与外存
答:在设置了通道后,CPU只需向通道发送一条I/O指令。通道在收到该指令后,便从内存中取岀本次要执行的通道程序,然后执行该通道程序。
仅当通道完成规定的I/O任务后,才向CPU发出中断信号。因此,通道用于完成内存与外设的信息传输。
6.在 SPOOLing系统中,用户进程实际分配到的是(B)
A.用户所要求的外设 B.内存区,即虚拟设备
C.设备的一部分存储区 D.设备的一部分空间
答:通过 SPOOLing技术可将一台物理设备转换为多台虚拟设备,允许多个用户共享一台物理设备。所以在 SPOOLing系统中并不是将物理设备分配给用户进程,而仅仅是虚拟设备。
如采用SPOOLing技术将磁盘的一部分作为公共缓冲区以代替打印机,用户对打印机的操作实际上是对磁盘的存储操作。
7.下列关于设备驱动程序的叙述中,正确的是(A)
I.与设备相关的中断处理过程是由设备驱动程序完成的
Ⅱ.由于驱动程序与I/O设备(硬件)紧密相关,故必须全部用汇编语言书写
Ⅲ.磁盘的调度程序是在设备驱动程序中运行的
Ⅳ.一个计算机系统配置了2台同类绘图机和3台同类打印机,为了正确驱动这些设备,系统应该提供5个设备驱动程序
A.仅I、Ⅲ B.仅Ⅱ、Ⅲ C.仅I、Ⅲ、Ⅳ D.I、Ⅱ、III、Ⅳ
答:Ⅰ正确,设备驱动程序的低层部分在发生中断时调用,以进行中断处理。
II错误,由于驱动程序与硬件紧密相关,因而其中的一部分必须用汇编语言书写,其他部分则可以用高级语言(如CC++)来书写。
Ⅲ.正确
Ⅳ.错误,因为绘图机和打印机属于两种不同类型的设备,系统只要按设备类型配置设备驱动程序即可,即应提供2个设备驱动程序。
8.(A)是操作系统中采用的以空间换取时间的技术。
A.SPOOLing技术 B.虚拟存储技术 C.覆盖与交换技术 D.通道技术
答:SPOOLing技术是操作系统中用的以空间换取时间的技术(用内存换I/O速度)
虚拟存储技术和覆盖与交换技术是为了扩充内存容量,它们都属于以时间换空间的技术(处理需要时间但处理后空间变大了)
而通道技术是为了提高设备速度,增加了硬件,不属于这两者中的任何一种
答:单缓冲,当上一个磁盘块从缓冲区读入用户区完成时下一个磁盘块才能开始读入。如下图所示
所以最短时间为100+5+100+5+90=300
10.下列关于 SPOOLing技术的叙述中,错误的是(D)
A.需要外存的支持
B.需要多道程序设计技术的支持
C.可以让多个作业共享一台独占设备
D.由用户作业控制设备与输入输出井之间的数据传送
答:SPOOLing是利用专门的外围控制机,将低速IO设备上的数据传送到高速磁盘上;或者相反。
SPOOLing的意思是外部设备同时联机操作,又称为假脱机输入输出操作,是操作系统中采用的一项将独占设备改造成共享设备的技术。高速磁盘即外存,A正确。
SPOOLing技术需要输入输出操作,单道批处理系统无法满足,B正确。
SPOOLing技术实现了将独占设备改造成共享设备的技术,C正确。
设备与输入出井之间数据的传送是由系统实现的,D错误。