操作系统实验报告三.doc

上传人:李医生 文档编号:5720045 上传时间:2020-07-24 格式:DOC 页数:5 大小:126KB
返回 下载 相关 举报
操作系统实验报告三.doc_第1页
第1页 / 共5页
操作系统实验报告三.doc_第2页
第2页 / 共5页
操作系统实验报告三.doc_第3页
第3页 / 共5页
操作系统实验报告三.doc_第4页
第4页 / 共5页
操作系统实验报告三.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《操作系统实验报告三.doc》由会员分享,可在线阅读,更多相关《操作系统实验报告三.doc(5页珍藏版)》请在三一文库上搜索。

1、课程实验报告课程名称计算机操作系统班级实验日期姓名学号实验成绩实验名称实验3 进程并发与同步实验目的及要求1、 加深对进程概念的理解,区分进程并发执行与串行执行;2、 掌握进程并发执行的原理,理解进程并发执行的特点;3、了解fork( )系统调用的返回值,掌握用fork()创建进程的方法;熟悉wait、exit等系统调用;4、能利用相应的系统调用实现进程树与进程间的同步。实验环境操作系统:linux Unbuntu 11.10实验工具:Vmware实验内容1、编写一C语言程序,实现在程序运行时通过系统调用fork( )创建两个子进程,使父、子三进程并发执行,父亲进程执行时屏幕显示“I am f

2、ather”,儿子进程执行时屏幕显示“I am son”,女儿进程执行时屏幕显示“I am daughter”。要求多次连续反复运行这个程序,观察屏幕显示结果的顺序,直至出现不一样的情况为止。要求有运行结果截图与结果分析2、连续4个fork()的进程家族树,family1-1.c程序清单如下:#include main() fork(); fork(); fork(); fork(); printf(“An”);请根据程序运行结果,画出进程家族树,并分析原因。3、修改程序1,在父、子进程中分别使用wait、exit等系统调用“实现”其同步推进,父进程必须等待儿子进程与女儿进程结束,才可以输出消

3、息。写出相应的同步控制,并分析运行结果。4、创建一个子进程,并给它加载程序,其功能是调用键盘命令“ls -l”,已知该键盘命令的路径与文件名为:/bin/ls。父进程创建子进程,并加载./child2程序。写出相应的程序代码并分析程序运行结果。算法描述及实验步骤1、 编写一C语言程序,实现在程序运行时通过系统调用fork( )创建两个子进程,使父、子三进程并发执行,父亲进程执行时屏幕显示“I am father”,儿子进程执行时屏幕显示“I am son”,女儿进程执行时屏幕显示“I am daughter”。并且反复的测试,观察每一次的执行的顺序有什么不同2、 修改程序1,在父、子进程中分别

4、使用wait、exit等系统调用“实现”其同步推进,父进程必须等待儿子进程与女儿进程结束,才可以输出消息。4、创建一个子进程,并给它加载程序,其功能是调用键盘命令“ls -l”,已知该键盘命令的路径与文件名为:/bin/ls。父进程创建子进程,并加载./child2程序。调试过程及实验结果总结1、实现在程序运行时通过系统调用fork( )创建两个子进程,使父、子三进程并发执行,父亲进程执行时屏幕显示“I am father”,儿子进程执行时屏幕显示“I am son”,女儿进程执行时屏幕显示“I am daughter”。这一点需要注意。返回结果时,由于每一次的不确定性,所以 要想得到比较具有

5、说服性的,就必须经过多次的测试。2、连续4个fork()的进程家族树在进行实验的时候可能会出现进程输出信息一直一样的情况,需要多次执行输出才有可能会看到输出结果不一样的情况附录Child.C#include #includeint main() printf(I am child!n);execl(/bin/ls, ls, -l, NULL);return 0;创建进程#include int main() fork(); fork(); fork(); fork(); printf(An);return 0;Father.c#include #include #include #includ

6、e main() int p; while (p=fork()=-1); if (p=0) execl(./child,0); else wait(0); exit(0); 进程并发#include int main() int p1,p2; while (p1=fork()=-1); if (p1=0) printf(I am son.n); else while (p2=fork()=-1); if (p2=0) printf(I am daughter.n); else printf(I am father.n); return 0;进程同步#include #include int main() int p1,p2; while (p1=fork()=-1); if (p1=0) printf(I am son.n); else while (p2=fork()=-1); if (p2=0) printf(I am daughter.n); else wait(0); printf(I am father.n); exit(0); return 0;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1