本实验旨在通过实践加深对操作系统中进程与线程同步机制的理解,包括互斥锁、信号量等概念的应用。参与者将编写代码解决实际同步问题,提升并发编程能力。
1. 实现生产者消费者问题(信号量+mutex):参考教材中的生产者消费者算法,创建5个进程,其中两个为生产者进程,三个为消费者进程。一个生产者不断尝试在缓冲区写入大写字母,另一个则试图写入小写字母;同时三个消费者不断地从该缓冲中读取字符并输出。为了便于观察实验结果,在适当位置加入随机睡眠时间以模拟现实情况。
可选扩展:在此基础上设计部分消费者的特定消费偏好。例如一个只消费小写字母的进程、一个仅关注大写字母的进程以及另一个无选择地处理任何字母类型的消费者。当所需字符暂时不可用时,相关消费者将被阻塞等待。
2. 实现使用信号量和mutex解决“睡觉的理发师”问题:通过设计合理的同步机制来实现该经典计算机科学案例中的角色互动场景。
3. 编写读者写者问题程序(优先级考虑):根据教材及阅读材料提供的算法,构建一个在大量并发读取请求下仍能保证高效写作操作执行效率的应用。特别地,在此版本中设定所有参与者均为多进程形式,并采用信号量作为核心同步互斥机制以确保数据一致性与流程协调性。
上述每个任务均需深入理解操作系统中的进程间通信、资源管理以及同步控制技术,通过编程实践加深对这些概念的理解和应用能力。