- 1、本文档共18页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(操作系统第34次作业
操作系统课程实验报告
实验编号与实验名称:
管理Linux系统进程1) 回顾系统进程的概念,加深对Linux / UNIX进程管理的理解。
2) 回顾ps命令和选项。
3) 列出当前shell中的进程。
4) 列出运行在系统中的所有进程。
二、
1、进一步认识并发执行的实质
2、通过分析实验结果,分析进程竞争资源的现象,学习解决进程互斥的方法
三、
掌握进程另外的创建方法:需认真分析实验结果,体会本次实验进程创建方法与fork的不同
2、通过分析实验结果,熟悉进程的睡眠、同步、撤消等进程控制方法
实验内容及要求(详见实验讲义):
一、
步骤1:登录进入Linux。
步骤2:访问命令行。
步骤3:回顾系统进程概念。
步骤4:回顾ps命令和信息。
步骤5:列出系统中运行的所有进程。
步骤6:试调试下二段代码。
二、
1、进程互斥的实现
2、分析以下程序的输出结果
三、
1、用fork( )创建一个进程,再调用exec( )用新的程序替换该子进程的内容
2、利用wait( )来控制进程执行顺序
实验用到的软件(:)
虚拟机
实验内容、关键步骤(流程图、代码等)及结果分析(70分)
第一个实验
步骤3:回顾系统进程概念
1) Linux系统中,几乎每一个启动的进程,都会由内核分配一个唯一的进程标识符 (PID),用于跟踪从进程启动到进程结束。
2) 当启动新进程的时候,内核也给它们分配系统资源,如CPU时间和RAM空间。
3) 永远不向父进程返回输出的进程叫做僵进程。
4) 由父进程派生出来的进程叫做子进程。
5) 父进程是一个派生另一个进程的进程。
6) 运行用于提供服务的Linux系统进程是守护进程。
7) 如果父进程在子进程之前结束,它创建了一个孤儿进程。
步骤4:回顾ps命令和信息
输入ps命令,将结果截图贴到实验报告。
?
输入 ps -f 命令
步骤5:列出系统中运行的所有进程
输入 ps -ef 命令,显示运行在系统中的各个进程的完全信息。执行该命令,并与ps –f命令的输出结果对照,一致吗?有何不同?
答:不一致
ps –f 完全 产生一个完全列表,给出每个进程的所有可用信息。
??ps –e f 每一个完全 产生一个完全列表,给出每个进程的所有可用信息,显示系统中每一个进程的信息。
a. 显示了多少个进程?
ps –f 2个
ps –ef 所有 143
b. PID是什么?
进程的进程标识号。PID可以用来杀死进程
c. 启动进程的命令 (CMD) 是什么?
命令名守护进程 (执行的程序的名字)
d. 请观察,什么命令的PID号是1?
第一个命令 root init
e. 再次运行? ps -ef | wc -l命令,计算进程的数目并把输出结果输入到wc命令中:
执行 man ps命令,可以打开Linux用户命令手册,了解ps命令的用法,输入
wq命令可退出用户手册的阅读。man命令可以执行吗?结果如何?
步骤6:
?
第二个实验
Code 1:没加lockf()函数的实验
Code 1:加了lockf()函数的实验
Code 2:没加lockf()函数的实验
Code 2:加了lockf()函数的实验
第三个实验:
第三题结果:
思考题:
二、
1.2观察并分析出现的现象
结果如何?与未上锁的输出结果相比,结果有无不同?原因?将打印字符串的循环次数改为1000结果加锁与否的结果又是否相同?
结果都一样。
因为程序在被运行之时会被赋予一个时间片,而 i的值小于 1000 时,CPU执行完这个程序所需时间还小于这个时间片,所以操作系统并不会把公共设备夺过来给其他程序。从而两个结果都一样。
没使用了lockf()函数
使用了lockf()函数
从上图的比较中我们可以看出,当 i 的值变得很大时,lockf()函数的作用就体现出来了。
他会将一个程序和这个程序所需的公共设备上锁,直至这个程序结束才解锁。在这段期间,没有程序能使用被上锁的公共设备。
三、
(1)如何更新子进程内容?
fork时根据返回的进程ID锁定指定的子进程即进入子进程,其后的操作都是能有效更新子进程的
(2)可执行文件加载时进行了哪些处理?
初始化,开辟内存,显示窗口是后期可选工作每个程序,任何一个程序,任何一个可执行文件,启动运行时都要调用Ntdll.dll中的NtCreateProcess()?我们把异步环境下的一组并发进程因直接制约而互相发送消息而进行互相合作、互相等
文档评论(0)