Lab4 进程同步
俞星凯 171830635
2651904866@qq.com
实验目的
1. 实现一个简单的生产者消费者程序。
2. 介绍基于信号量的进程同步机制。
实验内容
1. 内 核 : 提 供 基 于 信 号 量 的 进 程 同 步 机 制 , 并 提 供 系 统 调 用 sem_init 、
sem_post、sem_wait、sem_destroy。
2. 库:对上述系统调用进行封装。
3. 用户:对上述库函数进行测试。
背景知识
1. 信号量机制
内核维护 Semaphore 这一数据结构,并提供 P,V 这一对原子操作,其中 W 用
于阻塞进程自身在该信号量上,R 用于释放一个阻塞在该信号量上的进程,其
伪代码如下
实验过程
1. 启动阶段
大体与 Lab3 类似,不同之处在于加入两个数组 sem 和 dev 用来实现进程同步,
两个数组的元素类型是类似的,其中,state 表示该元素是否有效,value 表示信
号量的值,为正时表示在封锁前对 s 可施行的 P 操作,为负时其绝对值表示在 s
队列中等待的进程个数,pcb 则是一个双向链表,用于记录执行 P 操作时被阻塞
的进程。
评论0