操作系统实验实验.doc

操作系统实验实验.doc

ID:55109682

大小:1.13 MB

页数:23页

时间:2020-04-27

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

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

1、广州大学学生实验报告开课学院及实验室:计算机科学与工程实验室2015年11月11日实验课程名称操作系统成绩实验项目名称进程管理与进程通信指导老师陈康民(***报告只能为文字和图片,老师评语将添加到此处,学生请勿作答***)进程管理(一)进程的创建实验一、实验目的1、掌握进程的概念,明确进程的含义2、认识并了解并发执行的实质二、实验内容1、编写一段程序,使用系统调用fork()创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示'a',子进程分别显示字符'b'和字符'c'。试观察记录屏幕上的显示结果,并分析原因。2、修改上

2、述程序,每一个进程循环显示一句话。子进程显示'daughter…'及'son……',父进程显示'parent……',观察结果,分析原因。三、实验步骤1、编写一段程序,使用系统调用fork()创建两个子进程。代码:#includemain(){intp1,p2;while((p1=fork())==-1);/*创建子进程p1*/if(p1==0)putchar('b');else{while((p2=fork())==-1);/*创建子进程p2*/if(p2==0)putchar('c');elseputchar('a');}}运行结果:bca,bac,abc,……

3、都有可能。2、修改上述程序,每一个进程循环显示一句话。子进程显示'daughter…'及'son……',父进程显示'parent……',观察结果,分析原因。代码:#includemain(){intp1,p2,i;while((p1=fork())==-1);/*创建子进程p1*/if(p1==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("son%d",i);elsefor(

4、i=0;i<10;i++)printf("parent%d",i);}}结果:parent…son…daughter..daughter..或parent…son…parent…daughter…等四、分析原因除strace外,也可用ltrace-f-i-S./executable-file-name查看以上程序执行过程。1、从进程并发执行来看,各种情况都有可能。上面的三个进程没有同步措施,所以父进程与子进程的输出内容会叠加在一起。输出次序带有随机性。2、由于函数printf()在输出字符串时不会被中断,因此,字符串内部字符顺序输出不变。但由于进程并发执行的调度顺序和父子进程抢

5、占处理机问题,输出字符串的顺序和先后随着执行的不同而发生变化。这与打印单字符的结果相同。五、思考题(1)系统是怎样创建进程的?linux系统创建进程都是用fork()系统调用创建子进程。Init程序以/etc/inittab为脚本文件来创建系统的新进程的。新进程还克以创建新进程。创建新进程是通过克隆老进程或当前进程来创建的。新进程的创建实用系统调用sys_fork()或sys_clone(),并且在内核模式下完成。在系统调用结束时,系统从物理内存中分配一个心的task_struct()数据结构和进程堆栈,同时获得一个唯一的标示此进程的标识符。 通过FORK函数调用促使内核创建一个新

6、的进程,该进程是调用进程的一个精确的副本。新创建的进程为子进程,调用的FORK进程为父进程,而且创建出来的是两个副本,即,两个进程,但他们互不干扰。 (2)当首次调用新创建进程时,其入口在哪里?首次创建进程时,入口在进程1那里。(二)进程的控制实验一、实验目的1、掌握进程另外的创建方法2、熟悉进程的睡眠、同步、撤消等进程控制方法二、实验内容1、用fork()创建一个进程,再调用exec()用新的程序替换该子进程的内容2、利用wait()来控制进程执行顺序三、参考程序#include#includemain(){intpid;pid=fork()

7、;/*创建子进程*/switch(pid){case-1:/*创建失败*/printf("forkfail!");exit(1);case0:/*子进程*/execl("/bin/ls","ls","-1","-color",NULL);printf("execfail!");exit(1);default:/*父进程*/wait(NULL);/*同步*/printf("lscompleted!");exit(0);}}四、运行结果五、思考(1)可执行文件

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

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

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