1 / 51
文档名称:

操作系统原理实验报告.doc

格式:doc   大小:1,275KB   页数:51页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

操作系统原理实验报告.doc

上传人:读书之乐 2019/9/15 文件大小:1.25 MB

下载得到文件列表

操作系统原理实验报告.doc

文档介绍

文档介绍:操作系统原理实验报告操作系统原理实验报告学院:专业:班级:学号:姓名:2011-2012学年第2学期目录实验1进程管理 2实验2进程通信 9实验3存储管理 15实验4文件系统 24实验1进程管理一、,加深对进程概念的理解。,进一步认识并发执行的实质。。二、()建立一个管道,然后使用系统调用fork()创建2个子进程p1和p2。这2个子进程分别向管道中写入字符串:“Childprocessp1issendingmessage!”和“Childprocessp2issendingmessage!”,而父进程则从管道中读出来自两个子进程的信息,并显示在屏幕上。()创建2个子进程p1和p2,在父进程中使用系统调用signal()捕捉来自键盘上的软中断信号SIGINT(即按Ctrl-C),当捕捉到软中断信号SIGINT后,父进程使用系统调用kill()分别向2个子进程发出软中断信号SIGUSR1和SIGUSR2,子进程捕捉到信号后分别输出信息“Childprocessp1iskilledbyparent!”和“Childprocessp2iskilledbyparent!”后终止。而父进程等待2个子进程终止后,输出信息“Parentprocessiskilled!”后终止。三、。。。四、程序说明和程序流程图实验1管道通信——所涉及的流程图:实验2软中断信号——所涉及的流程图:五、程序代码/**/#include<>voidmain(){inti,r,p1,p2,fd[2];charbuf[50],s[50];pipe(fd);/*父进程建立管道*/while((p1=fork())==-1);/*创建子进程P1,失败时循环*/if(p1==0)/*由子进程P1返回,执行子进程P1*/{lockf(fd[1],1,0);/*加锁锁定写入端*/sprintf(buf,"ChildprocessP1issendingmessages!\n");printf("ChildprocessP1!\n");write(fd[1],buf,50);/*把buf中的50个字符写入管道*/sleep(5);/*睡眠5秒,让父进程读*/lockf(fd[1],0,0);/*释放管道写入端*/exit(0);/*关闭P1*/}else/*从父进程返回,执行父进程*/{while((p2=fork())==-1);/*创建子进程P2,失败时循环*/if(p2==0)/*从子进程P2返回,执行子进程P2*/{lockf(fd[1],1,0);/*锁定写入端*/sprintf(buf,"ChildprocessP2issendingmessages!\n");printf("ChildprocessP2!\n");write(fd[1],buf,50);/*把buf中的字符写入管道*/sleep(5);/*睡眠5秒,让父进程读*/lockf(fd[1],0,0);/*释放管道写入端*/exit(0);/*关闭P2*/}wait(0);if((r=read(fd[0],s,50))==-1)printf("cannotreadpipe!\n");elseprintf("%s",s);wait(0);if((r=read(fd[0],s,50))==-1)printf("cannotreadpipe!\n");elseprintf("%s",s);exit(0);}}/*exp1-*/#include<>#include<>#include<>intp1,p2;voidmain(){voidppdo();voidp1do();voidp2do();signal(SIGINT,ppdo);p1=fork();if(p1==0){signal(SIGUSR1,p1do);for(;;);}else{p2=fork();if(p2==0){signal(SIGUSR2,p2do);for(;;);