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

xiaoxiao2025-10-08  8

课前问题

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

转载请注明原文地址: https://www.6miu.com/read-5037572.html

最新回复(0)