![实验一——Linux环境下的进程管理之欧阳家百创编_第1页](http://file2.renrendoc.com/fileroot_temp3/2021-7/17/a4d56028-c7fb-4dae-9745-c117f9ee20e3/a4d56028-c7fb-4dae-9745-c117f9ee20e31.gif)
![实验一——Linux环境下的进程管理之欧阳家百创编_第2页](http://file2.renrendoc.com/fileroot_temp3/2021-7/17/a4d56028-c7fb-4dae-9745-c117f9ee20e3/a4d56028-c7fb-4dae-9745-c117f9ee20e32.gif)
![实验一——Linux环境下的进程管理之欧阳家百创编_第3页](http://file2.renrendoc.com/fileroot_temp3/2021-7/17/a4d56028-c7fb-4dae-9745-c117f9ee20e3/a4d56028-c7fb-4dae-9745-c117f9ee20e33.gif)
![实验一——Linux环境下的进程管理之欧阳家百创编_第4页](http://file2.renrendoc.com/fileroot_temp3/2021-7/17/a4d56028-c7fb-4dae-9745-c117f9ee20e3/a4d56028-c7fb-4dae-9745-c117f9ee20e34.gif)
![实验一——Linux环境下的进程管理之欧阳家百创编_第5页](http://file2.renrendoc.com/fileroot_temp3/2021-7/17/a4d56028-c7fb-4dae-9745-c117f9ee20e3/a4d56028-c7fb-4dae-9745-c117f9ee20e35.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、欧阳家百创编软件学院欧阳家百上机实验报告课程名称:操作系统实验项目:实验一:Linux环境下逬程管理实验室:耘慧402姓名:学号:专业班级:实验时间:实验成绩评阅教师内存的申请等预备知识。五、实验内容及步骤 实验内容:(1) 进程的创建编写一段程序,使用系统调用fork ()创建两个子进程。当此程序运行时,在系 统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显 示字符“訂;子进程分别显示字符“b”和字符“c”。试观察记录屏幕上的显示结 果,并分析原因。(2) 进程的控制修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话,再观察程 序执行时屏幕上出现的现象
2、,并分析原因。如果在程序中使用系统调用lockf ()来给每一个进程加锁,可以实现进程之间的 互斥,观察并分析出现的现象。(3) 用fork()创建一个进程,再调用exec()用新的程序替换该子进程的内容; 利用wait()来控制进程执行顺序。 实验步骤:1.进程的创建1.1进程UNIX中,进程既是一个独立拥有资源的基本单位,乂是一个独立调度的基本单 位。一个进程实体由若干个区(段)组成,包括程序区、数据区、栈区、共享存储区 等。每个区乂分为若干页,每个进程配置有唯一的进程控制块PCB,用于控制和管理进 程。PCB的数据结构如下:(1) 进程表项(Process Table Entry)。包括
3、一些最常用的核心数据: 进程标识符PID、用户标识符UID、进程状态、事件描述符、进程和U区在内存或外存的地址、软中断信号、计时域、进程的大小、偏置值nice、指向就绪队列中下 一个PCB的指针P_Link、指向U区进程正文、数据及栈在内存区域的指针。(2) U区(U Area)。用于存放进程表项的一些扩充信息。每一个进程都有一个私用的U区,其中含有:进程表项指针、真正用户标识符欧阳家百创编 u-ruid(read user ID)、有效用户标识符 ueuid(effective user ID)、用户文件 描述符表、计时器、内部I/O参数、限制字段、差错字段、返回值、信号处理数组。曲于UNI
4、X系统釆用段页式存储管理,为了把段的起始虚地址变换为段在系统中 的物理地址,便于实现区的共享,所以还有:(3) 系统区表项。以存放各个段在物理存储器中的位置等信息。系统把一个进程的虚地址空间划分为若干个连续的逻辑区,有正文区、数据 区、栈区等。这些区是可被共享和保护的独立实体,多个进程可共享一个区。为了对区 进行管理,核心中设置一个系统区表,各表项中记录了以下有关描述活动区的信息:区的类型和大小、区的状态、区在物理存储器中的位置、引用计数、指向文件 索引结点的指针。(4) 进程区表系统为每个进程配置了一张进程区表。表中,每一项记录一个区的起始虚地址 及指向系统区表中对应的区表项。核心通过查找进
5、程区表和系统区表,便可将区的逻辑 地址变换为物理地址。1. 2进程映像UNIX系统中,进程是进程映像的执行过程,也就是正在执行的进程实体。它山 三部分组成:(1) 用户级上、下文。主要成分是用户程序;(2) 寄存器上、下文。由CPI;中的一些寄存器的内容组成,如PC, PSW, SP及 通用寄存器等;(3) 系统级上、下文。包括OS为管理进程所用的信息,有静态和动态之分。1.3所涉及的系统调用fork()创建一个新进程。系统调用格式:pid=fork()参数定义:int fork()fork()返回值意义如下:0:在子进程中,pid变量保存的fork()返回值为0,表示当前进程是子进程。0:在
6、父进程中,pid变量保存的fork()返回值为子进程的id值(进程唯一 标识符)。-1:创建失败。如果fork()调用成功,它向父进程返回子进程的PID,并向子进程返回0,即 fork()被调用了一次,但返回了两次。此时OS在内存中建立一个新进程,所建的新进 程是调用fork()父进程(parent process )的副本,称为子进程(child process)。子进程继承了父进程的许多特性,并具有与父进程完全相同的用户级上下 文。父进程与子进程并发执行。1.4核心为fork()完成以下操作(1) 为新进程分配一进程表项和进程标识符进入fork()后,核心检查系统是否有足够的资源来建立一个
7、新进程。若资源 不足,则fork()系统调用失败;否则,核心为新进程分配一进程表项和唯一的进程标 识符。(2) 检查同时运行的进程数訂超过预先规定的最大数LI时,fork()系统调用失败。(3) 拷贝进程表项中的数据将父进程的当前LI录和所有已打开的数据拷贝到子进程表项中,并置进程的状 态为“创建”状态。(4) 子进程继承父进程的所有文件对父进程当前LI录和所有已打开的文件表项中的引用计数加lo(5) 为子进程创建进程上、下文进程创建结束,设子进程状态为“内存中就绪”并返回子进程的标识符。(6) 子进程执行虽然父进程与子进程程序完全相同,但每个进程都有自己的程序计数器PC(注 意子进程的PC开
8、始位置),然后根据pid变量保存的fork()返回值的不同,执行了 不同的分支语句。六、实验数据及结果分析运行结果1厂回root(g)stud ent: /卓面_ X文件(F)漏辑(E查香2玻续(S) 终端帮助(HrooWstudent 黨面JJrootstudentrootstudentrootstudentrootstudentrootstudentrootstudent 桌面# ,/cbash:,/c:没有那个文件或目录rootstudentgcc -o vvvrootstudent MffiS ./ vvvbash: ./: is a directoryrooWstudent 童面fi
9、 gcc -o fffrooWstudent 桌面# . /fffab rooWstudent 桌面# cQ分析:山于函数printfO输出的字符串之间不会被中断,因此,每个字符串内部的桌面# 桌面# 莫面M 莫面# 車面Mgcc -o hahaha javac ./hahahagcc -o ZZ2 ./zzzgcc -o qqqjava, cjava, cjava, cjava, c字符顺序输岀时不变。但是,山于进程并发执行时的调度顺序和父子进程的抢占处理机问题,输出字符串的顺序和先后随着执行的不同而发生变化。这与打印单字符的结果相同。运行结果2i roowstenx amj* gcc o
10、ccc rarentla/roarent 15/rparent 16/wrent 17/rparent 18/nparent 19/nparent 20/nwrent Zl/nparent 2 2/npererit 23/freit 2Vrfent28阿値 2np3r“t 28/npirw 2d/nparent 30/npdret 31/nprrt 32/rrent 矽g鹿ni35Zflpdrert 36/nparent 37/rsrent 38/nparent 39/nparent 40/npsrent 41/parent 42/grent 43/rcarent 44/WWT 45/wren
11、t 46Zrcerent 4?Zftpdre*n 4&/npdft50/wrent 51/npart 52/nrerit 53/rrnt您ni56Znpdre*it 5?/npdrt 58/nparen: 59/nparent 60/nparent 61/nparent 62/wrent 63/rarent 64/rarent 65/npare nt 54/rcent68Znpart 69/npdrnt Wn(rT ?l/wrnt ?2/4艸273/nrert 74/0“ni ?5ZrrenT ?6Zrdrent ?Znpdf6ftt 7/npareftt Wnrr.x 如 nparent 8
12、1/nparent 32/nwrert S3/r3rent 34/rparent 85/)arent 86/nparent 3T/npa rant 88/ru“t fift/npartd2/rarant O3/ftougMer /ndaughter 7/ndaughter B/nda uhtcr OZndautr lO/ntewtar n/ruqhtcr lS/ndauhtrw/rrfaughxe5)hxer 18ZrdduQHer 19/mhughl O)ZM#jghte r 21.ndJ9hter 22/ndaughter 23/ntoJ9hter 24/Miughter 25/ndaii
13、ter /ndaughter 2?/ntouchier F/Mjughter 2&/ndau9hter3i/rdau9hter a/nd&uhter 33/nddughte*3$/r/ndttu9hter BO/ndaughier 5i/ndau9 hxer 52/rdauohUr $3/ndiughter SVnjghxer SSZnddujter 56/e如hl 57/心uQhl er M/ndaughter SB/ndaujhter GO/ndauhter 61/ncaughter 62/ndaj9htr 63/ndoughter * 分析:因为上述程序执行时,lockf (1,1,0)
14、锁定标准输出设备,lockf(l,0, 0)解锁标准输出设备,在lockf(l, 1,0)与lockf(l,0, 0)中间的for循环输岀不会被中断,加锁与 不加锁效果不相同。运行结果3rwxr-xr-x1root7246bee1166J2v/orld rw1root283Dec100051test crw-r1root283Dec100651rtst.cr1root263Dec1101G4testl.crw-r1root611Dec11QIG4testl.crw-r1root0Dec70352Javal.rw-r1root99Dec70352Javal. jaw1root415Dec7035
15、2Javal.class rv/xr-xr-x 1root7246Dec11QG20hellorw-rr.1root0Dec100G24a.txtrw-1oot7Dec100024a. txtrwxr1root7261Dec100054a.out5 completed root(aiocalhostDesktop# L分析:程序在调用fork()建立一个子进程后,马上调用wait(),使父进程在子进程 结束之前,一直处于睡眠状态。子进程用exec()装入命令Is , exec()后,子进程的 代码被Is的代码取代,这时子进程的PC指向Is的第1条语句,开始执行Is的命令代 码。七、实验总结经过
16、这次上机实验的学习,我们一共做了三道题,碰到的第一问题是Linux系统并非我 们通常使用的Windows系统,还未上手便已产生畏惧的心理;碰到的第二个问题,在刚 开始搭建环境的时候,.后面的的并非手打而是按Tab键引出之后的代码,之后陆陆续 续的一些小问题,在老师、学长耐心的帮助下相对轻松地解决了,相比在课堂上老师的 讲解与课件的演示,最大的不同是我更加的直观且真实触摸到了这一学科,在实践的过 程中明口了当时逻辑并不清晰的抽象问题一一什么是进程,我想在实践的过程中我会更 加热爱这个学科并受益匪浅。附录源程序清单程序1#includestdio. hvoid main()int pl, p2;w
17、hile(pl=fork() =-l);if (pl=0) put char ( b);elsewhile(p2=fork() =-l);if (p2=0) putchar ( c);else putchar (,a);程序2#include #includemain()int pl, p2, i ;while(pl=fork() =-l);if (pl=0)lockf (1, 1, 0);for(i=0;i50;i+)printf(child %d/n, i); lockf (1,0, 0);elsewhile(p2=fork() =1);if (p2=0)lockf (1, 1, 0);for(i=0;i50;i+)printf (z/son %d/n, i); lockf (1,0, 0);elselockf (1, 1, 0);for(i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论