实验二操作系统进程创建

实验二操作系统进程创建

ID:30888055

大小:253.85 KB

页数:5页

时间:2019-01-03

实验二操作系统进程创建_第1页
实验二操作系统进程创建_第2页
实验二操作系统进程创建_第3页
实验二操作系统进程创建_第4页
实验二操作系统进程创建_第5页
资源描述:

《实验二操作系统进程创建》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、丈it民族丈喙计算机科学与工程学院《操作系统》课程实验报告实验题目:实验二进程的创建实验类型:□演示性□验证性■操作性□设计性□综合性专业:网络工程班级:163班学生姓名:**学号:*888888实验FI期:2018年4月3FI实验地点:1305实验学时:42018年5月10日实验成绩:指导教师签字:【实验目的】:(1)掌握进程的概念,明确进程的含义(2)认识并了解进程的并发执行(3)掌握进程的创建(4)掌握进程另外的创建方法exec系列【实验内容】:1、阅读实例代码forkl,并编辑、编译、运行,记录程序的运行结果,尝试给岀合理的解释。2、阅读实例代码fork2,并编辑、编

2、译、运行,记录程序的运行结果,尝试给出合理的解释。3、阅读实例代码fork3,查阅调用execO用新的程序替换该子进程的内容,掌握在程序中运行一个操作系统命令的方法,尝试给出合理的解释。4、修改fork3,使之能把运行的命令和程序作为参数传给fork35、写实验报告附:实验代码Forkl.c#include#includemain(){intpid;pid=fork();if(pid二二-1){printf("forkfailed.”);rcturn;}printf("I'mthechild・");printf(mtheparen

3、t.ff);return;}Fork2.c^includemain(){intpl,p2,i;while((pl=fork())==-1);/*创建子进程pl*/if(pl==0)for(i=0;i<10;i++)printf(^daughter%d〃,i);else{while((p2=fork())==-1);/*创建子进程p2*/if(p2==0)for(i=0;i<10;i++)printf(,zson%d〃,i);elsefor(i=0;i<10;i++)printf("parent%d〃,i);Fork3.c#include

4、dio.h>includemain(){intpid;pid=fork();if(pid二二0){printf(mthechild.”);excel("/bin/ls”,”Is”,0);perror(“execerror・");}elseif(pid>0)printf(mtheparent.n)elseprintf("forkfailed.n);printf(^programend.”);【运行结果】:Forkl.c运行结果截图Fock2.c运行结果截图「回root@localhost:~/桌面_□X文件(F)编辑(E)查看(V〉搜索(

5、S)终端(T)帮助(H)Fock3.c运行结果截图parent1103970304Llparent1103970304parent1103970304parent1103970304son0son1103970304son1103970304son1103970304son1103970304son1103970304son1103970304son1103970304son1103970304son1103970304[root@localhost桌面]#cc・ohyF3.c[root@localhost桌面]#./hyITmtheparent.Iprogram・

6、Tmth

7、echild.三[「oo也localhost桌面]#a.html卜F2.chyyhj[a.outFl-F3.cScreenshot・pngzl.cIcppzlFl.cGoogleHosts.shstudentzl.c~H#cppzl卄F2~huivpnsetup.sh未命名文件夹【分析原因L(1)对于程序1:因为系统调用fork()函数是一次调用两次返回值,而且先生成子进程还是父进程是不确定的,所以第一次执行生成子进程的时候返冋的pid=0,判断pid!二-1,所以输出了I'mthechild.I'mtheparent.第二次,执行父进程的时候,返回的是子进程的进程号pid>

8、0,即pid的值仍然不为T,所以又输出了一次1'mthechild・1'mtheparent□(2)对于程序2:由于进程并发执行的调度顺序和父子进程抢占处理机的问题,输出字符的顺序和先后随着执行的不同而发牛变化。(3)对于程序3:第一次调用fork()函数I]寸,由于执行的是子进程还是父进程是随机的,所以第一次对父进程返回的是子进程的进程号(大于0),即pid>0,所以输出rmtheparent.Programend.当第二次执行子进程时返回值是0,即pid=0,所以输岀rmthechild.并调用了e

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

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

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