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

上传人:11****ws 文档编号:2319562 上传时间:2019-05-06 格式:DOC 页数:16 大小:198.50KB
下载 相关 举报
操作系统原理教程(第2版)[张丽芬][习题解答].doc_第1页
第1页 / 共16页
操作系统原理教程(第2版)[张丽芬][习题解答].doc_第2页
第2页 / 共16页
操作系统原理教程(第2版)[张丽芬][习题解答].doc_第3页
第3页 / 共16页
操作系统原理教程(第2版)[张丽芬][习题解答].doc_第4页
第4页 / 共16页
操作系统原理教程(第2版)[张丽芬][习题解答].doc_第5页
第5页 / 共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,用来制约 M7的运行;S38,S78 用来制约

2、 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);V(S38); ENDENDPROCESS

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

4、);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); /无写者时,多个读者可以同时读.read data;p(rmutex);-readcount

5、;if(readcount=0 then v(rwmutex);end if;v(rmutex);endwriter: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)p(z); /其他读进程在 z上排队p(x); /一个读进程与一个写进程在 x上竞争p(rmu

6、tex); /读进程互斥访问 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(writecount=1) p(x); /一个写进程与一个读进程在 x上竞争v(wmutex);p(rwmutex); /其他写进程在 rwmut

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

8、x);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-20P1/剩余 P2/剩余 P3/剩余 系统剩余1 3/5 72 2/4 53 4(不安全)4 5/3 35 2(不安全)6 (5+3)/0 0(8)107 4/3 48 (2+2)/2 29(1)

9、 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)当前系统是安全的。判断系统是否安全,只要检查系统剩余资源向量能否对各进程的剩余请求向量找到一个进程完成序列,当按照这个序列为各进程分配资源时,各进程都能成功完成。若能找到,则系统是安全的,否则,为不安全。先找到 p0, 因为 p0已

10、满足最大资源请求,它可以完成,释放其占有的资源,使系统剩余资源向量为(1 5 1 4)之后,系统剩余资源向量(1 5 1 4) ,可满足进程 p2, 使 p2 可以完成,释放其占有的资源,使系统剩余资源向量为(2 8 6 8) 。之后无论选哪一个进程都可成功完成。故找到的进程完成序列可为:p0,p2,p4,p3,p1; 或 p0,p2,p3,p1,p4 等,故系统是安全的。(3)因系统剩余可用向量为(1502) ,p2 的剩余请求向量为(1002) ,即(1502)(1002) 。故,当 p2提出(1001)请求时,能满足。进程完成序列:p0,p2,p4,p3,p10 0 1 21 7 5 02 3 5 60 6 5 20 6 5 60 0 1 21 0 0 01 3 5 40 6 3 20 0 1 40 0 0 00 7 5 01 0 0 20 0 2 00 6 4 2

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

当前位置:首页 > 实用文档资料库 > 策划方案

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。