惠州学院操作系统实验一

惠州学院操作系统实验一

ID:38173853

大小:443.50 KB

页数:4页

时间:2019-05-24

惠州学院操作系统实验一_第1页
惠州学院操作系统实验一_第2页
惠州学院操作系统实验一_第3页
惠州学院操作系统实验一_第4页
资源描述:

《惠州学院操作系统实验一》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验一进程的创建与并发执行一、实验目的(1)熟悉Linux工作环境和GCC工具(2)加深对进程概念的理解,明确进程和程序的区别(3)进一步认识并发进程的实质和特征二、实验器材微型计算机、Ubuntu版本的Linux系统三、实验内容任务1:进程创建编写一段程序,让父进程产生两个子进程,父进程显示字符“a”、两个子进程,分别显示字符“b”、“c”。运行程序,观察并分析运行结果。程序源代码如下:#includemain(){intp1,p2;while((p1=fork())==-1)

2、;//父进程创建第一个进程,直到成功if(p1==0)//0返回给子进程1putchar('b');//P1的处理进程else//正数返回给父进程(子进程号){while((p2=fork())==-1);//父进程创建第二个进程,直到成功if(p2==0)//0返回给子进程2putchar('c');//P2的处理过程elseputchar('a');//P2创建完成后,父进程的处理过程}}程序运行截图如下:程序运行结果分析:首先进程main作为父进程创建第一个进程p1,此时存在p1和main两

3、个进程,分别为父进程和子进程,所以它们的p1分别为大于0和等于0。这两个进程分别执行下面的if函数体。当子进程执行时,打印出50000次childA;当父进程执行时,又创建了一个新的子进程p2,接下去的执行和原先的p1和main进程相同。所以最终系统中存在了4个进程,其中一个进程为终端,另外3个进程分别打印属于自己的内容。任务2:将上述的输出字符改为输出较长的字符串,观察进程并发执行,分析执行结果。程序源代码如下:#includemain(){intp1,p2,i;while((

4、p1=fork())==-1);//父进程创建第一个进程,直到成功if(p1==0)for(i=0;i<50000;i++)printf("childA%d",i);else{while((p2=fork())==-1);//父进程创建第二个进程,直到成功if(p2==0)for(i=0;i<50000;i++)printf("childB%d",i);else//P2创建完成后,父进程的处理过程for(i=0;i<50000;i++)printf("parent%d",i);}}程序

5、运行结果截图如下:运行结果分析:首先进程main作为父进程创建第一个进程p1,此时存在p1和main两个进程,分别为父进程和子进程,所以它们的p1分别为大于0和等于0。这两个进程分别执行下面的if函数体。当子进程执行时,打印出50000次childA;当父进程执行时,又创建了一个新的子进程p2,接下去的执行和原先的p1和main进程相同。所以最终系统中存在了4个进程,其中一个进程为终端,另外3个进程分别打印属于自己的内容。一、思考题解答(包括需要改写的程序的源码及适当注释)1.当新创建进程开始执行

6、时,指令指针的起始位置在哪里?答:创建新进程之后,此时有main和p1两个进程,它们分别根据他们是子进程还是父进程执行不同的if函数体,所以指令指针的起始位置在“if(p1==0)”这一句。2.如果将任务1改为:编写一段程序,让父进程创建一个子进程,然后父进程显示字符“a”;子进程创建一个子子进程,然后显示字符“b”;子子进程显示字符“c”。如何改写源程序?(实验报告上给出完整的源码,并在机器上运行。)答:修改后的源代码如下:#includemain(){intp1,p2;whi

7、le((p1=fork())==-1);//父进程创建一个子进程,直到成功if(p1==0)//0返回给子进程{//P1的处理过程while((p2=fork())==-1);//子进程创建子子进程,直到成功if(p2==0)putchar('c');//子子进程P2的处理过程elseputchar('b');}else{putchar('a');//子子进程创建完成后,父进程的处理过程}}修改后的运行结果如下:

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

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

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