操作系统 信号量习题--实例(对上次笔记“经典同步问题”*补充)

2019-07-14 07:52发布

课前问题

1.什么是进程?
答:进程是进程实体的运行过程,是系统进行资源的分配与调度的一个单位。(进程实体=数据段+程序段+PCB) 2.理解PCB的作用?
答:进程控制块PCB,它是为了管理计算机中的进程而产生的,它是进程实体的一部分,用于描述进程的当前状况以及进程运行的信息。
系统通过PCB来感知进程的存在,对于中断来说,他可以保护现场,以及恢复现场都要用到PCB;PCB中保存了进程的状态信息,协助进程调度。 3.什么是同步?
答:多个相互合作的进程,在一些关键点上可能需要互相等待或互相交换信息,这种相互制约关系称为进程的同步关系,可以理解为有序

读者写者问题

写者优先方式 分析
读者有限的关键:
若读者先占有互斥信号量,只有当最后一个读者离开,计数降为0时才释放信号量,导致写者弱势 反之写者优先则是,写者先占有某信号量后,直到最后一个写完才释放信号量,读者才能进入 增加一个互斥信号量S,读者和写者都争抢该信号;
对写者也进行计数,第1个写者申请S,其他写者不需要申请S;最后一个写者离开时才释放信号量S.
一旦写者先申请到了S,则所有的读者只能等待写者都走完才可进入共享读。而多个写者通过S后,仍要争抢wmutex信号以完成互斥的写入。
代码
在这里插入图片描述
读和写的区别在于对信号量释放位置,写操作是在最后一个写完才释放。

黑白棋问题

执黑先下,然后轮流下子。 在这里插入图片描述 问题分析 无法用单纯信号量操作完成(因为初始值无法设定固定值);争抢棋盘需要互斥信号量;需要加入if控制与标志判断,来实现有序控制。 改进 在这里插入图片描述

嗜睡理发师问题

一个理发店N个沙发,一个理发椅 理发师:睡觉,理发,收钱
顾客:有沙发,进入等待,否则离开;理发椅空一顾客离开沙发,唤醒理发师;理完付费离开。 在这里插入图片描述 顾客
Repeat
if count>N then
离开店
else
count=count+1
if count=1 then
wait(empty)等椅子
else
wait(sofa)
坐入沙发
wait(empty)等椅子
离开沙发
signal(sofa)
end if
顾客坐上椅子
…(与理发师的关系)
离开椅子
Signal(empty)
Count=count-1 离开店 end if