操作系统实验报告(进程间的共享存贮区和信号量通信)

操作系统实验报告(进程间的共享存贮区和信号量通信)

ID:28046381

大小:75.00 KB

页数:6页

时间:2018-12-07

操作系统实验报告(进程间的共享存贮区和信号量通信)_第1页
操作系统实验报告(进程间的共享存贮区和信号量通信)_第2页
操作系统实验报告(进程间的共享存贮区和信号量通信)_第3页
操作系统实验报告(进程间的共享存贮区和信号量通信)_第4页
操作系统实验报告(进程间的共享存贮区和信号量通信)_第5页
资源描述:

《操作系统实验报告(进程间的共享存贮区和信号量通信)》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、实验题1=1进程间的共享存贮区和信号量通信小组合作否姓名班级学号一、实验目的熟悉UNIX中的信号量机制中使用的数据结构。熟悉信号量机制的操作以及控制。了解共享主存段机制。学会对共享主存段的系统调用。二.实验环境操作系统WindowsXP集装有虚拟机Linux的系统三、实验内容与步骤一、信号量机制在UNTX系统V中,一个或多个信号量构成一个信号量集合。使用信号量机制用来实现进程间的同步和互斥,允许并发进程一次对一组信号量进行相同或不同的操作。每个P,V操作不限于减1或加1,而是可以加减任何整数。在进程终止时,系统可以根据需

2、要自动消除所有被进程操作过的信号量的影响。例子用于互斥共亨文件的信号量的使用。代码如下:#include^include〈stdlib.h〉#include#include〈time.h>#include#include#include#defineNUM_PROCS5#defineSEMID250#defineFILENAME〃tmp/semMUTEX"#defineDELAY400000voidupdat

3、efile(intsemsetid,char*filenamepath,intnumber){structsembufsemop;PILE*file;sem_op.scm_num=0;semop.semop=-1;semop.semfig=0;semop(sem_set_id,&sem_op,1);file二fopen(file_name_path,〃w〃);if(file){fprintf(file,〃%d〃,number);fclose(file);}semop.semnum=0;sem_op>semop=1;s

4、em_op>semjflg=0;semop(semsetid,&semop,1);}voiddochildloop(intsemsetid,char氺filename){pid_tpid=getpid();inti,j;for(i=0;i〈3;i++){updatefile(semsetid,filename,pid);for(j=O;j<200000;j++);}}intmain(intargc,char**argv){intsem_set_id,child_pid;unionsemunsemval;inti,rc;s

5、em_set_id=scmget(SEM_1D,1,IPC_CREAT10600);if(semset_id==-l){perror("main’ssemgeterror");exit⑴;}sem_val.val=1;rc=semctl(semset_id,0,SETVAL,semval);if(rc==-l){perror(〃main:setctl〃);exit⑴;for(i=0;i

6、()〃);exit(0);case0:do_child_loop(sem_set_id,FILE_NAME);exit(0);default:break;}}for(i=0;i<10;i++){intchild_status;wait(&childstatus);}printf(〃mainisdone〃);fflush(stdout);return0;}运行结果:[bwl@locaIhostbwl]$gcc-oflfl.c[bwl@locaIhostbwl]$f138213821382138223822382238233

7、8233823382338243824382438253825rwinisdone二、共享主存段机制共享主存段为进程提供了直接通过主存进行通信的有效手段,不像消息缓存机制那样需要系统提供缓存,也不像pipe机制那样需要事先建立一个特殊文件,而是有通信双方直接访问某些共享虚拟存储器空间。在系统V中,系统管理一组共享主存段控制块。通信进程在使用共享主存段以前,首先提出申请,系统为止分配存储空间并返回共享主存段标识号。一个井享段建立后,进程把它被附加到自己的虚拟存储空间中。一个进程可以附加多个共享主存段。一个主存段-旦被附加到

8、进程的虚拟机空间后,对它的访问以其他虚拟机的访问完全相同。但为丫保证共享主存段数据完整性,通信的进程之间要互斥的进行访问。当通信进程不再需要该共享主存段时,可使用命令将其与进程分离,从而使其进程的虚空间删除。为了理解进程通过井享主存段的通信过程,下面举例,一个是进程向井享段写信息的例子:一个是进行从共享段读信息的例子

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

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

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