操作系统原理教程(第2版)[张丽芬][习题解答]

上传人:wt****50 文档编号:37276838 上传时间:2018-04-13 格式:DOC 页数:16 大小:198.50KB
返回 下载 相关 举报
操作系统原理教程(第2版)[张丽芬][习题解答]_第1页
第1页 / 共16页
操作系统原理教程(第2版)[张丽芬][习题解答]_第2页
第2页 / 共16页
操作系统原理教程(第2版)[张丽芬][习题解答]_第3页
第3页 / 共16页
操作系统原理教程(第2版)[张丽芬][习题解答]_第4页
第4页 / 共16页
操作系统原理教程(第2版)[张丽芬][习题解答]_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《操作系统原理教程(第2版)[张丽芬][习题解答]》由会员分享,可在线阅读,更多相关《操作系统原理教程(第2版)[张丽芬][习题解答](16页珍藏版)》请在金锄头文库上搜索。

1、1操作系统 第 2 章 2-9. (1) xn 时,每个进程最多可以请求个该类资源nm当 m=n 时,每个进程最多可以请求 1 个该类资源当 mn 时,每个进程最多可以请求(m+n-1)/n 个该类资源)3-15 解答: 这是进程之间的同步问题。M2、M3 和 M4 必须在接收到 M1 的消息后才能运行。 同理,M6 必须在 M2 和 M3 之后运行,M7 必须在 M4,M5 之后运行,M8 必须在 M3、M7 之后运行。如何保证呢?需设置相应的信号量来保证:S12,S13,S14, 用来制约 M2、M3 和 M4 的运行;S26,S36,用来制约 M6 的运行;S47,S57,用来 制约 M

2、7 的运行;S38,S78 用来制约 M8 的运行。 各进程的制约关系描述如下。S12,S13,S14,S26,S36,S47,S57,S38,S78:semaphore; S12:=0;S13:=0;S14:=0;S26:=0;S36:=0;S47:=0;S57:=0;S38:=0;S78:=0; COBEGINPROCESS M1: PROCESS M2:BEGIN BEGINV(S12); P(S12);V(S13); V(S26);V(S14); ENDENDPROCESS M3: PROCESS M4: BEGIN BEGIN6P(S13); P(S14);V(S36); V(S47

3、);V(S38); END ENDPROCESS M5: PROCESS M6: BEGIN BEGINV(S57); P(S26); END P(S36);END PROCESS M7: PROCESS M8 BEGIN BEGINP(S47); P(S38);P(S57); P(S78);V(S78); END END COEND3-16. 叉子是临界资源,在一段时间内只允许一个哲学家使用。一个信号量表示 一把叉子,五个信号量构成信号量数组,这些信号量的初值为 1。int fork0=fork1=fork4=1; 第 i 个哲学家所执行的程序:do P(mutex);P(forki);P(

4、fork(i+1)mod5);V(mutex);吃饭V(forki);V(fork(i+1)mod5); while(1);3-17. (1)公平竞争(无写者时,读者仍遵循多个读者可以同时读) rmutex 互斥共享 readcount; rwmutex 读写互斥,写写互斥; 读写进程在 z 上排队。int rmutex=1,rwmutex=1,readcount=0;7reader: beginp(z); /读写进程在 z 上排队。p(rmutex);if(readcount=0) then p(rwmutex);end if+readcount;v(rmutex);v(z); /无写者时,

5、多个读者可以同时读.read data;p(rmutex);-readcount;if(readcount=0 then v(rwmutex);end if;v(rmutex); end writer: beginp(z); /读写进程在 z 上排队。p(rwmutex);write data;v(rwmutex);v(z); end(2)写者优先int readcount,writecount; semaphore rmutex=1,wmutex=1,rwmutex=1,z=1,x=1; reader: /当来了一个写进程时,通过 p(x)禁止其后读进程读,直到写进程写完为止。while(1

6、) p(z); /其他读进程在 z 上排队 p(x); /一个读进程与一个写进程在 x 上竞争 p(rmutex); /读进程互斥访问 readcount写z读 写 写 读 读 读 写8+readcount; if(readcount=1) p(rwmutex); v(rmutex); v(x); v(z); read data; /临界区p(rmutex); -readcount; if(readcount=0) v(rwmutex); v(rmutex);Writer:while(1) p(wmutex); /写进程互斥访问 writecount+writecount; if(writec

7、ount=1) p(x); /一个写进程与一个读进程在 x 上竞争v(wmutex); p(rwmutex); /其他写进程在 rwmutex 上排队 write data; /临界区v(rwmutex); p(wmutex); -writecount; if(writecount=0) v(x); /写进程都写完时,通过 v(x)允许读进程读v(wmutex);附加题: 读者优先,规定仅允许 5 个进程同时读,怎样修改程序?解:增加一个资源信号量 s,初值为 5。int s=5; Reader:beginrwmutexx z读 读 读 读写读写 写9P(rmutex); readcount=

8、readcount+1; if(readcount=1)then P(rwmutex); V(rmutex); P(s); read_file(); V(s); P(rmutex); readcount=readcount-1; if(readcount=0)then V(rwmutex); V(rmutex); endwriter: beginp(rwmutex);write data;v(rwmutex); end3-18int s1=0, s2=n; 顾客进程:P(s2); V(s1); 坐椅子等理发理发师进程:P(s1); 给顾客理发V(s2)3-19 (2)和(4)会发生死锁。3-2

9、0 P1/剩余P2/剩余P3/剩余系统剩余 13/57 22/45 34(不安全) 45/33 52(不安全) 6(5+3)/00(8)1074/34 8(2+2)/22 9(1)P1 占有 5 个资源,剩余 3 个资源请求。 P2 占有 2 个资源,剩余 4 个资源请求。 P3 占有 0 个资源,剩余 7 个资源请求。 系统剩余 3 个资源。 (2)P1 的请求最先满足。进程完成序列:P1,P2,P3。3-21 (1)最大需求矩阵: 分配矩阵: 剩余请求矩阵:Max = Allocation = Need = 剩余资源向量:Available=(1 5 0 2)(2)当前系统是安全的。 判断

10、系统是否安全,只要检查系统剩余资源向量能否对各进程的剩余请求向量找 到一个进程完成序列,当按照这个序列为各进程分配资源时,各进程都能成功完 成。若能找到,则系统是安全的,否则,为不安全。 先找到 p0, 因为 p0 已满足最大资源请求,它可以完成,释放其占有的资源, 使系统剩余资源向量为(1 5 1 4) 之后,系统剩余资源向量(1 5 1 4) ,可满足进程 p2, 使 p2 可以完成,释 放其占有的资源,使系统剩余资源向量为(2 8 6 8) 。 之后无论选哪一个进程都可成功完成。 故找到的进程完成序列可为:p0,p2,p4,p3,p1; 或 p0,p2,p3,p1,p4 等, 故系统是安

11、全的。 (3)因系统剩余可用向量为(1502) ,p2 的剩余请求向量为(1002) ,即 (1502)(1002) 。故,当 p2 提出(1001)请求时,能满足。进程完成序列:p0,p2,p4,p3,p10 0 1 2 1 7 5 0 2 3 5 6 0 6 5 2 0 6 5 60 0 1 2 1 0 0 0 1 3 5 4 0 6 3 2 0 0 1 40 0 0 0 0 7 5 0 1 0 0 2 0 0 2 0 0 6 4 21112第 4 章 习题答案 4-14 内存有如下顺序排列的空闲块:10K,40K,20K,18K,7K,9K,12K 和 15K,有如下的请求序列:12K,

12、10K,9K。 (1)若采用首次适应法: 12K 的请求:将分配 40K 的空闲块, 40K 变为剩余的(40-12)K=28K,空闲 队列变为:10K,28K,20K,18K,7K,9K,12K 和 15K; 10K 的请求:将分配 10K 的空闲块,空闲队列变为: 28K,20K,18K,7K,9K,12K 和 15K; 9K 的请求:将分配 28K 的空闲块,空闲队列变为:(28-9) =18K,20K,18K,7K,9K,12K 和 15K; (2)若采用最佳适应法: 12K 的请求:将分配 12K 的空闲块,空闲队列变为: 10K,40K,20K,18K,7K,9K 和 15K; 1

13、0K 的请求:将分配 10K 的空闲块,空闲队列变为: 40K,20K,18K,7K,9K,12K 和 15K; 9K 的请求:将分配 9K 的空闲块,空闲队列变为: 40K,20K,18K,7K, 12K 和 15K; (3)若采用最坏适应法: 12K 的请求,将分配 40K 的空闲块,空闲队列变为: 10K,28K,20K,18K,7K,9K 和 15K; 10K 的请求:将分配 28K 的空闲块,空闲队列变为: 20K,18K,7K,9K,12K 和 15K; 9K 的请求:将分配 20K 的空闲块,空闲队列变为:10K,18K,11K, 18K,7K, 12K 和 15K。4-15 有

14、如下图所示的页表中的虚地址与物理地址之间的关系,即该进程分得 6 个内存块。页的大小为 4096。给出对应下面虚地址的物理地址:(1)20; (2) 5100; (3) 8300; (4) 47000.01234567 216043xx解: (1)虚地址 20 变为页号 0 和页内偏移 20由页号查页表得 0 页对应内存块号为 2 ,可计算得物理地址=块号*页的大小+页内偏移=2*4096+20=8212 (2)虚地址 5100 变为页号 1 和页内偏移 1004(5100/4096)13由页号查页表得 1 页对应内存块号为 1 ,可计算得物理地址=块号*页的大小+页内偏移=1*4096+10

15、04=5100 (3)虚地址 8300 变为页号 2 和页内偏移 108由页号查页表得 2 页对应内存块号为 6 ,可计算得物理地址=块号*页的大小+页内偏移=6*4096+108=24684 (4)虚地址 47000 变为页号 11 和页内偏移 1944117 页号越界4-16一个作业在执行过程中,按如下顺序依次访问各页,作业分得四个主存块, 问分别采用 FIFO、LRU 和 OPT 算法时,要产生多少次缺页中断?设进程开始运行时, 主存没有页面。页访问串顺序为:0 1 7 2 3 2 7 1 0 3 2 5 1 7 (1)FIFO0 1 7 2 3 2 7 1 0 3 2 5 1 7采用 FIFO 淘汰算法,产生 9 次缺页中断。(2)LRU0 1 7 2 3 2 7 1 0 3 2 5 1 7采用 LRU 算法时,产生 11

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号