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

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

ID:56245237

大小:1.26 MB

页数:30页

时间:2020-03-24

操作系统原理实验报告.doc_第1页
操作系统原理实验报告.doc_第2页
操作系统原理实验报告.doc_第3页
操作系统原理实验报告.doc_第4页
操作系统原理实验报告.doc_第5页
资源描述:

《操作系统原理实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、操作系统原理实验报告学院:专业:班级:学号:姓名:2011-2012学年第2学期目录28实验1进程管理2实验2进程通信9实验3存储管理15实验4文件系统242828实验1进程管理一、实验目的1.弄清进程和程序的区别,加深对进程概念的理解。2.了解并发进程的执行过程,进一步认识并发执行的实质。3.掌握解决进程互斥使用资源的方法。二、实验内容1.管道通信使用系统调用pipe()建立一个管道,然后使用系统调用fork()创建2个子进程p1和p2。这2个子进程分别向管道中写入字符串:“Childprocessp1issendingmessage!”和“Childpr

2、ocessp2issendingmessage!”,而父进程则从管道中读出来自两个子进程的信息,并显示在屏幕上。2.软中断通信使用系统调用fork()创建2个子进程p1和p2,在父进程中使用系统调用signal()捕捉来自键盘上的软中断信号SIGINT(即按Ctrl-C),当捕捉到软中断信号SIGINT后,父进程使用系统调用kill()分别向2个子进程发出软中断信号SIGUSR1和SIGUSR2,子进程捕捉到信号后分别输出信息“Childprocessp1iskilledbyparent!”和“Childprocessp2iskilledbyparent!”

3、后终止。而父进程等待2个子进程终止后,输出信息“Parentprocessiskilled!”后终止。三、实验要求1.根据实验内容编写C程序。2.上机调试程序。3.记录并分析程序运行结果。28四、程序说明和程序流程图实验1管道通信——所涉及的流程图:实验2软中断信号——所涉及的流程图:28五、程序代码/*expe1_1.c*/#includevoidmain(){inti,r,p1,p2,fd[2];charbuf[50],s[50];pipe(fd);/*父进程建立管道*/while((p1=fork())==-1);/*创建子进程P1,

4、失败时循环*/if(p1==0)/*由子进程P1返回,执行子进程P1*/{lockf(fd[1],1,0);/*加锁锁定写入端*/sprintf(buf,"ChildprocessP1issendingmessages!");printf("ChildprocessP1!");write(fd[1],buf,50);/*把buf中的50个字符写入管道*/sleep(5);/*睡眠5秒,让父进程读*/28lockf(fd[1],0,0);/*释放管道写入端*/exit(0);/*关闭P1*/}else/*从父进程返回,执行父进程*/{while((p2

5、=fork())==-1);/*创建子进程P2,失败时循环*/if(p2==0)/*从子进程P2返回,执行子进程P2*/{lockf(fd[1],1,0);/*锁定写入端*/sprintf(buf,"ChildprocessP2issendingmessages!");printf("ChildprocessP2!");write(fd[1],buf,50);/*把buf中的字符写入管道*/sleep(5);/*睡眠5秒,让父进程读*/lockf(fd[1],0,0);/*释放管道写入端*/exit(0);/*关闭P2*/}wait(0);if((r

6、=read(fd[0],s,50))==-1)printf("cannotreadpipe!");elseprintf("%s",s);wait(0);if((r=read(fd[0],s,50))==-1)printf("cannotreadpipe!");elseprintf("%s",s);exit(0);}}/*exp1-2.c*/#include#include#includeintp1,p2;voidmain(){voidppdo();voidp1do();voidp2do();s

7、ignal(SIGINT,ppdo);p1=fork();if(p1==0){signal(SIGUSR1,p1do);for(;;);28}else{p2=fork();if(p2==0){signal(SIGUSR2,p2do);for(;;);}}wait(0);wait(0);printf("Parentprocessiskilled!");exit(0);}voidppdo(){kill(p1,SIGUSR1);kill(p2,SIGUSR2);}voidp1do(){printf("Childprocessp1iskilledbypa

8、rent!");exit(0);}voidp2d

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

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

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