操作系统实验 系统调用.doc

操作系统实验 系统调用.doc

ID:56126592

大小:20.50 KB

页数:3页

时间:2020-06-20

操作系统实验 系统调用.doc_第1页
操作系统实验 系统调用.doc_第2页
操作系统实验 系统调用.doc_第3页
资源描述:

《操作系统实验 系统调用.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验六系统调用学时:2学时1.实验内容:系统调用实验2.实验目的:通过调用PV操作解决生产者、消费者问题,了解系统中并发进程是怎样同步执行的。3.实验题目:编写一段程序模拟PV操作实现进程同步,且用PV操作解决生产者、消费者问题。4.实验提示:⑴PV操作由P操作原语和V操作原语组成。P操作原语P(s)将信号量s减1,若s<0则执行原语的进程被置成等待状态。V操作原语V(s)将信号量s加1,若s<=0则释放一个等待的进程。⑵生产者、消费者问题主要解决的是进程并发执行时访问公共变量的问题。假定有一个

2、生产者和一个消费者。生产者每次生产一个产品,并把产品存入共享缓冲区供消费者取走。消费者每次从共享缓冲区取出一个产品去消费。禁止生产者将产品放入已满的缓冲区,禁止消费者从空缓冲区内取产品。⑶模拟程序中对应关系如下:产品数量int_nCurrProductor共享缓冲区大小intMaxBuffer信号量spthread_mutex_t_dealmutexP(s)原语pthread_mutex_lock(&_dealmutex)V(s)原语pthread_mutex_unlock(&_dealmute

3、x)生产一个产品_nCurrProductor++消费一个产品_nCurrProductor--实例代码://进程同步生产者、消费者实例pcustomer.c//运行环境Redhad9.0gcc4.0#include#include#include//产品数量int_nCurrProductor=0;intMaxBuffer=10;//信号灯pthread_mutex_t_dealmutex;void*producer(void*arg

4、){//生产者进程while(1){pthread_mutex_lock(&_dealmutex);//信号灯锁定if(_nCurrProductor>MaxBuffer){printf("当前的产品数[%6d]仓库满了,停止生产产品。",_nCurrProductor);}Else{_nCurrProductor++;//生产一个产品printf("当前的产品数[%6d]生产了一个产品。",_nCurrProductor);}pthread_mutex_unlock(&_dealmut

5、ex);//信号灯解锁sleep(2);}}void*customer(void*arg){//消费者进程while(1){pthread_mutex_lock(&_dealmutex);//信号灯锁定if(_nCurrProductor>0){_nCurrProductor--;//消费一个产品printf("当前的产品数[%6d]消费了一个产品。",_nCurrProductor);}else{printf("当前的产品数[%6d]加快生产速度呀,没有产品了。",_nCurrProd

6、uctor);}pthread_mutex_unlock(&_dealmutex);//信号灯解锁sleep(3);}}intmain(intargc,char**argv){printf("开始!");pthread_mutex_init(&_dealmutex,NULL);//信号灯初始化pthread_tpt1;pthread_tpt2;//建立生产者和消费者进程intpret2=pthread_create(&pt2,NULL,customer,NULL);intpret1=pthr

7、ead_create(&pt1,NULL,producer,NULL);if(pret1!=0

8、

9、pret2!=0){printf("进程创建失败!");exit(1);}while(1){}pthread_join(pt1,NULL);pthread_join(pt2,NULL);printf("结束!");return0;}运行结果:[root@redlinuxys]#gcc-lpthreadpcustomer.c-opcustomer.o[root@redlinuxys]#./pc

10、ustomer.o开始!当前的产品数[0]加快生产速度呀,没有产品了。当前的产品数[1]生产了一个产品。当前的产品数[2]生产了一个产品。当前的产品数[1]消费了一个产品。当前的产品数[2]生产了一个产品。当前的产品数[1]消费了一个产品。当前的产品数[2]生产了一个产品。当前的产品数[3]生产了一个产品。当前的产品数[2]消费了一个产品。当前的产品数[3]生产了一个产品。当前的产品数[2]消费了一个产品。当前的产品数[3]生产了一个产品。当前的产品数[4]生产了一个产品。当前的产品数[3]消费

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。