欢迎来到天天文库
浏览记录
ID:41691415
大小:293.62 KB
页数:22页
时间:2019-08-30
《操作系统实验4-进程管理与控制》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、第3章进程管理与控制一、Linux进程管理1、fork()创建一个新的子进程。其子进程会复制父进程的数据与堆栈空间,并继承父进程的用户代码、组代码、环境变量、已打开的文件代码、工作目录和资源限制。系统调用格式:intfork()如果Fork成功则在父进程会返回新建立的子进程代码(PID),而在新建立的子进程屮则返回0。如果fork失败则直接返回・1。2、wait()等待子进程运行结束。如果子进程没有完成,父进程一直等待。wait()将调用进程挂起,直至其子进程因暂停或终止而发*软中断信号为止。如果在wait()前已有子进程暂停或终止,则调用进程做适当处理后便返回。
2、系统调用格式:intwait(int^status)其中,status是用户空间的地址。它的低8位反应子进程状态,为0表示子进程正常结束,非0则表示出现了各种各样的问题;高8位则带回了exit()的返回值。exit()返回值由系统给岀。核心对wait()作以下处理:(1)首先查找调用进程是否有子进程,若无,则返回出错码;(2)若找到一处于“僵死状态"的子进程,则将子进程的执行吋间加到父进程的执行时间上,并释放子进程的进程表项;(3)若未找到处于“僵死状态',的子进程,则调用进程便在可被中断的优先级上睡眠,等待其子进程发来软中断信号时被唤醒。3、exit()终止进程
3、的执行。系统调用格式:voidexit(intstatus)其中,status是返回给父进程的一个整数,以备查考。为了及时回收进程所占用的资源并减少父进程的干预,UNIX/LINUX利用exit()来实现进程的自我终止,通常父进程在创建子进程时,应在进程的末尾安排一条exit(),使子进程自我终止。exit(O)表示进程正常终止,exit(l)表示进程运行有错,异常终止。如果调用进程在执行exit()时,其父进程正在等待它的终止,则父进程可立即得到其返回的整数。核心须为exit()完成以下操作:(1)关闭软中断(2)回收资源(3)写记帐信息(4)置进程为“僵死状态
4、"4、exec()函数族fork()只是将父进程的用户级上下文拷贝到新进程中,而exec()系列可以将一个可执行的二进制文件覆盖在新进程的用户级上下文的存储空间上,以更改新进程的用户级上下文。exec()系列中的系统调用都完成相同的功能,它们把一个新程序装入内存,来改变调用进程的执行代码,从而形成新进程。如果exec()调用成功,调用进程将被覆盖,然后从新程序的入口开始执行,这样就产生了一个新进程,新进程的进程标识符id与调用进程相同。exec()没有建立一个与调用进程并发的子进程,而是用新进程取代了原来进程。所以exec()调用成功后,没有任何数据返回。exec
5、()系列系统调用在UNIX系统库unistd.h中,共有execl、execlp、execle>execv^execvp五个,其基本功能相同,只是以不同的方式來给出参数。(1)execl()intexecl(char*path,char*argO,char*argl,...char*argn,0);种是直接给出参数的指针(2)execv()intexecv(char*path,char^argv);给出指向参数表的指针(3)execlp()intexeclp(constchar*file,constchar*arg,...,(char*)0);execlp()会从
6、PATH环境变量所指的目录中查找符合参数file的文件名,找到后便执行该文件,然后将第二个以后的参数当做该文件的argv[0],argv[l]……,最后一个参数必须用空指针(NULL)作结束。二、Linux信号机制(一)信号的基木概念每个信号都对应一个正整数常量(称为signalnumber,即信号编号。定义在系统头文件<signal.h>中),代表同一用户的诸进程之间传送事先约定的信息的类型,用于通知某进程发生了某异常事件。每个进程在运行吋,都要通过信号机制來检查是否有信号到达。若有,便屮断正在执行的程序,转向与该信号相对应的处理程序,以完成对该事件的处理;处理
7、结束后再返回到原来的断点继续执行。实质上,信号机制是对中断机制的一种模拟,故在早期的UNIX版本中乂把它称为软中断。⑴信号与中断的相似点:①采用了相同的异步通信方式;②当检测出有信号或中断请求时,都暂停正在执行的程序而转去执行相应的处理程序;③都在处理完毕后返回到原来的断点;④对信号或中断都可进行屏蔽。⑵信号与中断的区别:①中断有优先级,而信号没有优先级,所有的信号都是平等的;②信号处理程序是在用户态下运行的,而中断处理程序是在核心态下运行;③中断响应是及时的,而信号响应通常都有较大的时间延迟。⑶信号机制具有以下三方而的功能:①发送信号。发送信号的程序用系统调用k
8、ill()
此文档下载收益归作者所有