- 1、本文档共73页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]操作系统2002--进程管理
四、进程的控制 进程是有生命周期的,产生、运行、暂停、终止。对进程的这些操作叫进程控制。 进程控制的职责是对系统中全部进程实施有效的管理,它是处理机管理的部分(另一部分是进程调度),当系统允许多进程并发执行时,为了实现共享、协调并发进程的关系,处理机管理必须提供对进程实行有效的管理。 为了防止操作系统及关键数据受到用户程序有意或无意的破坏,通常将处理机的执行状态分成系统态或用户态两种: 系统态:具有较高的特权,能执行一切指令,访问 所有的寄存器和内存 用户态:只能执行规定的命令,访问指定的寄存器 和内存。 通常,用户程序运行在用户态,因此它不能执行操作系统指令和访问操作系统区域,所以操作系统得到了保护。操作系统运行在系统态。 进程控制包括: 进程创建 进程撤消 进程阻塞 进程唤醒 这些操作都要对应地执行一个特殊的程序段(操作系统核心程序),同时系统也通过系统调用给用户提供进程控制的功能。教材上叫原语(一种特殊的系统调用)。 在UNIX系统中进程控制的系统调用有: fork() 创建子进程 sleep() 进程睡眠 exit() 进程自已终止(自杀) wait() (父)等待子进程终止 wakeup() 进程唤醒 1、进程的创建 进程之间的关系可以用进程图来描述。 子进程可以继承父进程所拥有的资源。撤消父进程时必须同时撤消其所有子进程。 A B C D E E F G 进程创建系统调用: create(name,priority,start-addr) UNIX系统: fork() 引起进程创建的事件 用户登陆 作业调度 提供服务 应用请求 进程的创建过程 申请空白PCB 为新进程分配资源 初始化进程控制块 将新进程插入就绪队列 2、进程的终止 正常结束 异常结束 越界错误 保护错 特权指令错 非法指令错 运行超时 等待超时 算术运算错 I/O故障 外界干预 操作员干预或操作系统干预 父进程请求 父进程终止 进程完成其任务,希望终止时,调用终止进程的系统调用(进程终止原语)终止进程。相当于一个人死亡后,家人要去派出所消户口。 在一般操作系统中进程终止的系统调用是:kill UNIX系统中是exit()。 进程的终止过程 根据被终止进程的标识符,从PCB集合中检索出 该进程的PCB,读出其状态信息。 若被终止进程正处于执行状态,应立即终止该进 程的执行,并设置调度标志为真。 若该进程还有子孙进程,应将其所有子孙进程予 以终止。 将该进程所拥有的所有资源,或者归还给父进程, 或者归还给系统。 将被终止进程从所在队列中移出。 3、进程的阻塞与唤醒 引起进程阻塞与唤醒的事件 请求系统服务 启动某种操作 新数据尚未到达 无新工作可做 进程的阻塞过程 正在执行的进程,当出现上述某个事件时,由于无法继续执行,于是进程便通过调用阻塞原语把自己阻塞,可见,进程的阻塞是进程自身的一种主动行为。进入阻塞过程后,由于进程此时还处于执行状态,所以应先立即停止执行,把进程控制块中的现行状态由“执行”改为“阻塞”。并把它插入到阻塞队列(如系统中设置了因不同事件而阻塞的多个阻塞队列则应将改进程插入到具有相同事件的阻塞队列)。最后转调度程序进行重新调度,将处理机分配给另一就绪进程,并进行切换。 进程从运行状态转换成阻塞状态是由进程挂起原语实现的,因此,调用进程挂起操作是在进程处于运行状态下执行的。它的执行将引起等待某事件的队列的改变. 例如,进程是因等待打印机而进入阻塞状态,则该进程将加入到等待打印机的队列。进程挂起系统调用的算法和队列变化如下。 进程挂起的内部调用形式(UNIX系统): sleep(chan,pri) 其中:chan 进程挂起(睡眠)的原因; pri 进程被唤醒后的优先级 一般调用形式: susp(chan) 其中:chan 进程等待的原因 进程的唤醒过程 一个正在运行的进程会因等待某事件(例如,等待打印机)的发生,由运行状态转换成阻塞状态,当它等待的事件发生后,这个进程将由阻塞状态转换成就绪状态。这种转换由进程唤醒操作完成。 当被阻塞进程所期待的事件出现时,则由有关进程调用唤醒原语,将等待改事件的进程唤醒。唤醒原语的执行过程是:首先将被阻塞进程从等待该事件的阻塞队列中移出,将其PCB中的现行状态由阻塞改为就绪,然后再将该进程插入到就绪队列中。 调用进程唤醒操
文档评论(0)