付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《操作系统实验》报告实验四:运用信号量实现进程控制指导教师:________班级:_________学号:_______姓名:_________实验四运用信号量实现进程控制一、实验目的学习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学年八年级下学期期末道德与法治试卷(文字版含答案)
- 环境监测试题库(附答案)
- 各种注射技术操作并发症预防及处理考核试题及答案
- 常用护理技术操作并发症的预防及处理考核试题及答案
- 保安考试试题及答案
- 2026年预防接种狂犬病暴露处置上岗资质考试试题及答案
- 全球及中国医药喷雾泵市场竞争风险及供需前景预测研究报告
- 2026年四川宜宾三江新区社区工作者(社区综合岗)招聘考试试卷-含答案解析
- 广东省湛江市2026年八年级下学期语文期末试卷附答案
- 2026共享经济理念对管理咨询行业组织形式影响深度分析报告
- 中心静脉置管维护操作规范及评分标准
- 2026年普通党员学习教育对照查摆清单(立党为公、为民造福、科学决策、真抓实干)
- 2026年学校食堂餐饮服务合同
- 2026年新版药品GCP考试题库附参考答案(完整版)
- 2026年广州中考试卷语文及答案
- 污水生化系统调试方案
- 江西师范大学《国际金融学(姜波克版)》2025-2026学年期末试卷
评论
0/150
提交评论