(创建进程.docVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(创建进程

操作系统课程实验报告 实验编号与实验名称: 实验二 进程的创建 认识并了解并发执行的实质 实验内容及要求(详见实验讲义): 1)编写一段程序,使用系统调用fork( )创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示a,子进程分别显示字符b和字符c。,父进程显示 parent ?……,观察结果,分析原因。 第一题 代码 第二题 代码 第二题:没使用sleep();函数所得结果 第二题:使用sleep();函数所得结果 结果分析: 对于第一题,sleep()函数使用与否,其实没有多大影响。 对于第二题,如果不加,CPU会一直在打印第一个进程,直至结束;而后CPU才会跳转到另一个进程并执行它,依次执行直至完成。 而加了sleep()函数后,CPU会先执行第一个进程,睡眠一次,这时为避免CPU空转,CPU会切换到另一个进程并执行它……这个过程中,CPU会来回的切换、执行。 并发执行的深刻思考: 假如以宏观上来看,并发执行是CPU还没完全放弃上一个进程时,下一个进程已经开始被执行。尽管两个进程交错的时间极为短暂,但它们确实是并发执行了。 但微观上来看,CPU还是严格遵循着它的规则的:一个CPU在一定的时间内只能对应一个程序。所以把时间放大到一定程度便会发现,其实CPU不过是在很短的时间内来回地在进程与进程之间切换罢了。 思考题: 系统是怎样创建进程的? Linux 系统用 fork() 系统调用创建子进程。由 fork() 系统调用创建的新进程被称为子进程。该函数被调用一次,但返回两次。如果 fork() 进程调用成功,两次返回的区别是子进程的返回值是0,而父进程的返回值则是子进程的进程号。 创建的子进程与父进程的资源是相同的,即进程表项、栈、缓存区等等都是相同的;但彼此的地址空间却是不同的。 当首次调用新创建进程时,其入口在哪里? Fork() 是把父进程的执行环境复制一份,到自己的进程空间,即父子进程的执行体是一样的,子进程也是从父进程 fork() 的地方开始执行。 所以但首次调用新创建进程时,其入口在 fork() 即将进入并执行下一句的地方。 实验过程中遇到的问题解决办法与实验体会(10分)【请注意:此处必须如实填写,为空或不适均扣10分】 1、,因为第一次在Lunix中使用代码,难免会生疏、出错。 如我第一次写的时候,if()后忘了加花括号 { } 而直接使用了else ,从而导致代码运行出错了。 不大会使用sleep()函数。 一下子就写了sleep(1000),结果程序运行了好久还没出来个结果。因为这1000ms对于CPU来说这时间可谓很长的。

文档评论(0)

xiaoyi2013 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档