文章目录
前言
本博客仅做学习笔记,如有侵权,联系后即刻更改
科普:
前趋图和程序执行
- 前趋图
是有向无循环图
- 前趋关系
表示一个执行完成之前,另一个不能开始
- 程序顺序执行
特征
- 顺序性
- 封闭性
程序独占全机资源- 可再现性
程序重复执行,获得的结果相同
- 程序并发执行
前提
- 并发执行的操作不存在前趋关系
特征
- 间断性
- 失去封闭性
- 不可再现性
进程的描述
定义和特征
- 定义
进程控制块(Process Control Block)
- 程序的一次执行
- 程序及其数据在数据机上顺序执行的活动
- 具有独立功能的程序在一个数据集合运行的过程,是系统进行资源分配和调度的一个独立单位
- 特征
- 多态性
- 并发性
- 独立性
- 异步性
进程的基本状态及转换
三种基本状态(内存中)
- 就绪状态
- 执行状态
- 阻塞状态
三种基本状态的相互转换
创建和终止状态(外存)
创建步骤:
- 申请一个空白PCB,并向PCB中填写用于控制和管理进程的信息
- 然后为该进程分配运行时所必须的资源
- 把该进程转入就绪状态并插入就绪队列之中
终止步骤:
- 等待操作系统进行善后处理
- 将其PCB清零,并将PCB空间返还系统
五种基本状态的相互转换
挂起操作
- 引起挂起操作的原因
基于系统和用户的需求
- 终端用户的需要
- 父进程请求
- 负荷调节的需要
- 操作系统的需要
- 引入挂起原语操作
引入挂起原语Suspend和激活原语Active后,进程的转换类型
- 活动就绪→静止就绪
- 活动阻塞→静止阻塞
- 静止就绪→活动就绪
- 静止阻塞→活动阻塞
进程管理中的数据结构
- 操作系统中用于管理控制的数据结构
- 内存表
- 设备表
- 文件表
- 用于进程管理的进程表(进程控制块PCB)
- 进程控制块PCB的作用
(1) 作为独立运行基本单位的标志
(2) 能实现间断性运行方式
(3) 提供进程管理所需要的信息
(4) 提供进程调度所需要的信息
(5) 实现与其它进程的同步与通信
- 进程控制块中的信息
进程标识符
- 唯一地标识一个进程
- 外部标识符
为了方便用户(进程)对进程的访问- 内部标识符
为了系统对进程的访问处理机状态
- 也称为处理机的上下文,主要是由处理机的各种寄存器中的内容组成的
- 包括
①通用寄存器
②指令计数器
③程序状态字PSW
④用户栈指针进程调度信息
- 在OS进行调度时,必须了解进程的状态及有关进程调度的信息
- 包括
① 进程状态
② 进程优先级
③ 进程调度所需的其它信息
④ 事件进程控制信息
- 用于进程控制所必须的信息
- 包括
① 程序和数据的地址
② 进程同步和通信机制
③ 资源清单
④ 链接指针
- 进程控制块的组织方式
- 线性方式
每次查找时都需要扫描整张表,因此适合进程数目不多的系统- 链接方式
把具有相同状态进程的PCB分别通过PCB中的链接字链接成一个队列- 索引方式
统根据所有进程状态的不同,建立几张索引表,并把各索引表在内存的首地址记录在内存的一些专用单元中、
进程控制
操作系统内核
- 支撑功能
- 中断处理
- 时钟管理
- 原语操作
原子操作是一个不可分割的基本单位
- 资源管理功能
- 进程管理
- 存储器管理
- 设备管理
进程的创建
- 进程的层次结构
在OS中,允许一个进程创建另一个进程
- UNIX中,进程与其子孙进程共同组成一个进程家族(组)
- 在Windows中不存在任何进程层次结构的概念,所有的进程都具有相同的地位
- 引起创建进程的事件
为使程序之间能并发运行,应先为它们分别创建进程
- 用户登录
- 作业调度
- 提供服务
- 应用请求
- 进程创建
- 申请空白PCB
为新进程申请获得唯一的数字标识符,并从PCB集合中索取一个空白PCB- 为新进程分配其运行所需的资源
包括各种物理和逻辑资源,如内存、文件、I/O设备和CPU时间等- 初始化进程控制块(PCB)
- 如果进程就绪队列能够接纳新进程,便将新进程插入就绪队列
进程的终止
- 引起进程终止的事件
- 正常结束
- 异常结束
- 外界干预
- 进程的终止过程
如果系统中发生了要求终止进程的某事件,OS便调用进程终止原语,终止指定的进程
- 根据被终止进程的标识符
从PCB集合中检索出该进程的PCB,从中读出该进程的状态- 若被终止进程正处于执行状态
应立即终止该进程的执行,并置调度标志为真,用于指示该进程被终止后应重新进行调度- 若该进程还有子孙进程
还应将其所有子孙进程也都予以终止,以防它们成为不可控的进程- 将被终止进程所拥有的全部资源或者归还给其父进程,或者归还给系统
- 将被终止进程(PCB)从所在队列(或链表)中移出,等待其它程序来搜集信息
进程的阻塞与唤醒
- 引起的事件
- 向系统请求共享资源失败
- 等待某种操作的完成
- 新数据尚未到达
- 等待新任务的到达
- 进程阻塞过程
阻塞是进程自身的一种主动行为
:进程通过调用阻塞原语block将自己阻塞
- 先立即停止执行
把进程控制块中的现行状态由“执行”改为阻塞- 并将PCB插入阻塞队列
- 进程唤醒过程
- 首先把被阻塞的进程从等待该事件的阻塞队列中移出
将其PCB中的现行状态由阻塞改为就绪- 然后再将该PCB插入到就绪队列中
进程的挂起与激活
- 进程的挂起
- 进程的激活过程
总结
小小励志
有些事你现在不做,一辈子都不会做了。
如果你想做一件事,全世界都会为你让路。
《搭车去柏林》