操作系统实验 系统调用.doc
3页1、实验六 系统调用学时:2学时1.实验内容:系统调用实验2.实验目的:通过调用PV操作解决生产者、消费者问题,了解系统中并发进程是怎样同步执行的。3.实验题目:编写一段程序模拟PV操作实现进程同步,且用PV操作解决生产者、消费者问题。4.实验提示:PV操作由P操作原语和V操作原语组成。P操作原语P(s)将信号量s减1,若s0则执行原语的进程被置成等待状态。V操作原语V(s)将信号量s加1,若s=0则释放一个等待的进程。生产者、消费者问题主要解决的是进程并发执行时访问公共变量的问题。假定有一个生产者和一个消费者。生产者每次生产一个产品,并把产品存入共享缓冲区供消费者取走。消费者每次从共享缓冲区取出一个产品去消费。禁止生产者将产品放入已满的缓冲区,禁止消费者从空缓冲区内取产品。模拟程序中对应关系如下:产品数量int _nCurrProductor共享缓冲区大小int MaxBuffer信号量spthread_mutex_t _dealmutexP(s)原语pthread_mutex_lock(&_dealmutex)V(s)原语pthread_mutex_unlock(&_dealmutex
2、)生产一个产品_nCurrProductor +消费一个产品_nCurrProductor -实例代码:/进程同步生产者、消费者实例pcustomer.c/运行环境Redhad9.0 gcc 4.0#include #include #include /产品数量int _nCurrProductor = 0;int MaxBuffer=10;/信号灯pthread_mutex_t _dealmutex;void* producer(void *arg) /生产者进程while(1) pthread_mutex_lock(&_dealmutex);/信号灯锁定if(_nCurrProductor MaxBuffer) printf(当前的产品数%6d 仓库满了,停止生产产品。n,_nCurrProductor);Else_nCurrProductor +;/生产一个产品printf(当前的产品数%6d 生产了一个产品。n,_nCurrProductor);pthread_mutex_unlock(&_dealmutex);/信号灯解锁sleep(2);void* customer(voi
3、d *arg) /消费者进程while(1) pthread_mutex_lock(&_dealmutex);/信号灯锁定if(_nCurrProductor 0) _nCurrProductor -;/消费一个产品printf(当前的产品数%6d 消费了一个产品。n,_nCurrProductor);else printf(当前的产品数%6d 加快生产速度呀,没有产品了。n,_nCurrProductor);pthread_mutex_unlock(&_dealmutex);/信号灯解锁sleep(3);int main(int argc, char* argv) printf(开始!n);pthread_mutex_init(&_dealmutex, NULL);/信号灯初始化pthread_t pt1;pthread_t pt2;/建立生产者和消费者进程int pret2 = pthread_create(&pt2, NULL, customer, NULL);int pret1 = pthread_create(&pt1, NULL, producer, NULL);if(pret1 != 0 | pret2 != 0) printf(进程创建失败!n);exit(1);while(1) pthread_join(pt1, NULL);pthread_join(pt2, NULL);printf(结束!n);return 0;运行结果:rootredlinux ys# gcc -lpthread pcustomer.c -o pcustomer.orootredlinux ys# ./pcustomer.o开始!当前的产品数 0 加快生产速度呀,没有产品了。当前的产品数 1 生产了一个产品。当前的产品数 2 生产了一个产品。当前的产品数 1 消费了一个产品。当前的产品数 2 生产了一个产品。当前的产品数 1 消费了一个产品。当前的产品数 2 生产了一个产品。当前的产品数 3 生产了一个产品。当前的产品数 2 消费了一个产品。当前的产品数 3 生产了一个产品。当前的产品数 2 消费了一个产品。当前的产品数 3 生产了一个产品。当前的产品数 4 生产了一个产品。当前的产品数 3 消费了一个产品。当前的产品数 4 生产了一个产品。
《操作系统实验 系统调用.doc》由会员灯火****19分享,可在线阅读,更多相关《操作系统实验 系统调用.doc》请在金锄头文库上搜索。
尚硅谷Java基础Java类设计
少儿美术创意《可爱的小斑马》
少儿美术绘画课件(5-6岁)幼儿园期末总结课
少儿鲨鱼来了涂鸦美术课件
少数民族苗族民俗风俗介绍
小间距产品系列介绍
少儿创意美术-马蒂斯鱼缸
少儿美丽的烟花(涂鸦)美术课件
小学食堂从业人员培训课件
小学语文语文听课评课专题
小学语文整本书阅读学习任务群设计及实施
小学语文教研组长
小学语文任务群讲座课件
小学语文学习任务群类型及教学设计举例
小学语文小组合作习作教学的案例研究
小学综合实践活动《会服务活动4红领巾爱心义卖行动》优质课件
小学老师板书技能教学板书设计的技巧
小学语文《习作一生活万花筒》说课稿(附板书)课件
小学语文《文学阅读与创意表达》
小学生的创造力
2024-01-15 24页
2024-01-15 15页
2024-01-08 89页
2024-01-08 72页
2023-08-31 3页
2023-08-31 2页
2023-07-10 3页
2023-07-10 3页
2023-07-10 3页
2023-07-10 2页