整理操作系统的习题 第三版 西安电子科技大学出版社

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

操作系统整理习题
第一章
例:设内存中有三道程序A、B、C,它们按A、B、C的优先次序执行。

它们的计算和I/O操作的时间如下表所示(单位:ms):

假设三道程序使用相同设备进行I/O操作,即程序以串行方式使用设备,试画出单道运行和多道运行的时间关系图(调度程序的执行时间忽略不计)。

在两种情况下,完成这三道程序要花多少时间?
分析:若采用单道方式运行这三道程序,则运行次序为A 、 B 、 C ,总的时间为:30+40+10+60+30+10+20+40+20=260ms若采用多道方式运行,其程序运行总时间为:190ms。

第二章
1、P82 25题。

我们为临界资源设置一把锁W,当W=1时表示关锁,W=0时表示锁已打开。

试写出开锁原语和关锁原语,并利用它们实现互斥。

解:关锁原语LOCK(W):While (W=1) DO NO-OP; W:=1;开锁原语UNLOCK(W): W:=0在利用关锁原语和开锁原语实现进程互斥时,可将临界区CS放在其间,即:LOCK(W);CSUNLOCK(W);注意:这里的开锁原语和关锁原语存在“忙等”问题。

2、P83 28:在测量控制系统中的数据采集任务时,把所采集的数据送往一单缓冲区;计算任务从该单缓冲区中取出数据进行计算。

试写出利用信号量机制实现两任务共享单缓冲区的同步算法。

解:算法描述如下:
Var empty,full:semaphore:=1,0;
Buffer:data;
Begin
Parbegin
Collect:begin
Repeat
……
collect data in nextp;
……
wait(empty);
buffer:=nextp;
signal(full);
until false;
end
Computer:begin
Repeat
Wait(full);
nextc:= buffer;
signal(empty);
compute in nextc;
until false;
end
parend
end
4、某寺庙,有小和尚、老和尚若干。

有一水缸,由小和尚提水入缸供老和尚引用。

水缸可容10桶水,水取自同一井中。

水井径窄,每次只能容一个桶取水。

水桶总数为3个。

每次入、取缸水仅为1桶,且不可同时进行。

试给出有关取水、入水的算法描述。

解:本题中需设置5个信号量:bucket对应临界资源水桶,初值为3;mutex2用来对水缸进行互斥操作,初值为1;full表示水缸中可以使用的水,初值为0;empty表示缸中还可入水的容量,初值为10;mutex1用来保证互斥地使用水井,初值为1。

semaphore bucket=3,mutex=1,full=0,empty=10,mutex2=1;
little-monk(){/*小和尚入水算法*/
while (1){
P(empty);
P(bucket);
P(mutex1);
从水井中打水;
V(mutex1);
P(mutex2);
倒水入缸;
V(mutex2);
V(full);
V(bucket);
}
}
old-monk(){/*老和尚取水算法*/
while (1){
P(full);
P(bucket);
P(mutex2);
从水缸中取水
V(mutex2);
V(empty);
从桶中倒水饮用;
V(bucket);
}
}
第三章
例2、设系统中仅有一类独占资源,进程一次只能申请一个资源,系统中多个进程竞争该类资源。

试判断下述哪些情况会发生死锁,为什么?(1)资源数为4,进程数为3,每个进程最多需要2个资源。

(2)资源数为6,进程数为2,每个进程最多需要4个资源。

(3)资源数为8,进程数为3,每个进程最多需要3个资源。

(4)资源数为20,进程数为8,每个进程最多需要2个资源。

解答:根据例1可知,第2种情况下可能发生死锁。

第四章
例1、某请求页式管理系统,用户编程空间有40个页面,每个200H个字节。

假定,某时刻用户页表中页号和物理块号对照表如下:
求虚地址0A3CH、223CH分别对应的物理地址。

解:由题意知,页面大小为200H。

逻辑地址0A3CH:页号5,页内地址003CH块号8,物理地址:8*200H+003CH=103CH逻辑地址223CH:页号17,页内地址003CH块号14,物理地址:14*200H+003CH=1C3CH
例2、有一矩阵为100行200列,即:int a[100][200]; 在一个虚存系统中,采用LRU算法,系统分给该进程5个页面来存储数据(不包含程序)。

设每页可存放200个整数,该程序要对整个数组初始化,数组存储时是按行存放的。

试计算下列两个程序各自的缺页次数(假定所有页都以请求方式调入)。

程序一:for (i=0; i <=99; i ++) for (j=0; j <=199; j++)a[i][j]=i*j;
程序二:for (j=0; j <=199; j ++)for (i=0; i <=99; i ++)a[i][j]=i*j;问:程序一和程序二的缺页次数分别是多少?解:矩阵a有100*200=20000个整数,每页存放200个整数,故一页可以存放一行数组元素。

系统分配给进程5个页面存放数据,假设程序已调入内存(因题目中没有提供与程序相关的数据,可以不考虑程序的调入问题),因此只需考虑矩阵访问时产生的缺页中断次数。

对于程序一,由于矩阵存放是按行存储,本程序对矩阵a的访问也是按行进行的,因此本程序依次将矩阵a的内容调入内存,每一页只调入一次,每一页都会产生一次缺页中断。

因此会产生100次缺页中断。

对于程序二,矩阵存放是按行存储,而本程序对矩阵a的访问是按列进行的。

当j=0时,内层循环的执行将访问矩阵a的所有元素,需要依次将矩阵a的100行调入内存,将产生100次缺页中断。

当j=1时,因留在内存中的是95、96、97、98、99行,仍将产生100次缺页中断。

后续循环,可以此类推。

由此可知,程序二将产生20000次缺页中断。

例3、在页式虚存管理系统中,假定驻留集为m个页(初始所有页均为空),在长为p的引用串中具有n个不同页号(n>m),对于FIFO、LRU两种置换算法,试给出页故障数(缺页次数)的上限和下限,说明理由。

解:对于FIFO、LRU置换算法,缺页次数上限均为p,下限均为n。

发生缺页中断的原因是当前访问的页不在内存中,需要通过缺页中断将缺页调入内存。

无论采用怎样的置换算法,n个不同页面在进入内存时都至少要发生一次页故障(缺页中断),总共发生n次缺页中断。

虽然不同页面数为n,一般情况下,n小于页面引用串的长度p,但驻留集(即分配给进程的物理块数)m<n,所以无法保证某页进入内存后不会被调出内存,而只有当被访问页面在内存中时才不会发生缺页中断,所以最坏情况为每当访问一个页面时,该页都不在内存(若为重复访问,则该页在上次访问后又被调出内存),所以共发生p次缺页中断。

例4、在一个请求页式存储管理方式中,进程P共有5页,访问串为:3,2,1,0,3,2,4,3,2,1,0,4时,试采用LRU置换算法,计算当分配给该进程的物理块数分别是3和4时,访问过程中发生的缺页次数和缺页率。

比较所得的结果。

解:分配给该进程的页框数为3时,缺页次数为10,缺页率为10/12=82.7分配给该进程的页框数为4时,缺页次数为8,缺页率为8/12=66.7%过程略。

从上述结果可以看出,对于LRU算法来说,分配给进程的页面数越多,产生的缺页次数越少。

例5、在一个请求分页系统中,采用FIFO页面置换算法时,假如一个作业的页面走向为4、3、2、1、4、3、5、4、3、2、1、5,当分配给该作业的物理块数分别为3和4时,试计算在访问过程中所发生的缺页次数和缺页率,并比较所得的结果。

解:分配给该进程的页框数为3时,缺页次数为9,缺页率为9/12=75%
分配给该进程的页框数为4时,缺页次数为10,缺页率为10/12=82.7%
过程略。

在FIFO页面置换算法中,有时出现分配的物理块数增多缺页率反而升高的现象,称为Belady现象。

例6:(东南大学)现有一请求分页的虚拟存储器,内存最多容纳4个页面,对于下面的引用串:1,2,3,4,2,1,5,6,2,1,2,3,7,6,3,2,1,2,3,6,应用下面的页面置换算法,计算各会出现多少次缺页中断。

注意,所给定的页块初始均为空,因此,首次访问一页时就会发生缺页中断。

(1)LRU;
(2)FIFO;
(3)Optimal。

解答:过程略。

FIFO:14次缺页中断
LRU:10次缺页中断
Optimal:8次缺页中断
1、请求分页管理系统中,假设某进程的页表内容如下表所示:
页面大小为4KB,一次内存的访问时间是100ns,一次快表(TLB)的访问时间是10ns,处理一次缺页的平均时间为108ns(已含更新
TLB和页表的时间),进程的驻留集大小固定为2,采用最近最少使用置换算法(LRU)和局部淘汰策略。

假设:①TLB初始为空②地址转换时先访问TLB,若TLB未命中,再访问页表(忽略访问页表之后的TLB更新时间);③有效位为0表示页面不在内存,产生缺页中断,缺页中断处理后,返回到产生缺页中断的指令处重新执行。

设有虚地址访问序列2362H、1565H、25A5H,请问:(1)依次访问上述三个虚地址,各需多少时间?给出计算过程。

(2)基于上述访问序列,虚地址1565H的物理地址是多少?请说明理由。

解:(1)页面大小4K:01000000000000=1000H2362H:页号2,页内地址362H。

由页表知,此页在内存。

访问时间:10 ns +100 ns +100 ns =210ns 1565H: 页号1,页内地址565H。

由页表知,此页不在内存。

访问时间:10 ns +100 ns +108ns+100 ns≈108 ns25A5H: 页号2,页内地址5A5H。

由页表项已放入快表。

访问时间:10 ns +100 ns =110ns(2) 1565H: 页号1,页内地址565H。

此页不在内存,把0号页面换出,1号页面放入101H页框,所以物理地址为101565H。

2、某基于动态分区存储管理的计算机,其主存容量为55M(初始空间),采用最佳适配(best fit)算法,分配和释放的顺序为:分配15M,分配30M,释放15M,分配8M,分配6M,此时主存最大空闲分区的大小是(B)A7MB9MC10MD15M
3、某计算机采用二级页表的分页存储管理方式,按字节编制,页大小为210字节,页表项大小为2字节,逻辑地址结构为:
逻辑地址空间大小为2页,则表示整个逻辑地址空间的页目录表中包含表项的个数至少是(B)A64B128C 256D512
4、设某计算机的逻辑地址空间和物理地址空间均为64KB,按字节编址。

若某进程最多需要6页(Page)数据存储空间,页的大小为1KB,操作系统采用固定分配局部转换策略为此进程分配4个页框(Page Frame)。

当该进程执行到时刻260时,要访问逻辑地址为17CAH的数据。

请回答下列问题:(1)该逻辑地址对应的页号是多少?(2)若采用先进先出(FIFO)转换算法,该逻辑地址对应的物理地址是多少?要求给出计算过程。

(3)若采用时钟(Clock)转换算法,该逻辑地址对应的物理地址是多少?要求给出计算过程。

(设搜索下一页的指针沿顺时针方向移动,且当前指向2号页框,示意图如下)
解:17CAH=(0001 0111 1100 1010)2(1)页大小为1K,所以页内偏移地址为10位,于是前6位是页号,所以第一问的解为:5;(2)FIFO,则被转换的页面所在页框为7,所以对应的物理地址为(0001 1111 1100 1010)2=1FCAH(3)Clock,则被转换的页面所在页框为2,所以对应的物理地址为(0000 1011 1100 1010)2=0BCAH
6、在某页式虚拟系统中,假定访问内存的时间是10ms,平均缺页中断处理为25ms,平均缺页中断率为5%,试计算在该虚存系统中,平均有效访问时间是多少?
解:若要访问的页面在内存中,一次访问的时间是:10ms+10ms=20ms;如果不在内存,所花的时间是:10ms(问内存页表)+25ms(中断
处理)+10ms(访问内存页表)+10ms(访问内存)=55ms 。

所以平均有效访问时间为: 20ms × (1-5%)+55ms ×5%=21.75ms
第六章
例1:假定盘块的大小为1KB ,硬盘的大小为500MB 。

采用显式链接分配方式时,其FA T 需占用多少存储空间?如果A 占用硬盘的第11、12、16、14四个盘块,试画出文件A 中各盘块间的链接情况及FAT 的情况。

解:由题意知,该硬盘共有500K 个盘块,故FAT 中有500K 个表项;如果盘块从0开始编号,为了能保存最大盘块号,该FAT 的表项最少需要19位。

将它扩展为半个字节的整数倍后,可知每个FA T 表项需20位,即2.5个字节。

因此,FA T 需占用的存储空间大小为:2.5*500KB=1250KB 文件A 中各盘块间的链接情况及FAT 的情况如下图所示:
FCB A FA
T
例2:存放在某个磁盘上的文件系统,采用混合索引分配方式。

其FCB 中共有13个地址项,第0~9个地址项为直接地址,第10个地址项为一次间接地址,第11
个地址项为二次间接地址,第12个地址项为三次间接地址。

如果每个盘块的大小为512字节,盘块号需要3个字节来描述,而
每个盘块最多存放170个盘块地址,
问:1该文件系统允许文件的最大长度是多少?2将文件的字节偏移量3假设某个文件的FCB 解:(1)直接地址:10块一次间接地址:170块二次间接地址:170*170*170块文件最大长度:10+170+170*170+170*170*170=2471040KB (2)5000/512=9…392 10<29<10+170故可从FCB 的第10个地址项iaddr(10)得到一次间接块地址,并从一次间址块的第193个字节)中获得相应的物理块号,块内偏移量为152。

150000/512=292…496 10+170《292《10+170+170*170…112故可以从FCB 的第11个地址项,即二次间址项中得到二次间址块的地址,并从二次间址块的第0112项中获得对应的物理块号,块内偏移量为496。

(3)最少1次,最多4次。

第五章例1、一个SPOOLing 系统由输入进程I 、用户进程P 、输出进程O 、输入缓冲区和输出缓冲区组成。

进程I 通过输入缓冲区为进
程P 输入数据,进程P 的处理结果通过输出缓冲区交给进程O 输出。

进程间数据交换以等长度的数据块为单位,这些数据块均存储在同一个磁盘上。

因此,SPOOLing 系统的数据块通信原语保证始终满足:I+O≤max (3-1)式中,max 为磁盘最大容量(以数据块为单位),I 为磁盘上输入数据块总数,O 为磁盘上输出数据块总数。

设SPOOLing 系统运行时:
1只要有输入数据,进程I 终究会将它放入输入缓冲区;2只要输入缓冲区有数据块,进程P 终究会读入、处理并产生结果数据写到输出缓冲区;3只要输出缓冲区有数据块,进程O 终究会输出它。

请说明该SPOOLing 系统在什么情况下死锁,请说明如何修正约束条件避免死锁,同时仍允许输入数据和输出数据块均存储在同一个磁盘上。

分析:系统的工作流程:首先,进程I 在输入数据时,首先判断当前磁盘有无空闲缓冲区,若有则进行数据输入操作,无则等待;进程P 首先判断输入缓冲区有无数据,有则处理,并将结果输出到输出缓冲区,无则等待;进程O 根据输出缓冲区的情况,决定是否进行输出操作。

因此整个系统实际上包含了两组生产者和消费者。

这里由于输入缓冲区和输出缓冲区是使用的同一块磁盘区域,所以进程I 和进程O 申请的是同类资源,则可以将进程I 和进程O 分为同一个进程集合。

解答:在输入数据块数I≥max ,输出数据块数O=0时,进程I 和进程O 均处于阻塞状态。

此时,P 在处理一块已经读入内存的数据,当
11
12 13 14 15
16
它处理完毕,它要把数据写入磁盘。

此时,磁盘已满,因此P无法写入,进入阻塞状态,从而导致了死锁的产生。

要使死锁不会产生,此时必须保证磁盘上至少有一块空间供P进程输出。

因此,约束条件应为:I+O≤max-1
该限制可以确保任一时刻磁盘中的空闲块至少有一个可用于输出缓冲区,从而确保进程P和进程O可以继续运行。

例2、假定有一个具有200个磁道(编号为0到199)的移动头磁盘,在完成了磁道125处的请求后,当前正在磁道143处为一个请求服务。

若请求队列以FIFO次序存放,即86,147,91,177,94,150,102,175,130。

对下列每一个磁盘调度算法,若要满足这些要求,则总的磁头移动次数为多少?FCFS SSTF
SCAN CSCAN
解:不同的磁道访问序列为:(1)86,147,91,177,94,150,102,175,130(2)147,150,130,102,94,91,86,175,177(3)147,150,175,177,130,102,94,91,86(4)147,150,175,177,86,91,94,102,130总的磁头移动次数分别为:(1)565(2)162(3)125(4)169
例3、假定磁盘转速为20ms/圈,磁盘格式化时每个磁道被划分成10个扇区,今有10个逻辑记录(每个记录的大小刚好与扇区大小相等)存放在同一磁道上,处理程序每次从磁道读出一个记录后要花4ms进行处理,现要求顺序处理这10个记录,若磁头现在正处于首个逻辑记录的始点位置,请问:
1按逆时针方向安排10个逻辑记录(磁盘顺时针方向转),处理程序处理完这10个记录所花费的时间是多少?2按最优化分布重新安排这10个逻辑记录,写出记录的安排,并计算出所需要处理的时间。

解:(1)由题意知,读一个逻辑记录需2ms,处理需4ms,系统处理完一个逻辑记录后将磁头转到下一个逻辑记录的始点需要16ms,从而可算出处理程序处理这10条记录所需的时间:6+9*(16+6)=204ms
(2)
1
8
5
2
9
6*10=60ms
例4、为100us,将缓冲区中的数据传送到用户区的时间M为50us,而CPU 对这一块数据进行计算的时间C为50us。

这样,系统对每一块数据的处理时间为(A)(3);如果将单缓冲改为双缓冲,则系统对每一块数据的处理时间为(B)(2)。

A,B:(1)50us; (2)100us; (3)150us; (4)200us; (5)250us。

相关文档
最新文档