付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《操作系统实验》报告实验四:运用信号量实现进程控制指导教师:________班级:_________学号:_______姓名:_________实验四运用信号量实现进程控制一、实验目的学习UNIX类操作系统信号量机制,编写Linux环境下运用信号量实现进程控制的办法,掌握有关系统调用的使用办法。二、实验内容创立四个线程,其中两个线程负责从文献读取数据到公共的缓冲区,另两个线程从缓冲区读取数据作不同的解决(加和乘运算)。使用信号量控制这些线程的执行。三、实验代码#include<stdio.h>#include<pthread.h>#include<semaphore.h>intstack[8];intsize1=0;intsize2=4;intsize=0;sem_tsem;intflag1=0;//definetheexclusivenumberintflag2=0;intflag3=0;intflag4=0;voidReadData1(void){FILE*fp=fopen("1.txt","r");while(size1<4&&flag3!=4){stack[size1]=(int)fgetc(fp)-48;//changethechardatatointegerflag3++;printf("%dfrom1.txt!\n",stack[size1]);//thedatafrom1.txtis1357if(size%2==0)sem_post(&sem);++size;++size1;}fclose(fp); }voidReadData2(void){FILE*fp=fopen("2.txt","r");//thedatafrom2.txtis2468while(size2<8&&flag4!=4){stack[size2]=(int)fgetc(fp)-48;flag4++;printf("%dfrom2.txt!\n",stack[size2]);if(size%2==0)sem_post(&sem);++size;//whenthepublicsourceisincrease,signalnumberplus1++size2;}fclose(fp);}voidHandleData1(void){while(flag1!=2){flag1++;sem_wait(&sem);/*wewilproceedtodotheplusoperation*/printf("Plus:%d+%d=%d\n",stack[size1],stack[size2],stack[size1]+stack[size2]);--size1;--size2;size=size-2;//wehandletwodata,sosignalnumberwillminus2}}voidHandleData2(void){while(flag2!=2){flag2++;sem_wait(&sem);/*wewillproceedtodothemultiplyoperation*/printf("Mutiply:%d*%d=%d\n",stack[size1],stack[size2],stack[size1]*stack[size2]);--size2;--size1;size=size-2;}}intmain(void){pthread_tt1,t2,t3,t4;sem_init(&sem,0,0);pthread_create(&t1,NULL,(void*)HandleData1,NULL);pthread_create(&t2,NULL,(void*)HandleData2,NULL);pthread_create(&t3,NULL,(void*)ReadData1,NULL);pthread_create(&t4,NULL,(void*)ReadData2,NULL);pthread_join(t1,NULL);pthread_join(t2,NULL);pthread_join(t3,NULL);pthread_join(t4,NULL);return0;}四、执行成果1.txt文献里面的数据是1357,2.txt文献里面的数据是2468。信号量表达空闲资源总数(又称为“资源信号量”):若为非负值:表达现在的空闲资源数(可用的资源数)若为负值:其绝对值表达现在等待临界区的进程数,每个信号量除一种整数值外,尚有一种进程等待队列,其中是阻塞在该信号量的各个进程的标记普通将信号量的值初始化为非负整数,P操作(wait操作)使信号量的值减1(申请一种单位的资源),如果使信号量的值变成负数,则执行P操作的进程被阻塞,此时资源已分派完毕,进程自己阻塞在等待队列上。V操作(signal操作)使信号量的值加1(释放一种单位资源)如果信号量的值不是正数,则使一种因执行v操作被阻塞的进程解除阻塞(唤醒一种等待进程)。五、实验心得:做完这七
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 车间员工质量意识培训
- 车辆置换培训主题班会
- 车辆维修安全培训
- 车辆日常保养培训
- 车辆安全教育培训内容
- 车辆安全培训工作
- 2025年浙江科技学院马克思主义基本原理概论期末考试模拟题附答案解析(夺冠)
- 2025年西昌民族幼儿师范高等专科学校单招职业倾向性测试题库附答案解析
- 心理学基础测试题(含参考答案)
- 初级护师考试经典试题及答案
- 2026春译林8下单词表【Unit1-8】(可编辑版)
- 阶梯式早期活动在ICU机械通气患者中的应用课件
- 2025-2030中国高级生产计划与排产系统(APS)行业运行现状与投资规划分析报告
- 征兵体检外科标准
- 【9物安徽中考卷】2025年安徽省中考招生考试真题物理试卷(真题+答案)
- 4输变电工程施工质量验收统一表式(电缆工程电气专业)-2024年版
- 传统元素与现代设计建筑融合创新
- 上海市海绵城市建设技术标准图集DBJT08-128-2019 2019沪L003、2019沪S701
- 外研版(三起)(2024)三年级下册英语Unit 2 单元测试卷(含答案)
- DB11-T 353-2021 城市道路清扫保洁质量与作业要求
- 《货运险培训进出口》课件
评论
0/150
提交评论