操作系统实验报告_第1页
操作系统实验报告_第2页
操作系统实验报告_第3页
操作系统实验报告_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《操作系统实验》报告实验四:运用信号量实现进程控制指导教师:________班级:_________学号:_______姓名:_________实验四运用信号量实现进程控制一、实验目的学习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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论