实验2 进程观的察实验.docVIP

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

实验二 进程观察实验(二):进程的控制 实验目的 1、了解进程创建后对进程控制的系统调用,可实现对进程的有效控制 2、掌握进程的睡眠、同步、撤消等进程控制方法 实验内容 1、通过相关命令,对进程的状态进行控制。 2、编写程序,使用fork( )创建一个子进程。使用相关的系统调用控制进程的状态。观察并分析多进程的执行次序及状态转换。 实验基础 一、进程的控制 进程因创建而存在,因执行完成或异常原因而终止.在进程的生命周期中,进程在内存中有三种基本状态:就绪,执行,阻塞.进程状态的转换是通过进程控制原语来实现的。 Linux操作系统提供了相应功能的系统调用及命令,来实现用户层的进程控制。 二、相关的命令 (1)睡眠指定时间 执行格式:# sleep x x为指定睡眠的秒数。 (2)结束或终止进程 kill 执行格式:# kill [-9] PID (PID为利用ps命令所查出的process ID) 例: kill -9 456 终止process ID 为456的process (3)后台(background)执行process command的命令 执行格式:# command (在命令后加上 ) 例: gcc file1 在后台编译file1.c 注意:按下^Z,暂停正在执行的process。键入”bg”,将所暂停的process置入background中继续执行。 例:# gcc file1 ^Z stopped # bg (4)查看正在background中执行的process 执行格式:# jobs (5)结束或终止在background中的进程 kill 执行格式:# kill %n 例: kill %1 终止在background中的第一个job kill %2 终止在background中的第二个job 三、相关的系统调用 在LINUX中fork( )是一个非常有用的系统调用,但在LINUX中建立进程除了fork( )之外,也可用与fork( ) 配合使用的exec( )。 1、exec( )系列 系统调用exec( )系列,也可用于新程序的运行。fork( )只是将父进程的用户级上下文拷贝到新进程中,而exec( )系列可以将一个可执行的二进制文件覆盖在新进程的用户级上下文的存储空间上,以更改新进程的用户级上下文。exec( )系列中的系统调用都完成相同的功能,它们把一个新程序装入内存,来改变调用进程的执行代码,从而形成新进程。如果exec( )调用成功,调用进程将被覆盖,然后从新程序的入口开始执行,这样就产生了一个新进程,新进程的进程标识符id 与调用进程相同。 exec( )没有建立一个与调用进程并发的子进程,而是用新进程取代了原来进程。所以exec( )调用成功后,没有任何数据返回,这与fork( )不同。exec( )系列系统调用在LINUX系统库unistd.h中,共有execl、execlp、execle、execv、execvp五个,其基本功能相同,只是以不同的方式来给出参数。 一种是直接给出参数的指针,如: int execl(path,arg0[,arg1,...argn],0); char *path,*arg0,*arg1,...,*argn; 另一种是给出指向参数表的指针,如: int execv(path,argv); char *path,*argv[ ]; 另外,在linux中,出于安全的考虑,限制了exec()可以执行的新程序的位置为系统指定的有哪些信誉好的足球投注网站路径。 例如: execl(“/bin/ls”,”ls”,NULL); execl(“/usr/bin/gcc”,”-v”,NULL); execl(“./test”,NULL); //当前目录下的可执行程序 2、exec( )和fork( )联合使用 系统调用exec和fork( )联合使用能为程序开发提供有力支持。用fork( )建立子进程,然后在子进程中使用exec( ),这样就实现了父进程与一个与它完全不同子进程的并发执行。 一般,wait、exec联合使用的模型为: int status; ............ if (fork( )= =0) { ...........; execl(...); ...........; } wait(status); 3、wait( ) 等待子进程运行结束。如果子进程没有完成,父进

文档评论(0)

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

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

1亿VIP精品文档

相关文档