- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE
PAGE # / 36
操作系统实验4-进程管理及控制
第3章进程管理及控制
一、Linux进程管理
1、 fork ()
创建一个新的子进程。其子进程会复制父进程的数据及堆栈 空间,并继承父进程的用户代码、组代码、环境变量、已打开的 文件代码、工作目录和资源限制。
系统调用格式:
int fork()
如果Fork成功则在父进程会返回新建立的子进程代码 (PID),而在新建立的子进程中则返回Oo如果fork失败则直 接返回-1。
2、 wait ()
等待子进程运行结束。如果子进程没有完成,父进程一直等 待。wait()将调用进程挂起,直至其子进程因暂停或终止而发 来软屮断信号为止。如果在wait()前已有子进程暂停或终止, 则调用进程做适当处理后便返回。
系统调用格式:
int wait(int *status)
其中,status是用户空间的地址。它的低8位反应子进程 状态,为0表示子进程正常结束,非0则表示岀现了各种各样的 问题;高8位则带回了 exit()的返回值。exit()返回值由系 统给出。核心对wait()作以下处理:
操作系统实验
操作系统实验4-进程管理及控制
PAGE
PAGE # / 36
首先查找调用进程是否有子进程,若无,则返回出错码;
若找到一处于“僵死状态”的子进程,则将子进程的执行 时间加到父进程的执行时间上,并释放子进程的进程表项;
若未找到处于“僵死状态”的子进程,则调用进程便在可 被屮断的优先级上睡眠,等待其子进程发来软中断信号时被唤 醒。
3、 exit()
终止进程的执行。
系统调用格式:
void exit(int status)
其中,status是返回给父进程的一个整数,以备查考。 为了及时回收进程所占用的资源并减少父进程的干预, UNIX/LINUX利用exitO来实现进程的自我终止,通常父进程在 创建子进程时,应在进程的末尾安排一条exit(),使子进程自 我终止。exit (0)表示进程正常终止,exit(l)表示进程运行有错, 异常终止。
如果调用进程在执行exit()时,其父进程正在等待它的终 止,则父进程可立即得到其返回的整数。核心须为exit()完成 以下操作:
关闭软屮断
回收资源
写记帐信息
置进程为“僵死状态”
4、exec ()函数族
fork()只是将父进程的用户级上下文拷贝到新进程中,而 exec()系列可以将一个可执行的二进制文件覆盖在新进程的用 户级上下文的存储空间上,以更改新进程的用户级上下文。 exec()系列屮的系统调用都完成相同的功能,它们把一个新程 序装入内存,来改变调用进程的执行代码,从而形成新进程。如 果exec()调用成功,调用进程将被覆盖,然后从新程序的入口 开始执行,这样就产生了一个新进程,新进程的进程标识符id及 调用进程相同。
exec ()没有建立一个及调用进程并发的子进程,而是用新进 程取代了原来进程。所以exec()调用成功后,没有任何数据返 回。exec()系列系统调用在UNIX系统库unistd. h中,共有 execl execlp execle^ execv、execvp 五个,其基本功能相 同,只是以不同的方式来给出参数。
execl ()
int execl (char *path, char * argO, char * argl,
char *argn, 0);
种是直接给出参数的指针
execv ()
int execv (char *path, char *argv);
给出指向参数表的指针
execlp ()
int execlp (const char * char * arg, . . . , (char *)0);
execlpO会从PATH环境变量所指的目录中查找符合参数file 的文件名,找到后便执行该文件,然后将第二个以后的参数当做 该文件的argv[0] > argv[l] ,最后一个参数必须用空担铉
(NULL)作结束。
二、Linux信号机制
(一)信号的基本概念
每个信号都对应一个正整数常量(称为signal number,即 信号编号。定义在系统头文件<signal. h>屮),代表同一用户的 诸进程之间传送事先约定的信息的类型,用于通知某进程发生了 某异常事件。每个进程在运行时,都要通过信号机制来检查是否 有信号到达。若有,便屮断正在执行的程序,转向及该信号相对 应的处理程序,以完成对该事件的处理;处理结束后再返回到原 来的断点继续执行。实质上,信号机制是对屮断机制的一种模拟, 故在早期的UNIX版本屮又把它称为软屮断。
⑴信号及屮断的相似点:
采用了相同的异步通信方式;
当检测岀有信号或屮断请求时,都暂停正在执行的程序而转去 执行相应的处理
您可能关注的文档
- 按什么穴治高血压.docx
- 按摩不当的危害.docx
- 按摩什么穴位可以增胖_增胖按摩什么穴位好.docx
- 按摩什么穴位治疗内分泌失调.docx
- 按摩什么穴位美白.docx
- 按摩哪个穴位治疗失眠.docx
- 按摩哪些穴位可以治疗高血压.docx
- 按摩经络减肥有效吗.docx
- 按摩身体五要穴安度多事之秋.docx
- 按时还款个人承诺书范文.docx
- 2026年消防设施操作员之消防设备基础知识考试题库500道带答案(新).docx
- 销售岗前培训课件.ppt
- 2026年消防设备操作员考试题库500道(典型题).docx
- 2026年消防设施操作员之消防设备高级技能考试题库300道附答案(实用).docx
- 2026年消防设施操作员之消防设备高级技能考试题库300道标准卷.docx
- 2026年材料员之材料员基础知识考试题库300道附完整答案(全优).docx
- 2026年材料员之材料员基础知识考试题库300道带答案(培优a卷).docx
- 2026年机械员考试题库含答案(轻巧夺冠).docx
- 2026年材料员之材料员基础知识考试题库300道【夺分金卷】.docx
- 2026年期货从业资格之期货法律法规考试题库500道(考点精练).docx
文档评论(0)