进程同步实验报告.doc

进程同步实验报告.doc

ID:59316649

大小:53.50 KB

页数:7页

时间:2020-09-05

进程同步实验报告.doc_第1页
进程同步实验报告.doc_第2页
进程同步实验报告.doc_第3页
进程同步实验报告.doc_第4页
进程同步实验报告.doc_第5页
资源描述:

《进程同步实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、中北大学软件学院实验报告专业:软件工程方向:软件开发与测试课程名称:操作系统班级:学号:姓名:辅导教师:2017年9月制成绩:实验时间2017年11月5日8时至10时学时数22学时1.实验名称进程同步2.实验内容编程实现生产者-消费者问题的模拟。3.基本要求1.生产者消费者对缓冲区进行互斥操作。2.缓冲区大小为10,缓冲区满则不允许生产者生产数据,缓冲区空则不允许消费者消费数据。3.生产者消费者各循环操作10次。4.实验原理或流程图生产者-消费者问题是一个经典的进程同步问题,该问题最早由Dijkstra提出,用以演示他提出的信号量机制。在同一个进程地址空间内执行的两个线程。生产者线程生产物品,

2、然后将物品放置在一个空缓冲区中供消费者线程消费。消费者线程从缓冲区中获得物品,然后释放缓冲区。当生产者线程生产物品时,如果没有空缓冲区可用,那么生产者线程必须等待消费者线程释放出一个空缓冲区。当消费者线程消费物品时,如果没有满的缓冲区,那么消费者线程将被阻塞,直到新的物品被生产出来。5.源程序#include#include#include#includevoid*producter_f(void*arg);void*consumer_f(void*arg);sem_tempty;//信号量emptysem_

3、tfull;//信号量fullintrunning=1;intapple_num=0;intmain(void){pthread_tconsumer_t;//消费者pthread_tproducter_t;//生产者//pshared表示信号量共享类型,为0时,表示只能在当前进程的//多个线程之间共享,不为0时,是可以和其他进程间共享该信号量//使用信号量,用来协作生产者和消费者的顺序,即实现同步效果sem_init(&empty,0,1);//初始化empty信号量sem_init(&full,0,0);//初始化full信号量pthread_create(&consumer_t,NULL,

4、consumer_f,(void*)&running);//创建消费者线程pthread_create(&producter_t,NULL,producter_f,(void*)&running);//创建生产者线程//sleep(1);//睡眠3秒usleep(1000);//睡眠10微秒running=0;pthread_join(consumer_t,NULL);pthread_join(producter_t,NULL);sem_destroy(&empty);sem_destroy(&full);return0;}void*producter_f(void*arg){while(*(

5、int*)arg){sem_wait(&empty);apple_num++;printf("producter生产第%d个香蕉",apple_num);sem_post(&full);usleep(1);}}void*consumer_f(void*arg){while(*(int*)arg){sem_wait(&full);printf("consumer消费第%d个香蕉",apple_num);sem_post(&empty);usleep(1);}}6.运行截图7.实验心得本次实验学习了进程的同步问题,进程是计算机操作系统重要的一个功能,学好进程才能学好其他。

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

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

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