操作系统试题第3章

操作系统试题第3章

ID:18328993

大小:244.00 KB

页数:81页

时间:2018-09-16

操作系统试题第3章_第1页
操作系统试题第3章_第2页
操作系统试题第3章_第3页
操作系统试题第3章_第4页
操作系统试题第3章_第5页
资源描述:

《操作系统试题第3章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第3章进程的同步与通信第3章进程的同步与通信3.2例题解析例3.2.1多道程序系统程序的执行失去了封闭性和再现性,因此多道程序的执行不需要这些特性,这种说法是否正确?解这种说法不正确。可以想象,如果一个程序在多道程序系统中,在相同的输入的情况下,多次执行所得结果是不同的,有谁还敢使用这个程序?因此,多道程序的执行也需要封闭性和再现性,只不过单道程序系统的封闭性和再现性是先天固有的,多道程序系统的程序执行要想获得封闭性和再现性,需通过程序员的精心设计才能得到。所使用的方法就是同步和互斥的方法。例3.2.2多个进程对信号量S进行了5次P操作,2次V操作后,现在信号量的值是-3,与信号量S相关的

2、处于阻塞状态的进程有几个?信号量的初值是多少?107第3章进程的同步与通信解(1)因为S的当前值是-3,因此因为S处于阻塞状态的进程有3个;(2)因为每进行一次P(S)操作,S的值都减1,每执行1次V操作S的值加1,故信号量的初值为-3+5-2=0;例3.2.3如下锁的实现方法存在什么缺点?如何改进?LOCK(X)UNLOCK(X){{dowhileX=1;X=0;X=1}}解存在的缺点是:当锁是关闭时,采用的是循环等待的方法,这样的等待还是要占用处理机的时间,应该采用阻塞等待的方法。改进的锁实现如下:LOCK(X)UNLOCK(X){{ifX.value=1ifnot107第3章进程的同

3、步与通信empty(X.L){insert(*,X.L);{P=remove(X.L);Block(*)Wakeup(P)}}elseX.Value=1elseX.Value=0}}这里X.value是锁的值,X.L是存放由于锁X而阻塞的进程的队列。insert(*,X.L)将当前进程的进程号插入到X.L,remove(X.L)是从X.L中移出一个进程号。例3.2.4使用多个进程计算Y=F1(X)+F2(X).解(1)确定并发和顺序操作在这个问题中,F1(X)和F2(X)的计算是可以并行处理的,因此F1(X)和F2(X)可以分别出现在两个进程中。(2)确定互斥或同步的规则107第3章进程的

4、同步与通信在F1(X)+F2(X)中,必须在F1(X)和F2(X)计算完毕,才能进行加法运算,因此本问题是同步问题。(1)同步的操作流程〈进程main〉创立进程p1来计算F1(X);创立进程p2来计算F2(X);F1(X)计算是否完成?没有,等待;①F2(X)计算是否完成?没有,等待;②进行加法运算。〈进程p1〉y1=F1(X);设置F1(X)计算完成标志;③〈进程p2〉y1=F2(X);设置F2(X)计算完成标志。④(2)确定信号量的个数和含义107第3章进程的同步与通信根据同步规则以及操作流程确定信号量的个数是2个,S1和S2:S1含义是F1(X)计算是否完成;S2含义是F2(X)计算

5、是否完成。(5)确定信号量的初值S1=0;S2=0。(6)确定P、V操作的位置上面①处是一个P操作,P(S1);上面②处是一个P操作,P(S2);上面③处是一个V操作,V(S1);上面④处是一个V操作,V(S2)。解法1Main()Publicy,y1,y2,.P1,P2SemaphoreS1,S2{S1=0;S2=0;107第3章进程的同步与通信P1=Creat(N-F1,F1,x,……);P2=Creat(N-F2,F2,x,……);P(S1);P(S2);y=y1+y2;}ProcedureF1(x){y1=计算1;V(S1);}ProcedureF2(x){y2=计算2;V(S2)

6、}解法2Main()107第3章进程的同步与通信Publicy,y1,y2,.P1,xSemaphoreS1{input(x);S1=0;P1=Creat(N-F1,F1,x,……);Y2=F2(x);P(S1);y=y1+y2;}ProcedureF1(x){y1=计算1;V(S1)}采用2个进程和1个信号量来实现Y=F1(X)+F2(X)的时候,采用的方法是父进程创立子进程,F1(X)在子进程中计算,F2(X)在父进程中计算,因此F1(X)和F2(X)计算仍然是并发进行的。S1信号量的含义为F1(X)107第3章进程的同步与通信是否完成。改进的方法比原来的方法节约一个进程和一个信号量,

7、但并发操作的程度并没有降低。例3.2.5生产者—消费者问题演变。情况1一个buffer,一个生产者,一个消费者,生产者只生产一个东西,消费者只进行一次消费,即:生产者只进行一次putdata操作,消费者只进行一次getdata操作。解这是一个同步问题,生产者和消费者分别是2个并发的进程。(1)操作规则如果buffer为空,则消费者只能等待。(2)操作流程<生产者>{putdata;设置Buffer有数据标志V(S)}<消

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。