DJ2-2 进程管理
目录
2.3 进程控制
2.3.1 操作系统内核
2.3.2 进程的创建
2.3.3 进程的终止
2.3.4 进程的阻塞与唤醒
2.3.5 进程的挂起与激活
2.3 进程控制
进程控制是用于创建一个新进程,终止一个已完成的进程,或去终止一个因出现某事件而使其无法运行下去的进程,还负责进程运行中的状态转换。
进程控制一般是由 OS 的内核中的原语(Primitive)来实现的。
2.3.1 操作系统内核
OS 内核——常驻内存。
- 与硬件紧密相关的模块(中断处理)
- 常用设备驱动、运行频率高的模块(时钟管理、进程调度)
OS 内核包含两大功能:
- 支撑功能
- 资源管理功能
2.3.2 进程的创建
1. 进程的层次结构
- 父进程
- 子进程:可以继承父进程所拥有的资源
2. 进程图(process graph)
进程图是用于描述一个进程的家族关系的有向树。
- 子进程可以继承父进程所拥有的资源。
- 当子进程被撤消时,应将其从父进程那里获得的资源归还给父进程。
- 在撤消父进程时,也必须同时撤消其所有的子进程。
3. 引起进程创建的事件
导致一个进程去创建另一个进程的典型事件,可有以下四类:
- 用户登录(如:从终端登录到主机)
- 作业调度(如:挑选作业来执行)
- 提供服务(如:C/S、B/S)
- 应用请求
4. 进程的创建过程
调用进程创建原语 Creat() 按下述步骤创建一个新进程:
1)申请空白 PCB
2)为新进程分配资源(挂到 PCB 上)
3)初始化进程控制块 PCB,包括:
- 初始化标识信息
- 初始化处理机状态信息
- 初始化处理机控制信息
4)将新进程插入就绪队列
2.3.3 进程的终止
1. 引起进程终止的事件
1)正常结束:批处理中用 Holt 指令,分时中用 Logs off 指令。
2)异常结束:
本进程运行中出现了异常事件。
- 越界错误。存储区
- 保护错。写一个只读文件(权限)
- 非法指令。执行一条不存在的指令(指令集)
- 特权指令错。用户访问只允许 OS 执行的指令
- 运行超时。(防止资源浪费或骗取权限)
- 等待超时。
- 算术运算错。被 0 除(除以 0)
- I/O 故障
OS 是无法预先判断一个作业需要运行多长时间的。
3)外界干预
并非指本进程运行中出现了异常事件,而是指进程为响应外界请求而终止运行。
- 操作员或操作系统干预
- 父进程请求终止该进程
- 当父进程终止时,OS 也将终止其所有子孙进程
2. 进程的终止过程
1)根据被终止进程的标识符 ID,从 PCB 集合中检索出该进程的 PCB,从中读出该进程的状态。
2)若被终止进程正处于执行状态,应立即终止该进程的执行,并置调度标志为 true,用于指示该进程被终止后应重新进行调度。
3)若该进程还有子孙进程,还应将其所有子孙进程予以终止,以防它们成为不可控的进程。
级联地终止,防止孤儿进程的出现。
4)将被终止进程所拥有的全部资源,或者归还给其父进程,或者归还给系统。
5)将被终止进程(它的PCB)从所在队列(或链表)中移出,等待其它程序来搜集信息。
2.3.4 进程的阻塞与唤醒
1. 引起进程阻塞的事件
1)请求系统服务:进程提出 I/O 服务请求且不能被立即满足时,转变为阻塞状态来等待。
2)启动某种操作:当进程启动某种操作后,在该操作完成之后才能继续执行
3)新数据尚未到达:对于相互合作的进程而言。
4)无新工作可做(如发送进程)
为了防止 CPU 空转,进程自己把自己阻塞,有新工作时再唤醒。
2. 进程的阻塞过程
1)正在执行的进程,当发现上述某事件时,由于无法继续执行,于是进程便通过调用阻塞原语 block( ) 把自己阻塞。
2)把进程控制块中的现行状态由执行改为阻塞,并将 PCB 插入阻塞队列。
3)转调度程序进行重新调度,将处理机分配给另一就绪进程,并进行切换。
3. 进程的阻塞与唤醒
当被阻塞进程所期待的事件出现时,则由有关进程(如:用完并释放了该 I/O 设备的进程)调用唤醒原语 wakeup(),将等待该事件的进程唤醒。
4. 进程的唤醒过程
1)首先把被阻塞的进程从等待该事件的阻塞队列中移出,将其 PCB 中的现行状态由阻塞改为就绪。
2)然后再将该 PCB 插入到就绪队列中。
2.3.5 进程的挂起与激活
1. 进程的挂起过程
当出现了引起进程挂起的事件时,系统将利用挂起原语 suspend() 将指定进程挂起。
suspend() 的执行过程是:
首先检查被挂起进程的现行状态
- 若处于活动就绪状态,则将其改为静止就绪状态;
- 若对于活动阻塞状态,则将之改为静止阻塞状态。
2. 进程的激活过程
当发生了激活进程的事件时,则可将在外存上处于静止就绪状态的进程换入内存,系统再利用激活原语 active() 将指定进程激活。
active() 的执行过程是:
首先将进程从外存调入内存,检查该进程的现行状态
- 若处于静止就绪状态,则将其改为活动就绪状态;
- 若对于静止阻塞状态,则将之改为活动阻塞状态。
DJ2-2 进程管理相关推荐
- 操作系统学习笔记 第二章:进程管理(王道考研)
本文章基于 2019 王道考研 操作系统 考试复习推荐资料:操作系统复习总结 - 百度文库 (baidu.com) 需要相关电子书的可以关注我的公众号BaretH后台回复操作系统 第一章:操作系统概述 ...
- C++ Windows进程管理
功能: 1.各个进程启动.挂起.恢复.停止等 2.监听进程的运行状态,进程退出(正常.非正常)时,通知用户 3.异步队列 4.线程安全 进程管理器类: #ifndef __ProcessManager ...
- php 进程管理,php如何管理进程
进程管理-防止进程成为僵尸进程 创建好了进程,那么怎么对子进程进行管理呢? 使用信号,对子进程的管理,一般有两种情况:(推荐学习:PHP编程从入门到精通) posix_kill():此函数并不能顾名思 ...
- 《Linux内核设计与实现》读书笔记 第三章 进程管理
第三章进程管理 进程是Unix操作系统抽象概念中最基本的一种.我们拥有操作系统就是为了运行用户程序,因此,进程管理就是所有操作系统的心脏所在. 3.1进程 概念: 进程:处于执行期的程序.但不仅局限于 ...
- systemd进程管理工具实战教程
systemd是目前Linux系统上主要的系统守护进程管理工具,由于init一方面对于进程的管理是串行化的,容易出现阻塞情况,另一方面init也仅仅是执行启动脚本,并不能对服务本身进行更多的管理. ...
- Linux进程管理 (7)实时调度
关键词:RT.preempt_count.RT patch. 除了CFS调度器之外,还包括重要的实时调度器,有两种RR和FIFO调度策略.本章只是一个简单的介绍. 更详细的介绍参考<Linux进 ...
- boost:进程管理
概述 Boost.Process提供了一个灵活的C++ 进程管理框架.它允许C++ developer可以像Java和.Net程序developer那样管理进程.它还提供了管理当前执行进程上下文.创建 ...
- php 脚本 fpm缓存,PHP生命周期及fpm(FastCGI进程管理器)的运作方式
PHP在web方式中如何改了文件就立即生效的,重要的几个概念:sapi: 可以简单的理解为php引擎对外的一个统一接口,使得php可以和外部程序进行交互 php的生命周期中关键四个调用: MINT - ...
- linux基础知识_压缩—进程管理-网络管理-ftp-nfs-ssh-scp
linux基础知识_压缩-进程管理-网络管理-ftp-nfs-ssh-scp 1.压缩包管理 gzip .gz格式的压缩包,不打包,分别压缩,原文件消失 bzip2 .bz2格式的压缩包,原文件不会消 ...
- Linux进程及进程管理命令
Linux进程基础 1进程概念 1.1程序与进程 1.2进程的状态 1.3线程 1.4进程生命周期 1.5虚拟内存 2进程管理工具 2.1pstree 2.2ps 2.3pgrep 2.4kill.p ...
最新文章
- 太原理工大学计算机专业多少分录取分数线,多少分能上山西太原理工大学,往年全国各省各专业录取分数线出炉...
- JVM堆 栈 方法区详解
- HBase Shell常用的命令
- python文件传输模块_如何将python对象从一个文件模块传递到另一个文件模块?
- ITK:图像重新取样
- [Linux学习]Linux键盘布局设置
- docker java mysql_Docker 搭建 MySQL 服务
- 使用vue来开发一个下拉菜单组件(2)
- 训练自己的数据_PyTorch版CenterNet训练自己的数据集
- linux 进程优先级 chrt,关于Linux进程优先级的一些疑问
- php刷数据库数据库,php数据库操作种
- 《JavaScript 高级程序设计》第三章:基本概念
- 百度网盘下载速度太慢,有什么办法可以提高下载速度?
- VIM复制粘贴 的快捷键是什么
- 地铁供电系统原理图_城市轨道交通供电系统设计原理与应用
- Vue中使用微信JSDK实现图片上传
- 默克推进下一代抗体药物偶联物疗法;美国FDA受理君实生物特瑞普利单抗治疗鼻咽癌的上市申请 | 医药健闻...
- NXP JN5169 使用看门狗定时器
- In aggregated query without GROUP BY报错
- 计算机二级mysql考试经验分享(2021年3月)