南京邮电大学 操作系统 实验2:进程的创建 答案.doc_第1页
南京邮电大学 操作系统 实验2:进程的创建 答案.doc_第2页
南京邮电大学 操作系统 实验2:进程的创建 答案.doc_第3页
南京邮电大学 操作系统 实验2:进程的创建 答案.doc_第4页
南京邮电大学 操作系统 实验2:进程的创建 答案.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

操作系统实验报告实验题目:进程的创建 专 业 计算机科学与技术 学 生 姓 名 金琢 班 级 学 号 11006722 指 导 教 师 沙 超 指 导 单 位 计算机学院 日 期 教师评语教师签名: 年 月 日成绩评定备 注一、实验目的1了解进程与程序的区别,加深对进程概念的理解。2掌握进程并发执行的原理,理解进程并发执行的特点,区分进程并发执行与串行执行。3了解fork()系统调用的返回值,掌握用fork()创建进程的方法。4熟悉wait,exit等系统调用。二、实验要求1、实验程序一的要求1)编写一C语言程序(以自己的姓名拼音或者学号命名),实现在程序运行时通过系统调用fork()创建两个子进程,使父、子三进程并发执行,父亲进程执行时屏幕显示“parent”,儿子进程执行时屏幕显示“son”,女儿进程执行时屏幕显示“daughter”。在执行进程的同时,打印各个进程的ID号(提示:调用getpid())。2)多次连续反复运行这个程序(提示:可设置循环,让已被创建的子进程作为父进程,继续创建子进程),观察屏幕显示结果的顺序,直至出现不一样的情况为止。记下这种情况,试简单分析其原因。3)能够查看你的程序所创建的进程的详细信息(提示:ps命令+参数)。并能够以树形结构(提示:pstree命令)显示你所创建的进程的父子关系(提示:若在实验程序一运行结束后再查看进程,则无法显示程序一中创建的进程,所以只能在程序一运行期间,查看当前进程)。4)经过GCC编译的可执行的目标文件要重命名为以自己姓名的拼音为文件名,不能以a.out为文件名2、实验程序二的要求 1)会使用wait、exit等系统调用“实现”其同步推进,多次反复运行改进后的程序,观察并记录运行结果。修改该参考程序,使得系统创建进程不成功。 2)能够查看系统中目前的所有进程,并能够撤销某个进程。请用截图表明撤销成功。 3)经过GCC编译的可执行的目标文件要重命名为以自己姓名的拼音为文件名,不能以a.out为文件名三、实验指导1fork()系统调用 创建一个新进程。系统调用格式: pid=fork()参数定义: int fork()fork()返回值意义如下:0:在子进程中,pid变量保存的fork()返回值为0,表示当前进程是子进程。0:在父进程中,pid变量保存的fork()返回值为子进程的pid值(进程唯一标识符)。-1:创建失败。2Wait()系统调用等待子进程运行结束。如果子进程没有完成,父进程一直等待。wait()将调用进程挂起,直至其子进程因暂停或终止而发来软中断信号为止。系统调用格式:int wait(status)参数定义: int *status;其中,status是用户空间的地址,为0表示子进程正常结束,非0则表示出现了各种各样的问题。3Exit()系统调用终止进程的执行。系统调用格式:void exit(status)参数定义: int status;其中,status是返回给父进程的一个整数。Exit(0)表示进程正常终止,exit(1)表示进程运行有错,异常终止。4参考程序#include main() int p1,p2,i; while(p1=fork()= = -1); /*创建子进程p1*/ if (p1= =0) for(i=0;i4;i+) printf(daughter %dn,i); else while(p2=fork()= = -1); /*创建子进程p2*/ if(p2= =0) for(i=0;i4;i+) printf(son %dn,i); else for(i=0;i4;i+) printf(parent %dn,i); #includemain( ) int pid; pid=fork( ); /*创建子进程*/ switch(pid) case -1: /*创建失败*/ printf(fork fail!n); exit(1); case 0: /*子进程*/ printf(subprocess!n); exit(0); default: /*父进程*/ wait(0); /*同步*/ printf(completed !n); exit(0); 四、运行结果及其结果分析五、思考题1、通过实验结果,谈谈你对fork函数创建进程作用的理解。 Fork函数会被执行两次,通过向父进程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论