下载此文档

操作系统试验.doc


文档分类:IT计算机 | 页数:约26页 举报非法文档有奖
1/26
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/26 下载此文档
文档列表 文档介绍
《操作系统》实验报告
2013/2014 学年第 2 学期
系别************
专业************
班级****************
姓名*******
学号**************
授课老师*********
******学院实验报告
姓名: 课程名称:**************
院(系):计算机学院专业/年级:*************
实验项目二进程管理
一、实验目的
理解进程的概念,掌握父、子进程创建的方法。
认识和了解并发执行的实质,掌握进程的并发及同步操作。
二、实验内容
编写一C语言程序,实现在程序运行时通过系统调用fork( )创建两个子进程,使父、子三进程并发执行,父亲进程执行时屏幕显示“I am father”,儿子进程执行时屏幕显示“I am son”,女儿进程执行时屏幕显示“I am daughter”。
多次连续反复运行这个程序,观察屏幕显示结果的顺序,直至出现不一样的情况为止。记下这种情况,试简单分析其原因。
修改程序,在父、子进程中分别使用wait()、exit()等系统调用“实现”其同步推进,并获取子进程的ID号及结束状态值。
多次反复运行改进后的程序,观察并记录运行结果。
三、源程序及运行结果
源程序1:
#include<sys/>
#include<>
#include<>
#include<>
int main()
{
char *massage;
int i;
int pid=fork();
if(pid<0)
printf("error");
else if(pid==0)
{
massage="I am son\n";
i=4;
}
else
{ i=4;
pid=fork();
if(pid==0)
massage="I am daugther\n";
else
massage="I am father\n";
}
for(;i>0;i--)
{
printf("%s",massage);
sleep(1);
}
return 0;
}
运行结果:(截图)
源程序2:…………
#include <sys/>
#include <>
#include <>
#include <sys/>
#include <>
int main(int argc,char **argv)
{
int pid,status,i ;
pid=fork();
if(pid<0)
printf("error!");
if(pid==0)
{ printf("I am process ID is %d.\n",getpid());
exit(5);
}
else
{
sleep(1);
printf("I am process ID is % for child...\n",getpid());
pid=wait(&status);
i=WEXITSTATUS(status);
printf("My child's ID is % status=%d\n",pid,i);
}
}
运行结果:
四、实验分析与总结
实验内容1运行结果为什么无固定顺序,fork()函数创建进程是如何并发执行的。
答:因为是并发执行的,fork()函数创建的三个进程抢占CPU不同,从而导致三个进被CPU调用执行的顺序不同,从而输出的结果无固定顺序;fork()函数调用成功后,子进程与父进程并发执行相同的代码,但由于子进程也继承了父进程的程序指针,所以子进程是从fork()后的语句开始执行,另外fork在子进程和父进程中的返回值是不同的,在父进程中返回子进程的PID,而在子进程中返回0,使父进程和子进程执行不同的分支,从而实现了进程的并发执行。
实验内容3是如何实现父子进程的同步执行的。
答:wait()会暂时停止目前进程的执行,直到有信号来到或子进程结束。程序段主要使用了函数wait()和, exit()这是因为父进程必须等待两个子进程终止后才终。在父进程中调用wait()函数,则父进程被阻塞,进入等待队列,等待子进程结束。子进程终止时执行exit()向父进程发终止信号,当接到信号后,父进提取子进程的结束状态值,从wait()返回继续执行原程序,从而

操作系统试验 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数26
  • 收藏数0 收藏
  • 顶次数0
  • 上传人分享精品
  • 文件大小353 KB
  • 时间2018-02-28