
C语言进程同步实验代码
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
本实验通过编写C语言程序实现进程间的同步控制,采用信号量机制解决经典问题如哲学家就餐和生产者消费者问题,加深对并发编程的理解。
数据结构:每个进程有一个进程控制块(PCB)表示。该控制块可以包含如下信息:进程类型标号、系统编号、状态(本程序中未使用)、生成的产品(字符形式)、链表指针等。
系统开辟了一个大小由buffersize指定的缓冲区。程序中有三个队列和一个列表,包括一个就绪队列(ready),两个等待队列:生产者等待队列(producer);消费者等待队列(consumer)。此外还有一个用于收集已经完成运行进程的链表(over)。
本程序通过函数模拟信号量的原子操作。算法描述如下:
① 用户指定需要创建的进程及其类型,将其存入就绪队列。
② 调度程序从就绪队列中选取一个进程执行。如果申请到所需资源,则该进程继续运行;否则进入相应的等待队列,并调度下一个就绪队列中的进程。当进程中止时,会检查对应的等待队列并激活其中的进程使其重新加入就绪队列。完成后的进程会被放入over链表中。此过程重复进行直到所有就绪队列为空。
③ 程序询问用户是否继续执行?如需继续则返回步骤①;否则程序结束运行。
全部评论 (0)
还没有任何评论哟~


