操作系统实验报告

操作系统实验报告

ID:6349527

大小:548.50 KB

页数:32页

时间:2018-01-11

操作系统实验报告_第1页
操作系统实验报告_第2页
操作系统实验报告_第3页
操作系统实验报告_第4页
操作系统实验报告_第5页
资源描述:

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

1、软件102凌延荣201001014204目录实验一进程的创建实验二进程通信实验三哲学家就餐问题实验四存储器管理实验五银行家算法32软件102凌延荣201001014204实验一进程的创建一实验目的(1)加深对操作系统系统调用功能和进程概念的理解,明确进程和程序的区别。(2)掌握Linux中进程的创建方法,进一步理解进程的并发执行。二实验内容1、编写一段程序,使用系统调用fork()创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示'a',子进程分别显示字符'b'和字符'c'。试观察记录屏

2、幕上的显示结果,并分析原因。三实验步骤1:需求分析实现进程的创建和要求进程实现的作用。2:概要设计1、fork()创建一个新进程。系统调用格式:pid=fork()参数定义:intfork()fork()返回值意义如下:0:在子进程中,pid变量保存的fork()返回值为0,表示当前进程是子进程。>0:在父进程中,pid变量保存的fork()返回值为子进程的id值(进程唯一标识符)。-1:创建失败。如果fork()调用成功,它向父进程返回子进程的PID,并向子进程返回0,即fork()被调用了一次,但返回了两次。此时OS在内存中建立一个新进程,所建的

3、新进程是调用fork()父进程(parentprocess)的副本,称为子进程(childprocess)。子进程继承了父进程的许多特性,并具有与父进程完全相同的用户级上下文。父进程与子进程并发执行。核心为fork()完成以下操作:(1)为新进程分配一进程表项和进程标识符进入fork()后,核心检查系统是否有足够的资源来建立一个新进程。若资源不足,则fork()系统调用失败;否则,核心为新进程分配一进程表项和唯一的进程标识符。32软件102凌延荣201001014204(2)检查同时运行的进程数目超过预先规定的最大数目时,fork()系统调用失败。(

4、3)拷贝进程表项中的数据将父进程的当前目录和所有已打开的数据拷贝到子进程表项中,并置进程的状态为“创建”状态。(4)子进程继承父进程的所有文件对父进程当前目录和所有已打开的文件表项中的引用计数加1。(5)为子进程创建进程上、下文进程创建结束,设子进程状态为“内存中就绪”并返回子进程的标识符。(6)子进程执行虽然父进程与子进程程序完全相同,但每个进程都有自己的程序计数器PC(注意子进程的PC开始位置),然后根据pid变量保存的fork()返回值的不同,执行了不同的分支语句。…..pid=fork();if(pid==0)printf("I'mthech

5、ildprocess!");elseif(pid>0)printf("I'mtheparentprocess!");elseprintf("Forkfail!");……fork()调用前PCfork()调用后PC…..pid=fork();if(pid==0)printf("I'mthechildprocess!");elseif(pid>0)printf("I'mtheparentprocess!");elseprintf("Forkfail!");………..pid=fork();if(pid==0)printf("I'mt

6、hechildprocess!");elseif(pid>0)printf("I'mtheparentprocess!");elseprintf("Forkfail!");……看这个程序的时候,头脑中必须首先了解一个概念:在语句pid=fork()之前,只有一个进程在执行这段代码,但在这条语句之后,就变成两个进程在执行了,这两个进程的代码部分完全相同,将要执行的下一条语句都是if(pid==0)……。3:详细设计32软件102凌延荣201001014204#include#include#i

7、ncludemain(){ intp1,p2; while((p1=fork())==-1);   if(p1==0)   putchar('b');else {while((p2=fork())==-1);        if(p2==0)     putchar('c');     elseputchar('a');}}<运行结果分析:>通过进程执行来看,输出bac,acb等情况者有可能。<原因:>FORK()创建进程所需的时间要多于输出一个字符的时间,因此在主进程创建进程2的同时,进程1就输出了b,进程2和主程序的输出次序是有

8、随机性的,所以会出现上述结果。4:测试结果:CHILD1ISSENDINGMESSAGE!CHILD2ISS

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

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

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