《Linux进程管理实验》由会员分享,可在线阅读,更多相关《Linux进程管理实验(11页珍藏版)》请在人人文库网上搜索。

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

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

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

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

5、一个当前进程的进程控制块,然后用新进程标识修改旧标识, 填写子进程与父进程关系,创建子进程堆栈和数据区。因此,fork()执行后,父子进程共享同一个存储空间,父进程的所有可共享资源都被子进程通过数据结构的复制继承了过来。在父进程调用fork()与在子进程中调用fork() ,fork()的返回值不 同!如果是在父进程调用fork(),则fork()就复制出一个子进程,并返回子进程的标识ID,如果创建子进程失败,则fork()的返回值为-1;而如果在子进程调用fork(),贝陀返回的是0。三、实验步骤及结果在安装目录下双击bochs.exe,选择提供好的linux0.11配置文件,点击start。

6、,启动虚拟机,如下图所示: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 $ SDrtte: Z6fin4/26 17:1?;0? SPpt ioTE : apirtbios pc ib ids e 1 tor i。

7、to 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 buffer spaceFree metfl: 1253291Z bytesOkL/usr/root Jtt利用bochs观测linux0.。

8、11下的PCB进程控制结构文件夹,如下所1.切换工作目录到 /usr/src/linux/include/linux示:Llit cd n&rsrex* 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 inuxz inc Ludezl i nux IS2.利用vi编辑器打开sched.h头文件,寻找struct task_s。

9、truct 结构体的定义,如下: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;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。

10、-t hi4 j Euid t il id i unsigned short tjld jegid,sq id; long a lam;lon( utime j st ime, cut ime, cst imej start 11 me Ju.ns i gned short file sgsteht info */ Fn七 tty;uns iqned short str net m_Lnode struct m inodens Ed_raa七 :so i 七 milst be s ignedZ* 1 i f ria tty unasllong ebpPlong edi j long esi l。

11、ony 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 ter = p-pr iot i ty :_p-s ignal = 0;在该函数中有*p=*current 代码,这句代码表示:current是指向父进程PCB吉构体的指针,p是指向子进程PC。

12、B吉构体的 指针,操作系统先把父进程的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 td_datfl_has:e, nRU_(iata_bfixe,data_J in it; unsianFd I nng n n巳u_r:rHl亡一血穴否亡.jm it :cudii_l in。

13、i1ml 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 separate D)IIf (data_l i it stflrt_codft = new-cnde-hAsei set_bdsetp-IdtEU ,reu_code _baseJ; set_bcis。

14、K (ji- IdlLZJ j neu_ddt*_bt&se);IT (cupLi_pp 2Z;dlr = Z0) St Oxf f c ): / _pg_dLr = G *x fur scirt_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 。

15、ir-CnsignE?d 1 dug temperf c 5 exptr_pt!jc_ttille-(mis li|ntd 1uiil| * 】(Gf ff f f(*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;k1ttincludei n七 ma in()。

16、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 jmy pid is ZdSnetpidC3)J sleep(1G6D Jpeturn 0;编译运行结果显示如下:L口七 J tt . Z*flL . OUlt:17paye_tfl-b le : 1619573 state:0cnun-ter : 0pr i or i 七y:占li i d 。

17、: Orny number : 03031423pid:16page_-tati 1e : 1&445573 state : counter:15pr i or i ty:15aid :Gmy numher1 : O3Q914Z3i am father* , my pi d is 16 i am ch ild 怕y p i d is 17由运行结果可以看出,父子进程的页表指向了同一个物理地址, 从而验证了我们之前的理论,子进程会复制父进程的PCB共享其内存 空间。四、实验结果与心得本次实验主要通过学习Linux系统进程管理机制,并通过Bochs 进行验证。实验中通过初步阅读linu x0.11操作系统源代码,了解其 创建进程的大体流程。另外,通过修改源代码,验证了 fork函数的工 作原理。实验中首先要比较深入的理解进程控制块以及 fork函数,我觉得自 己理解起来还是有点困难。不过通过实验,阅读内核代码的能力有所 提高,并初步学会如何去修改代码并实现验证。 为以后的学习打下一 个良好的基础,所以收获颇多。-文.范文。

linux进程管理实验视频,Linux进程管理实验相关推荐

  1. 视频监控系统的管理服务器,视频监控中管理服务器的配置

    视频监控中管理服务器的配置 内容精选 换一换 此章节主要介绍SAP应用弹性伸缩和其他服务之间的关系. 对于非企业管理服务模板创建的资源,如果需要使用企业管理服务的功能,如应用监控.备份恢复,可通过纳管 ...

  2. 微信要出linux版本,腾讯视频Linux版正式发布:就等微信了

    原标题:腾讯视频Linux版正式发布:就等微信了 来源:快科技 原标题:腾讯视频Linux版正式发布:就等微信了 Linux开源生态越来越繁荣,也有越来越多的国产系统.软件加入其中,大家摆脱虚拟机和双 ...

  3. linux操作这样用视频,Linux下使用mencoder对视频进行操作

    原创内容,转载请注明出处:https://www.myzhenai.com/thread-15674-1-1.html https://www.myzhenai.com.cn/post/1182.ht ...

  4. linux实现时间服务器视频,linux实现时间同步有哪几种方法

    原标题:linux实现时间同步有哪几种方法 方法一:用ntpdate从时间服务器更新时间 如果linux系统没有ntpdate这个命令,可以输入以下代码进行安装 yum install ntp 安装完 ...

  5. linux网卡驱动开发视频,Linux下网卡驱动程序的开发.doc

    Linux下网卡驱动程序的开发 论文题目:Linux下网卡驱动程序的开发 专 业: 年 级: 学生学号: 学生姓名: 指导教师: 完成时间: Linux下网卡驱动程序的开发 八年经验 专业指导毕业设计 ...

  6. linux下ftp教程视频,linux FTP服务器wmv视频教程

    在Linux中搭建一个ftp服务器,以供两个工作小组保管文件使用.禁用匿名.第一个小组使用ftp账号:ftp1,工作目录在:/var/ftp/ftp1:第二个小组使用ftp2,工作目录在:/var/f ...

  7. linux下镜像播放视频,linux下挂载iso镜像的方法

    新建目录/mnt/cdrom 执行命令 mount /dev/cdrom /mnt/cdrom [root@ocdp1 cdrom]# mount /dev/cdrom /mnt/cdrom moun ...

  8. 腾讯视频有linux软件吗,诚意满满:腾讯视频Linux版实测

    2019 年 10 月 24 日,程序员节这一天,腾讯复活了 QQ For Linux,参阅前文<复活意义何在:QQ for Linux 新版测试>.尽管功能.稳定性等仍与主流版本的 QQ ...

  9. linux配置dns 视频教程,linux下DNS配置视频

    yaoxinrisk 于 2013-12-02 20:07:11发表: 现在都打不开了 657129880@qq.co 于 2013-04-21 18:01:29发表: 谢谢分享!!! qwertpa ...

  10. 操作系统实验报告linux进程管理,计算机操作系统实验报告三Linux进程基本管理.doc...

    GDOU-B-11-112广东海洋大学学生实验报告书(学生用表) GDOU-B-11-112 实验名称 Linux进程基本管理 课程名称 计算机操作系统 课程号 学院(系) 专业 统 班级 学生姓名 ...

最新文章

  1. 在C++平台上部署PyTorch模型流程+踩坑实录
  2. python 哪些比赛项目_70个超火python小项目列表,拿走·不谢
  3. 人类染色质开放状态数据库,ATACdb使用介绍
  4. 返回index.html页面
  5. linux gz 解压缩
  6. (72)仿真工具VCS仿真软件?
  7. Spring中,修改注入的bean名称
  8. 将jar包制作成docker镜像
  9. [FFmpeg] nvidia 加速 ffmpeg
  10. Nginx 配置学习
  11. SCOM 2012系列⑪单台服务器性能图监控
  12. mysql 5.7 emoji_MYSQL5.7.25升级兼容微信emoji实操
  13. 把arduino当AVRISP烧写器Arduino给Arduino烧boot
  14. 小学英语动词原形固定搭配+番外篇
  15. 移动Ad Hoc网络路由协议汇总
  16. 三维模型的泰森多面体离散
  17. Python札记 -- 测试优先
  18. 为何机器人仿真如此复杂?可否简化节省宝贵时间?
  19. 什么是HTTP协议?—深入理解HTTP协议
  20. 电影资源站python爬虫源码

热门文章

  1. linux下文件打包、压缩详解
  2. Mysql的安全设置
  3. [项目总结-原创]InternetRadio项目Ajax技术方案选型
  4. 怎样使按钮响应回车键
  5. mysql 索引 范围扫描_MySql学习笔记(六):扫描范围
  6. 网络七层协议(转载)
  7. windows10下 mysql5.7.24 免安装版 安装笔记
  8. 学生信息管理系统html代码,学生信息管理系统源代码.doc
  9. 全能电子地图下载器 破解版 亲测可用
  10. 基于matlab的高等数学,基于matlab的高等数学实验详解.ppt