操作系统的实验二

操作系统的实验二

ID:29924800

大小:111.50 KB

页数:6页

时间:2018-12-25

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

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

1、实用标准文案贵州大学实验报告学院:计算机学院专业:信息安全班级:121姓名饶永明学号1208060066实验组实验时间10.17指导教师王道书成绩实验项目名称实验二进程的创建实验目的1、掌握进程的概念,明确进程的含义2、认识并了解并发执行的实质实验要求课堂集中授课参考程序和学生编程实现、并回答相关疑问;实验内容1、编写一段程序,使用系统调用fork()创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示'a',子进程分别显示字符'b'和字符'c'。试观察记录屏幕上的显示结果,并分

2、析原因。2、修改上述程序,每一个进程循环显示一句话。子进程显示'daughter…'及'son……',父进程显示'parent……',观察结果,分析原因精彩文档实用标准文案实验数据试验程序一:#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');}}试验程序二:#i

3、ncludemain(){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(i=0;i<10;i++)printf("parent%d",i);}}程序一结果:精彩文档实用标准文案程序二结果:精彩

4、文档实用标准文案精彩文档实用标准文案实验总结通过做这次实验让我我了解了子进程和父进程之间的调用顺序,以及调用的结果,而且通过调用fork()可以知道存在多种情况下,子进程发生调用的变化。这根我们以前编程思维有着很大的不同,因为进程的执行顺序是任意的。此次实验让我们对系统调用进程的过程有了更深一步的了解。1、系统是怎样创建进程的?答:系统调用格式为pid=fork(),参数定义为intfork(),fork()返回值意义如下:0:在子进程中,pid变量保存的fork()返回值为0,表示当前进程是子进程。>0:在父进程中,pid变量保存的for

5、k()返回值为子进程的id值(进程唯一标识符)。-1:创建失败。如果fork()调用成功,它向父进程返回子进程的PID,并向子进程返回0,即fork(精彩文档实用标准文案)被调用了一次,但返回了两次。此时OS在内存中建立一个新进程,所建的新进程是调用fork()父进程(parentprocess)的副本,称为子进程(childprocess)。子进程继承了父进程的许多特性,并具有与父进程完全相同的用户级上下文。父进程与子进程并发执行。2、当首次调用新创建进程时,其入口在哪里?答:fork系统调用创建的子进程继承了原进程的context,也就

6、是说fork调用成功后,子进程与父进程并发执行相同的代码。但由于子进程也继承了父进程的程序指针,所以子进程是从fork()后的语句开始执行(也就是新进程调用的入口)。另外fork在子进程和父进程中的返回值是不同的。在父进程中返回子进程的PID,而在子进程中返回0。所以可以在程序中检查PID的值,使父进程和子进程执行不同的分支指导教师意见签名:年月日精彩文档

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

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

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