电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

操作系统试验报告试验3_1VIP免费

操作系统试验报告试验3_1_第1页
1/6
操作系统试验报告试验3_1_第2页
2/6
操作系统试验报告试验3_1_第3页
3/6
操作系统实验报告实验3-1:Linux进程的创建与父子进程同步1.实验目的(1)熟悉在C语言源程序中使用Linux所提供的系统调用界面的方法;(2)掌握Linux中进程的创建方法以及调度执行情况,理解进程与程序的区别;(3)使用系统调用wait()和exit(),实现父子进程同步;(4)了解Linux提供的C编译器gcc的调用;(5)进一步掌握vi的使用。2.实验内容(1)父进程创建子进程,返回后父子进程都分别循环输出字符串“Iamparent.”或“Iamchild.”5次,每输出一次后使用sleep(1)延时1秒,然后再进入下一次循环,如下所示。将该源程序链接后执行,观察并分析运行结果。父进程返回后执行:for(i=0;i<5;i++){printf(“Iamparent.\n”);sleep(1);}子进程返回后执行:for(i=0;i<5;i++){printf(“Iamchild.\n”);sleep(1);}(2)进程家族树在源程序中连续使用4个fork(),而不是用if()进行返回值的判段,在4个fork()语言后面输出字符“A”。观察并分析该程序编译连接执行后的输出结果。(3)父子同步进程修改第(1)题的程序,使用exit()和wait()实现父子进程同步,其同步方式为父进程等待子进程的同步,即:子进程先循环输出5次,然后父进程再循环输出5次.观察是否有不同的结果出现。3.实验思考(1)观察运行结果,分析结果产生的原因。答:当一个新的进程创建后,系统就会增加一个进程参与竞争CPU,并随时可能被操作系统调度执行(2)当程序中创建了子进程后,该程序的执行有什么特点?为什么?答:条件分支的结构清晰,实现父子进程的程序分离及父子进程双方感觉不到对方的行为;因为子进程创建后复制了父进程的堆栈和数据空间,并继承了父进程的资源权限,及父进程和子进程在各自的空间中运行同一内容的程序,所以程序会运行两次。(3)如果连续创建多个子进程而不使用条件进行各自空间的分隔,会出现什么情况?请画出第(2)题实验的进程家族树。Fork()Fork()Fork()Fork()Fork()Fork()Fork()Fork()Fork()Fork()Fork()Fork()Fork()Fork()Fork()如上图所示一共出现了16个A(4)如何实现父子进程之间的父进程等待子进程的同步?答:使用信号量P、V操作来实现子进程与父进程的同步,子进程终止时执行exit()向父进程发终止信号,父进程使用wait()等待子进程的终止。4.实验代码①3-1-1:main(){intp1,i;while((p1=fork())==-1);if(p1>0)for(i=0;i<5;i++){printf("Iamparent.\n");sleep(1);}elsefor(i=0;i<5;i++){printf("Iamchild.\n");sleep(1);}}②3-1-2:#includemain(){fork();fork();fork();fork();putchar('A');//每个进程都要输出‘A’}③3-1-3:main(){intp1,i;while((p1=fork())==-1);if(p1>0){wait(0);for(i=0;i<5;i++){printf("Iamparent.\n");sleep(1);}}else{for(i=0;i<5;i++){printf("Iamchild.\n");sleep(1);}exit(0);}}5.程序运行结果①3-1-1:②3-1-2:③3-1-3:6.实验心得经过这次实验让我有了很大的收获,明白了进程之间的运行机制和如何创建以及使父子进程同步的方法,慢慢熟悉了LINUX中子进程的操作,但是还有很多地方时不懂的,要多看点课外有关的书籍更深入的了解进程之间的关系。

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

操作系统试验报告试验3_1

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部