Linux进程管理系统实验_第1页
Linux进程管理系统实验_第2页
Linux进程管理系统实验_第3页
Linux进程管理系统实验_第4页
Linux进程管理系统实验_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、实用文案Linux进程管理实验一、实验内容:1.利用bochs观测linux0.11下的PC进程控制结构。2.利用bochs观测linux0.11下的fork.c源代码文件,简单分析其中的重要函数。3.在fork.c适当位置添加代码,以验证fork函数的工作原理。二、Linux进程管理机制分析Lin ux有两类进程:一类是普通用户进程,一类是系统进程,它既可以在用户空间运行,又可以通过系统调用进入内核空间,并在内核空间运行;另一类叫做内核进程,这种进程只能在内核空间运行。 在以i386为平台的Linux系统中,进程由进程控制块,系统堆栈,用 户堆栈,程序代码及数据段组成。Linux系统中的每一

2、个用户进程有 两个堆栈:一个叫做用户堆栈,它是进程运行在用户空间时使用的堆 栈;另一个叫做系统堆栈,它是用户进程运行在系统空间时使用的堆 栈。1.Linux进程的状态:Linux进程用进程控制块的state域记录了进程的当前状态,一个Linux 进程在它的生存期中,可以有下面6种状态。1.就绪状态(TASK_RUNNING):在此状态下,进程已挂入就绪队列, 进入准备运行状态。2.运行状态(TASK_RUNNING):当进程正在运行时,它的state域中的值不改变。但是Linux会用一个专门指针(current)指向当前运行的任务。实用文案3.可中断等待状态(TASK_INTERRUPTIBL

3、E):进程由于未获得它所申请的资源而处在等待状态。不管是资源有效或者中断唤醒信号都能 使等待的进程脱离等待而进入就绪状态。即”浅睡眠状态”4.不可中断等待状态(TASK_UNINTERRUPTIBLE):这个等待状态与 上面等待状态的区别在于只有当它申请的资源有效时才能被唤醒, 而 其它信号不能。即深睡眠状态”5.停止状态(TASK_STOPPED):当进程收到一个SIGSTOP信号后 就由运行状态进入停止状态,当收到一个 SINCONT信号时,又会恢 复运行状态。挂起状态。6.终止状态(TASK_ZOMBIE)进程因某种原因终止运行,但进程控制 块尚未注销。即僵死状态”状态图如下所示:2.L

4、inux进程控制块: 在Linux中,进程控制块为数据结构task_struct,它包含了大量该进程 的信息,这些信息大致为以下几类:实用文案1).进程的当前状态2).调度信息3).进程标识4).进程的通信信息5)进程与其它进程之间关系的信息6).使用文件的信息7).虚拟内存与物理内存的关系8).计时器9).处理器与进程的有关信息3.Fork 函数:父进程创建一个子进程最方便快捷的方式就是把父进程的控制 块照原样复制一个,然后再根据子进程的修改特点对它进行必要的修 改,形成子进程的控制块。系统调用 fork()通过调用 find_empty_process 及copy_process 等函数复

5、制一个当前进程的进程控制块,然后用新进程标识修改旧标 识,填写子进程与父进程关系,创建子进程堆栈和数据区。因此,fork()执行后,父子进程共享同一个存储空间,父进程的所有 可共享资源都被子进程通过数据结构的复制继承了过来。在父进程调用forkfork( (与在子进程中调用fork()fork(), fork()fork()的返回值不同! 如果是在父进程调用fork()fork(),则fork()fork()就复制出一个子进程,并返回子 进程的标识IDID,如果创建子进程失败,则fork(fork() )的返回值为-1;-1;而如果 实用文案文件夹,如下所在子进程调用fork(),fork()

6、,则它返回的是0 0。三、实验步骤及结果在安装目录下双击bochs.exe,选择提供好的linux0.11配置文件, 点击start,启动虚拟机,如下图所示:Licenced f or use mi th boch courtesy of MandralkcSoft-For inforMotion on this OP other UGA deuelopment products contact El in Sys terns at - (800) 723-9938 or uuu .elji tin. comHochs J3 1US - builA:RRftuisinn: 1.Z31 $ SD

7、rtte: Z6fin4/26 17:1?;0? SPpt ioTE : apirtbios pc ib IDS e 1 tor ito remb i 032Ct妞曲 master: Keneric 1Z34 ATA-b Hard-Disk (59 IIBytesIPress F12 f or boot menu kBootie。from Floppy,.HD( (1 iFiy system * .Partit inn tflble ok .4510/fcG09G free blocks19ZZ0/Ze0O& free Inodes3462 buffers = 3545G08 bytes bu

8、ffer spaceFree metfl: 1253291Z bytesOk L/usr/root Jtt利用bochs观测linuxO.11下的PCB进程控制结构1.切换工作目录到 /usr/src/linux/include/linux示:Llit cdex* 1 inmix* iirtc ludel inurL usrZsxc( ( 1 i FIUX/i nu 1, ndu” 1 inuLxl# 1 s匚oifiFig.h F s hhead hrm hsys Fif dresf h hdregkerine I . h sclied ti tty . hzusrzsi*c/ 1 inux

9、z inc Ludezl i nux IS2.利用vi编辑器打开sched.h头文件,寻找struct task_struct 结构体的定义,如下:实用文案1stritcl tak_sti?uct G slopped wLong prior*i电Loit( (r sigrna 1.struct s igfacion s igact LOHL32JJLonir blocked/* titmap ofsignals */var- ions f ields *z1 nt exit _code;u.ns i gned short file sgsteht info */ Fn七 tty;uns iqn

10、ed short str net m_Lnode struct m inodeso i 七 milst be s ignedstr netm Lnode二 executab1E:uns i gned Long 0士孔1*电_匚口|4空 # eindl_u口亠亡Endl_dlE *艮brk舍七也七_wit;k: Lon( (r pid,f ather,pgrp,session leader;uns igned hoi-t HI4 j Euid t IL id i unsigned short tjld jegid,SQ id; long a lam;lon( ( utime j st ime,

11、cut ime, cst imej start 11 me Jns Ed_raa七 :Z* 1 i f ria tty unasllong ebpPlong edi j long esi lony gsj tong noneT long ebxJlong ecXjlong edx, long fslong esj Long dsjE ip j lonq cs, long ef lags, iofiff esp j 1 ong ss JslaLe - TA5K_UMINTERKUFTIBLE, p pid 工 lci3t_pid; p fither = current id: p-couri t

12、er = p-pr iot i ty :_p-s ignal = 0;在该函数中有*p=*current 代码,这句代码表示:current是指向父进程PCB吉构体的指针,p是指向子进程PCB吉构体的 指针,操作系统先把父进程的PC结构体完完整整的复制了一份给子 进程。2.找到copy_mer函数,发现其调用copy_page_tables。其中,copy_page_tables 的实现在 /usr/src/linux/mm/memory.c 文件中,其代码截图如下:ini copymewit int nr t struct task_3trnct * p)uns igned .1 ong t

13、d_datfl_has:e, nRU_( (iata_bfixe,data_J in it; unsianFd I nng n n巳u_r:rHl亡一血穴否亡.jm it :cudii_l ini1ml I CGxGf );lata limi L-irEL_liiiill CGxi?) u ld_c;udr_lKLJir -tLitiTEiiL- ldl 11 J );al( (l_tlatn_lj4Sc - gcjt_bcsc (current ldt 2 1 ;i f tald_da ta_base !- o J d_code_base)pahicCUe den*t suppoift se

14、parate D)IIf (data_l i it ucwlj imit)necj_stflrt_codft = new-cnde-hAsei set_bdsetp-IdtEU ,reu_code _baseJ; set_bcisK (ji- IdlLZJ j neu_ddt*_bt&se);IT (cupLi_piift_lcib les (J ld_dALd_buie t titw_da Lft_bnse,cli to_ L Ini L)( f rcc poiq|c_tflb les(nth) )_dadatft_l innit); return -EHOnEM;return G:i it

15、i f rce_iinye_lrtb I (n i j Nttil Luny fruniyrtK( (l ung x ixtt 1p 2Z;dlr = Z0) St Oxf f c ): / _pg_dLr = G *x fur ; HIKE-; dir+*l iif (!(1 *dir)cont i nue;pg tabic k Curts tgntd IOTIQ * J (Oxfrr f TOGO ft *d i r 1 ;for (nr-0 : HP1OZ4 ; nr *+J -EEf Cl ftfree pagcCOxfr tf f DGQ &tab Lc )i ;*pg_tab ie

16、 - W;PU_Lscirt_co20)6OxTfc) i exper_page_t ab le=(unsijneA 1 DingC Qxf f ffC *exp ejr_ii i r ) J ;pr Lntk C p Id : z I An*p-pld ;pr Fnth ( pagc-tab i c -xldn * t *expcr_pcife_4ablc J :fdrtkl=6;kls七户t_ccjde!:expEr_r1 ir-CnsignE?d 1 dug temperf c 5 exptr_pt!jc_ttille-(mis li|ntd 1UIIL| * 】(Gf ff f f(*

17、exper_d Ir),pf imk(1 p id :黒 ldnu/ tasJcEldl:pr intk5&p-father!=4)是为了区别系统进程与用户进程而设置的。因为,如果不这样区分,会导致打印出一些我们不想 看到的信息,造成混乱,不方便实验观察。p-start_code是p所指向 进程的页目录信息。exper_page_table是p所指向进程的页表信息。For(k1=0;k1NR_TASKS;k1+)循环是在系统的进程槽中找到p所指向 进程的父进程,然后,将父进程相关页目录,页表信息打印。3保存并退出vi编辑器,切换工作目录到/usr/src/linux执10行.make clea

18、n命令,将系统以前的编译信息清除掉。4.然后执行make命令,重新编译linux0.11内核5.编译完成后,输入dd bs=8192 if=lmage of=/dev/fd0 ,用新生成的内核替换掉旧的内核。实用文案/usr/irrEZl imixlJt drlif-Imdyt: uf-/clnuzfrlfi15*1 records in15+1 records out6点击bochs中中的reset按钮,重启虚拟机;重启后,编译运行experiment.c文件,观察实验效果,其中experiment.c程序代码如下图所示:Eincludettincludei n七 ma in()pid_t pi d :if(pid=forkC)=-lDpri ntF (,rfork errnr J ;else if(pid=6)pr intf (11 i am ch i Id my p i d is dSnir i d (); S lccpdGQ) Jelsepr intf(am father

温馨提示

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

评论

0/150

提交评论