计算机操作系统(复习)进程管理

引入

程序的顺序执行(单道程序系统)

特点:顺序性、运行环境的封闭性、程序运行结果可再现性

程序的并发执行(多道程序系统)

特点:间断性、失去封闭性、不可再现性

例1: 下面有四个程序:

P1 : a = x^5

P2 : b = y-1

P3 : c = a-b

P4 : d = c+2

P1 和 P2,P3和P4 能否并发执行?

解:思路:进程的读和写没有交集就能并发执行

W(P1) = {a} ;  R(P1) = {x} ;  W(P2) = {b} ; R(P2) = {y} ;

W(P3) = {c} ; R(P3) = {a,b} ;  W(P4) = {d} ; R(P4) = {c}

W(P1) \bigcap R(P2)  \bigcup_{}^{}  W(P2) \bigcap R(P1)  \bigcup_{}^{} W(P1) \bigcap W(P2) = { }  \rightarrow P1和P2可以并发执行

W(P3) \bigcap R(P4)  \bigcup_{}^{}  W(P4) \bigcap R(P3)  \bigcup_{}^{} W(P3) \bigcap W(P4) = { c }  \rightarrow P3和P4不可以并发执行

进程的定义:

  1. 正在执行中的程序
  2. 正在计算机上执行的程序实例
  3. 能分配给处理机并由处理机执行的实体
  4. 具有以下特征的活动单元:一组指令序列的执行、一个当前状态和相关的系统资源集合
  5. 程序在一个数据集合上运行的过程,是系统进行资源分配和调度的一个独立单位,也是基本单位(目前,线程才是系统调度基本单位

特点:

  • 结构特征:每一个进程都有一个进程控制块PCB,是进程存在的标志;进程实体/进程映像:由程序代码、与代码相关联的数据集和PCB
  • 动态性:进程有生命周期
  • 并发性:一个进程可以与其他进程并发执行(程序不具备并发性)
  • 独立性:独立请求并占有资源、独立被调度运行,凡未建立PCB的程序都不能作为一个独立的单位参与运行
  • 异步性:进程的推进速度是不可预知的

进程的状态模型

两状态模型

运行态:获得处理机并运行

未运行态:未获得处理机

处于未运行态的进程,系统会按照某种原则组织成一个队列。

三状态模型

就绪态:一个进程获得了除处理机之外所需的一切资源,一旦得到处理机即可运行。处于就绪态的多个进程的PCB组成就绪队列

运行态:正在处理机上运行

阻塞态/等待态:进程因某等待事件发生(如I/O请求、某些原语操作等)而处于暂停运行的状态,即使讲处理机分配给它,它也无法运行。处于阻塞态的多个进程的PCB组成阻塞队列

五状态模型

就绪态:一个进程获得了除处理机之外所需的一切资源,一旦得到处理机即可运行。处于就绪态的多个进程的PCB组成就绪队列

运行态:正在处理机上运行

阻塞态/等待态:进程因某等待事件发生(如I/O请求、某些原语操作等)而处于暂停运行的状态,即使讲处理机分配给它,它也无法运行。处于阻塞态的多个进程的PCB组成阻塞队列

新建态 :刚刚创建的进程,操作系统还未将它加入就绪队列中

退出态:进程被终止但还未释放PCB

七状态模型

 运行态:正在处理机上运行

新建态 :刚刚创建的进程,操作系统还未将它加入就绪队列中

退出态:进程被终止但还未释放PCB

活动就绪态:进程在内存中并可以被调度执行

活动阻塞态:进程在内存中并等待某事件的发生

静止阻塞态:进程在外存中并等待某事件的发生

静止就绪态:进程在外存中,但是只要被调入内存就可以被调度执行

PCB的作用:使一个在多道程序环境中不能独立运行的程序(含数据),成为一个能独立运行的基本单位,一个能与其他进程并发执行的进程。

PCB是进程存在的唯一标志。

PCB的内容:

进程标识信息
处理机状态信息
进程调度信息
进程控制信息

进程标识信息系统识别进程的唯一标志,包含本进程的标识符(外部标识符——进程创建者——字符串、内部标识符——系统——整型数)、父进程(创建本进程的进程)的标识符、用户标识符(进程所属用户的标识符)

处理机状态信息:由CPU的各种寄存器中的内容组成,当运行中断时,被保护的CPU现场信息称为进程上下文,它包含通用寄存器的内容、程序计数器的值、程序状态字PSW、进程的堆栈指针

进程调度信息:包含进程优先级、进程状态信息、其他调度信息

进程控制信息:包含程序代码和数据集所在的内存地址、资源清单、同步与通信信息、外存地址、家族信息、链接指针

进程控制

原语:用机器指令构成的一种实现特定功能的小程序,处于操作系统的底层,运行时不允许中断

创建进程:

  1. 交互式环境——新用户在终端输入登录命令
  2. 批处理环境——响应任务的要求
  3. 用户程序提出某种请求
  4. 基于应用进程的需要

创建原语creat()的操作:

  1. 给新进程一个编号并申请空白PCB
  2. 给新进程分配空间
  3. 初始化PCB(填入进程标识、优先级、内存地址、资源清单、家族信息、现场信息、进程状态)
  4. 设置合适的链接,将新进程插入就绪队列

终止进程:

  1. 该进程已完成所要求的功能而正常终止
  2. 由于某种错误而导致非正常终止
  3. 外界干预

终止操作:

  1. 查找被终止进程的PCB,读出该进程的状态
  2. 若状态为“执行”,立即终止该进程的执行,并置调度标志为TRUE
  3. 若有子孙进程,将子孙进程一同终止
  4. 回收PCB(资源清单)中登记的全部资源
  5. 将进程的PCB从所在队列摘下来
  6. 若调度标志为TRUE,则启动进程调度程序

阻塞进程:

  1. 请求系统服务:不能立即获得服务时
  2. 启动某种操作
  3. 新数据尚未到达
  4. 无新工作可做

阻塞原语block()的操作:

  1. 中断CPU,保护该CPU现场
  2. 将被阻塞进程置“阻塞”状态后插入阻塞队列中
  3. 转进程调度程序选择新的就绪进程投入运行

唤醒进程:

  1. 系统唤醒
  2. 由事件发生进程唤醒

唤醒原语wakeup()的操作:

  1. 将被唤醒进程从相应的等待队列中摘下
  2. 将被唤醒进程置为就绪态,送入就绪队列

挂起进程:

  1. 用户请求将自身挂起
  2. 父进程请求将自己的某个子孙进程挂起
  3. 负荷调节的需要
  4. 操作系统的需要
  5. 对换的需要

挂起原语suspend()的操作:

  1. 检查挂起进程的状态:活动就绪态改为静止就绪态;活动阻塞态改为静止阻塞态
  2. 把该进程的PCB复制到某制定的内存区域
  3. 若被挂起的进程正在执行,则转向调度程序重新调度

激活进程:

  1. 用户请求将自身激活
  2. 父进程请求将自己的某个子孙进程激活

激活原语active()的操作:

  1. 将进程从外存调入内存,检查该进程的现行状态:静止就绪态改为活动就绪态;静止阻塞态改为活动阻塞态
  2. 若采用抢占调度策略,则比较被激活进程与当前进程的优先级

线程

定义:是进程内的一个相对独立的、可独立调度和指派的执行单元。

性质

  • 是进程内的一个相对独立的可执行单元
  • 是操作系统中的基本调度单元
  • 一个进程至少有一个线程
  • 线程并不拥有资源,而是共享和使用包含它的进程所拥有的全部资源
  • 在需要时可以创建其他线程

线程成为进程中的一个实体,作为系统调度的基本单位

任何一个线程都有一个独立的栈和一个线程控制块TCB

TCB内容:

  1. 线程状态:保存线程的当前状态(执行态、阻塞态、就绪态)
  2. 寄存器值:保存线程寄存器的上下文
  3. 堆栈指针:保存线程的栈指针

创建线程:利用线程创建函数(或系统调用)

终止线程:完成工作后自愿退出;在运行中出现错误或由于某种原因被其他线程强行终止

多线程机制:操作系统支持一个进程内执行多个线程的能力(用户级线程ULT、内核级线程KLT、混合级线程)

参考:《计算机操作系统》电子工业出版社

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cancri e

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值