青岛理工大操作系统作业解答:单多道并行与信号量同步

需积分: 0 1 下载量 117 浏览量 更新于2024-08-04 收藏 549KB DOC 举报
青岛理工大学操作系统作业的答案文档包含了两部分的练习题目。首先,针对第一章的综合题,涉及了并发进程调度的问题。在单道模式下,由于程序按照A、B、C的顺序执行,计算和I/O操作时间逐个累加,总耗时为30+40+10+60+30+10+20+40+20=260毫秒。然而,在多道环境下,采用基于优先级的非抢占调度,由于计算密集型的A和B可以同时执行,以及I/O密集型的C在A和B完成后开始,整体时序中存在并行,所以总耗时为30+60+20+40+10+10+20+40=180毫秒。题目要求画出这个多道运行的时序图,但由于此处无法呈现图形,理解时需要结合文字描述构建可视化。 第二章的题目更加注重同步控制。第一个问题是关于单缓冲区的共享使用,其中计算进程不断产生结果并存入缓冲区,而打印进程负责读取和打印。为了解决这个问题,可以使用信号量来管理两个关键资源:空闲缓冲区(用信号量empty表示,初始值为1)和已有的打印结果(信号量full,初始值为0)。通过互斥锁(信号量)确保每次只有一个进程能够访问缓冲区,确保数据的一致性。 第二个问题涉及读者-写者问题,需要设计一个信号量系统,以确保读者和写者按照到达顺序获取资源,即读者优先级高于写者。具体实现可能包括两个信号量,一个用于保护写操作(wmutex),初值为0表示没有写权限;另一个用于保护读操作,但允许多个读者同时进入(rmutex,初始值大于等于1,表示至少有一个读权限)。对于给定的到达序列R1,R2,W1,R3,R4,W2,根据这个规则,我们可以模拟每个进程的行为,例如: - R1: 进入读取状态,rmutex自增1; - W1: 进入写入状态,等待rmutex减至0,wmutex自增1,写入后释放; - R2: 进入读取状态,rmutex自增1,直到W1写完释放wmutex; - R3: 类似R2,继续按顺序等待; - W2: 同理,写入后先释放wmutex再释放rmutex; - R4: 进入读取状态,继续按顺序等待。 实际的测试结果会根据信号量操作记录每个进程的行为,如“R1: rmutex=1, wmutex=0”,并在每个操作后更新信号量状态。由于文本限制,无法在此列出完整的测试结果,但思路是清晰的。在整个过程中,信号量机制起到了关键作用,保证了并发环境下的正确同步和优先级控制。