- 1、本文档共29页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验题目:进程管理及进程通信
实验环境:
VMware Workstation 中的 Ubuntu 64 位操作系统。
实验冃的:
利用Linux提供的系统调用设计程序,加深对进程概念的理解。体会 系统进程调度的方法和效果。
了解进程之间的通信方式以及各种通信方式的使用。
实验内容:
用vi编写使用系统调用的C语言程序。
操作过程及结果:
实验1:
编写程序。显示进程的有关标识(进程标识、组标识、用户标识等)。
经过5秒钟后,执行另一个程序,最后按用户指示(如:Y/N)结束操作。
结果:
实验2:
编写程序。实现父进程创建一个子进程。体会子进程与父进程分别获 得不同返回值,进而执行不同的程序段的方法。
结果:
思考:子进程是如何产生的?又是如何结束的?子进程被创建后它的 运行环境是怎样建立
的?
答:是由父进程用fork()函数创建形成的,通过exit()函数自我结束,子 进程被创建后核心将其分配一个进程表项和进程标识符,检查同时运行的 进程数目,并且拷贝进程表项的数据,由子进程继承父进程所有文件。
实验3:
编写程序。父进程通过循环语句创建若干子进程。探讨进程的家族树 以及了进程继承父进程的资源的关系。
结果:
思考:① 画岀进程的家族树。子进程的运行环境是怎样建立的?反 复运行此程序看会有什么情况?解释一下。
②修改程序,使运行结果呈单分支结构,即每个父进程只产生一个 子进程。画出进程树,解释该程序。
答
反复运行,子进程的编号在不断变化,但是初始的父进程的编号不会 变,因为:父进程始终是该程序在虚拟机操作系统下的进程号,但是子进 程是该父进程创建的子进程不断增加而得的,子进程的编号应该是顺序递 增的。
答2:
#include lt;stdio.hgt;
#inelude lt;sys/types.h)
#include lt;unistd.hgt;
main()
int i, pid;
for (i=l; ilt;4; i++)
if (pid=fork()) break;
}
实验4:
编写程序。使用fork()和exec()等系统调用创建三个子进程。子进程 分别启动不同程序,并结束。反复执行该程序,观察运行结果,结束的先 后,看是否有不同次序。结果:
思考:子进程运行其它程序后,进程运行环境怎样变化的?反复运行 此程序看会有什么情况?解释一下。
答:子进程运行其他程序后,这个进程就完全被新程序代替。由于并 没有产生新进程所以进程标识号不改变,除此之外的旧进程的其他信息, 代码段,数据段,栈段等均被新程序的信息所代替。新程序从自己的main() 函数开始进行。反复运行此程序发现结束的先后次序是不可预知的,每次 运行结果不一样。原因是当每个子进程运行其他程序时,他们的结束随着 其他程序的结束而结束,所以结束的先后次序在改变。
实验5:
编写程序。验证子进程继承父进程的程序、数据等资源。如用父、子 进程修改公共变量和私有变量的处理结果;父、子进程的程序区和数据区 的位置。
结果: 思考:子进程被创建后,对父进程的运行环境有影响吗?解释一下。
答:子进程被创建后,对父进程的运行环境无影响,因为当子进程在 运行时,他有自己的代码段和数据段,这些都可以作修改,但是父进程的 代码段和数据段是不会随着子进程数据段和代码段的改变而改变。
实验6:
复习管道通信概念,编写一个程序。父进程创建两个子进程,父子进 程之间利用管道进行通信。要求能显示父进程、子进程各自的信息,体现 通信效果。
结果:
思考:①什么是管道?进程如何利用它进行通信的?解释一下实现方 法。
修改睡眠时机、睡眠长度,看看会有什么变化。请解释。
加锁、解锁起什么作用?不用它行吗?
答4管道:是指能够连接一个写进程和一个读进程、并允许它们以 生产者?消费者方式进行通信的一个共享文件,又称为pipe文件。由于写 进程从管道的入端将数据写入管道,而读进程则从管道的出端读出数据。 进程利用管道进行通信:将索引结点中的直接地址项作为一个循环队列来 管理,为它设置一个读指针,一个写指针,按先进先出的顺序读写。在该 例中,利用fd[2]这个数组来确定读写替换。执行进程1时,lockf(fd[l],l,0) 使得管道写入端加锁,这样就可以进行写入了,write(fd[l],buf,50);/*信息 写入管道*/
lockf(fd[l],0,0);/*管道写入端解锁*/这样其他进程就能继续进行读写
操作了。然后执行进程2的写入,过程同上。最后父进程的进行读, read(fd[0],s,50)o读写之间、写和写之间也是互斥的,多以会加锁。
答2:修改1号子进程的睡眠时间长度修改为20s后,等待了较长时 间,然后出现了下血的结果:2号子进程先执行了,然后父进程执行。原 因应该是:父进程进
您可能关注的文档
- 审计局科学发展观个人剖析材料.docx
- 审计局老干部工作总结.docx
- 审计局年度审计工作总结.docx
- 审计局审计业务流程图.docx
- 审计局十二五工作总结.docx
- 审计局长年度工作情况汇报.docx
- 审计课程教学目标定位及体系构架探究.docx
- 审计课堂教学改革中几点问题的思考.docx
- 审计利益联盟及其防范对策探究.docx
- 审计年度工作总结1000字.docx
- 2024年学校党总支巡察整改专题民主生活会个人对照检查材料3.docx
- 2025年民主生活会个人对照检查发言材料(四个带头).docx
- 县委常委班子2025年专题生活会带头严守政治纪律和政治规矩,维护党的团结统一等“四个带头方面”对照检查材料四个带头:.docx
- 巡察整改专题民主生活会个人对照检查材料5.docx
- 2024年度围绕带头增强党性、严守纪律、砥砺作风方面等“四个方面”自我对照(问题、措施)7.docx
- 2025年度民主生活会领导班子对照检查材料(“四个带头”).docx
- 国企党委书记2025年度民主生活会个人对照检查材料(五个带头).docx
- 带头严守政治纪律和政治规矩,维护党的团结统一等(四个方面)存在的问题整改发言提纲.docx
- 党委书记党组书记2025年带头增强党性、严守纪律、砥砺作风方面等“四个带头”个人对照检查发言材料.docx
- 2025年巡视巡察专题民主生活会对照检查材料.docx
最近下载
- 重庆市两江新区2024-2025学年数学六年级第一学期期末检测试题含解析.doc VIP
- 人教版(2024年新版)七年级上册美术全册教学设计.docx
- Desouttter马头电动装配系统CVI3 系列 CVI3 Controllers CVI3 Vision (6159326910) CVI3 tightening controllers Conf.pdf
- 【MOOC】时间序列分析-中南财经政法大学 中国大学慕课MOOC答案.docx
- 2024-2025学年重庆市六年级数学第一学期期末检测试题含解析.doc VIP
- 高中政治(必修1+必修2)期末测试卷(二)(原卷版).docx VIP
- 高中生物 2023-2024学年安徽省合肥高一(上)期末生物试卷.pdf
- 太阳能光伏产业链垂直一体化构建研究.docx VIP
- SSCI收录管理学种期刊目录.docx
- GB51016-2014 非煤露天矿边坡工程技术规范.pdf
文档评论(0)