操作系统课程设计 题目一:实现生产者消费者问题 题目二:银行家算法的实现 一、实验题目 解决生产者-消费者问题 二、设计内容 有界缓冲区内设有10个存储单元,放入/取出的数据项设定为1~10这10个整形数
要求每个生产者和消费者对有界缓冲区进行操作后,即时显示有界缓冲区的全部内容、当前指针位置和生产者/消费者标识符 三、开发环境 LINUX环境,工具为 VI编辑器
四、分析设计 (一)实验原理 使用的生产者和消费者模型具有如下特点: (1)本实验的多个缓冲区不是环形循环的,也不要求按顺序访问
生产者可以把产品放到目前某一个空缓冲区中
(2)消费者只消费指定生产者的产品
(3)在测试用例文件中指定了所有的生产和消费的需求,只有当共享缓冲区的数据满足了所有关于它的消费需求后,此共享缓冲区才可以作为空闲空间允许新的生产者使用
(4)本实验在为生产者分配缓冲区时各生产者间必须互斥,此后各个生产者的具体生产活动可以并发
而消费者之间只有在对同一产品进行消费时才需要互斥,同时它们在消费过程结束时需要判断该消费对象是否已经消费完毕并清除该产品
Windows 用来实现同步和互斥的实体
在 Windows 中,常见的同步对象有:信号量(Semaphore)、 互斥量(Mutex)、临界段(CriticalSection)和事件(Event)等
本程序中用到了前三个
使用这些对象都分 为三个步骤,一是创建或者初始化:接着请求该同步对象,随即进入临界区,这一步对应于互斥量的 上锁;最后释放该同步对象,这对应于互斥量的解锁
这些同步对象在一个线程中创建,在其他线程 中 都 可 以 使 用 , 从 而 实 现 同 步 互 斥
当 然 , 在 进 程 间 使 用 这 些 同 步 对 象 实 现 同 步 的方 法 是 类 似 的
1. 用 锁 操 作 原 语 实 现 互 斥 为 解