1 / 51
文档名称:

操作系统实验报告..doc

格式:doc   大小:1,904KB   页数:51页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

操作系统实验报告..doc

上传人:q1188830 2019/7/10 文件大小:1.86 MB

下载得到文件列表

操作系统实验报告..doc

文档介绍

文档介绍:SHANGHAIUNIVERSITY操作系统实验报告姓名:戎康学号:12121152教师:刘福岩日期:、,加深对进程概念的理解。体会系统进程调度的方法和效果。了解进程之间的通信方式以及各种通信方式的使用。、进程控制的概念以及进程通信等内容(包括软中断通信、管道、消息队列、共享内存通信及信号量概念)。熟悉本《实验指导》第五部分有关进程控制、进程通信的系统调用。它会引导你学会怎样掌握进程控制。阅读例程中的程序段。三、实验内容、步骤及结果:用vi编写使用系统调用的C语言程序。编写程序。显示进程的有关标识(进程标识、组标识、用户标识等)。经过5秒钟后,执行另一个程序,最后按用户指示(如:Y/N)结束操作。程序使用的系统调用原型请参见本《实验指导》第五部“Linux编程系统调用”中“有关进程的系统调用”部分的相关内容。,编写程序。实现父进程创建一个子进程。体会子进程与父进程分别获得不同返回值,进而执行不同的程序段的方法。思考:子进程是如何产生的?又是如何结束的?子进程被创建后它的运行环境是怎样建立的?答:是由父进程用fork()函数创建形成的,通过exit()函数自我结束,子进程被创建后核心将其分配一个进程表项和进程标识符,检查同时运行的进程数目,并且拷贝进程表项的数据,由子进程继承父进程所有文件。,编写程序。父进程通过循环语句创建若干子进程。探讨进程的家族树以及子进程继承父进程的资源的关系。思考:①画出进程的家族树。子进程的运行环境是怎样建立的?反复运行此程序看会有什么情况?解释一下。②修改程序,使运行结果呈单分支结构,即每个父进程只产生一个子进程。画出进程树,解释该程序。答1:反复运行,子进程的编号在不断变化,但是初始的父进程的编号不会变,因为:父进程始终是该程序在虚拟机操作系统下的进程号,但是子进程是该父进程创建的子进程不断增加而得的,子进程的编号应该是顺序递增的。答2:#include<>#include<sys/〉#include<>main(){ inti,pid;for(i=1;i<4;i++)if(pid=fork())break;},使用fork()和exec()等系统调用创建三个子进程。子进程分别启动不同程序,并结束。反复执行该程序,观察运行结果,结束的先后,看是否有不同次序。思考:子进程运行其它程序后,进程运行环境怎样变化的?反复运行此程序看会有什么情况?解释一下。答:子进程运行其他程序后,这个进程就完全被新程序代替。由于并没有产生新进程所以进程标识号不改变,除此之外的旧进程的其他信息,代码段,数据段,栈段等均被新程序的信息所代替。新程序从自己的main()函数开始进行。反复运行此程序发现结束的先后次序是不可预知的,每次运行结果不一样。原因是当每个子进程运行其他程序时,他们的结束随着其他程序的结束而结束,所以结束的先后次序在改变。,验证子进程继承父进程的程序、数据等资源。如用父、子进程修改公共变量和私有变量的处理结果;父、子进程的程序区和数据区的位置。思考:子进程被创建后,对父进程的运行环境有影响吗?解释一下。答:有,子进程可以改变程序中的共享资源,即公共变量。《实验指导》第五部分中“管道操作的系统调用”。复习管道通信概念,参考例程5,编写一个程序。父进程创建两个子进程,父子进程之间利用管道进行通信。要求能显示父进程、子进程各自的信息,体现通信效果。思考:①什么是管道?进程如何利用它进行通信的?解释一下实现方法。②修改睡眠时机、睡眠长度,看看会有什么变化。请解释。③加锁、解锁起什么作用?不用它行吗?答1:管道:是指能够连接一个写进程和一个读进程、并允许它们以生产者-消费者方式进行通信的一个共享文件,又称为pipe文件。由于写进程从管道的入端将数据写入管道,而读进程则从管道的出端读出数据。进程利用管道进行通信:将索引结点中的直接地址项作为一个循环队列来管理,为它设置一个读指针,一个写指针,按先进先出的顺序读写。在该例中,利用fd[2]这个数组来确定读写替换。执行进程1时,lockf(fd[1],1,0)使得管道写入端加锁,这样就可以进行写入了,write(fd[1],buf,50);/*信息写入管道*/lockf(fd[1],0,0);/*管道写入端解锁*/这样其他进程就能继续进行读写操作了。然后执行进程2的写入,过程同上。最后父进程的进行读,read(fd[0],s,50)。读写之间、写和写之间也是互斥的,多以会加锁。答2:修改1号子进程的睡眠时间长度修改为20s后,等待了