1、某系统出现故障,通过相关指令查看,CPU占有率为0,内存有大量空余,但是用户在其程序中得不到任何相应,请从进程状态分析,当前用户所使用的进程可能是什么状态(就绪,运行,阻塞)?为何会处以这一状态?如何才能使其恢复正常运行?
处于阻塞状态,这可能是由于请求外部设备没有满足造成的,当相关外部设备空闲后,该进程即可从阻塞态变为就绪态,从而有机会运行。
2、有三个进程A、B、C使用一个包含N(N>0)个单元的缓冲区。A每次用produce( )生成一个正整数并用put( )送入缓冲区某一空单元中;B每次用getodd( )从该缓冲区中取出一个奇数并用countodd( )统计奇数个数;C每次用geteven( )从该缓冲区中取出一个偶数并用counteven( )统计偶数个数。请用信号量机制实现这三个进程的同步与互斥活动。
A、B、C之间的临界资源为缓冲区,AB、AC之间同步
设临界资源缓冲区的公有信号量为mutex,表示可用缓冲区的数量,mutex=1
A的私用信号量为empty,表示缓冲区中空单元的个数,empty=N
B的私用信号量为odd,表示缓冲区中奇数的个数,odd=0
C的私用信号量为even,表示缓冲区中偶数的个数,even=0
3、桌上有个只能盛得下一个水果的空盘子。爸爸可向盘中放苹果或桔子,儿子专等吃盘中的桔子,女儿专等吃盘中的苹果。规定:当盘子空时,一次只能放入一个水果供吃者取用。试用信号量机制实现爸爸、儿子和女儿这三个循环进程之间的同步。
father进程、son进程和daughter进程之间的临界资源为盘子,father和son之间存在同步,father和daughter之间存在同步,
由于只有一个father进程,只有盘子里有橘子才能被son拿走,设置father和son之间的私有信号量为orange,初始值=0;
只有盘子里有苹果才能被daughter拿走,设置father和daughter之间的私有信号量为apple,初始值=0;
只有盘子为空,father进程才能往里放水果,设置father与son和daughter之间的私有信号量为empty,初始值=1.
4、有一类打印进程,有一类计算进程,前者进行计算并将计算结果向一个缓冲区进行写,后者从该缓冲区读取数据,并打印出来。请用信号量机制实现这两类进程的同步关系
printer进程和computer进程之间存在两种同步关系,只有缓冲区为空时,computer进程才能往里写数据,只有当缓冲区为满时,printer进程才能从里取出数据打印。
设缓冲区为满时的私有信号量为full,初始值=0;
设缓冲区为空时的私有信号量为empty,初始值=1.
5、进程之间的通信有多种方案,其中与本机数据库进行连接时通常使用命名管道的方式,请从数据传输量的角度分析,为何不适合使用信箱的方式连接数据库?
信箱方式数据传输量小,数据库有时需要传输大量数据,而管道方式适合定向连续传输大量数据,因此使用管道的方式更适合这种传输
6、系统中有5个进程(p1, p2, p3, p4, p5)和3种类型的资源(A, B, C),资源的数量分别为(17, 5, 20),T0时刻系统状态见下表。系统采用银行家算法实施死锁避免策略。
(1)T0时刻是否是安全状态?若是,请给出安全序列。
(2)若在T0时刻进程P2提出请求资源分配(0,3,4),系统能否将资源分配给它,为什么?
(3)若在T0时刻进程P4提出请求资源分配(2,0,1),系统能否将资源分配给它,为什么?
(1)由题可得出T0时刻各进程的资源需求情况:
P1(3 4 7),P2(1 3 4 ),P3(0 0 6),P4(2 2 1),P5(1 1 0)
剩余资源为(2 3 3) 由安全性分析后得到一个安全序列{P5,P4,P3,P2,P1}使得所有进程可执行完毕,故T0时刻是安全的。(注:安全序列不唯一)
{P4,P5,P3,P2,P1}
{P4,P2,P3,P5,P1}
{P4,P3,P2,P5,P1}
{P4,P5,P1,P2,P3}
{P5,P4,P3,P2,P1}
(2)P2请求资源(0 3 4)>剩余资源(2 3 3),所以不能分配
(3)P4请求资源(2 0 1)≤剩余资源(2 3 3)
且如果分配后P4的需求为(0 2 0),剩余资源(0 3 2)
经安全性分析后存在一个安全序列{P4,P5,P3,P2,P1}使得所有进程可执行完毕,故该状态是安全的,所以在T0时刻可以将资源分配给P4,满足该进程的资源请求。(注:安全序列不唯一)