进程管理
* 进程的基本概念 : 程序在并发环境中的执行过程, 资源分配和独立运行的基本单位
* 进程与程序的区别
程序顺序执行的特征 { 1, 顺序性 2, 封闭性 3, 可再现性 }
程序并发执行的特征 { (1), 间断性 共享、合作、制约导致:执行—暂停—执行
(2), 失去封闭性 资源状态由多程序改变
(3), 不可再现性 相同环境和初始条件,重复执行结果不同。}
* 进程控制 *
* 进程同步 *
* 进程通信 *
* 线程
进程的特征 {
1, 结构特征 {
进程结构 {
PCB 进程控制块 -> 动态特征的集中反映 [头脑] [记载很多信息,通话本地长途。。。常驻内存]
程序段 -> 描述要完成的功能 [身子] [可能是动态调入的]
数据段 -> 操作对象及工作区 [身子] [游戏地图]
}
2, 动态性 {
进程最基本的特征是动态性
进程的生命周期:进程由创建而产生,由调度而执行,由撤销而消亡的过程。
}
3, 并发性 { 多个进程同在内存中,且能在一段时间内同时运行。}
4, 独立性 { 进程是一个能独立运行、独立分配资源、独立接受调度的基本单位。}
5, 异步性 { 进程按各自独立的、不可预知的速度向前推进。}
}
进程定义 : 进程是进程实体的运行过程,是系统进行资源分配和调度的基本单位。
进程和程序的关系 {
(1)进程是一个动态概念,程序是一个静态概念。
(2)进程具有并行特征,程序没有。
(3)进程是竞争资源的基本单位
(4)一个程序对应多个进程,一个进程为多个程序服务。
}
进程的三种基本状态 {
1, 就绪状态 [万事俱备,只欠东风] [进程已经分配了除处理机以外的所有必要资源,只要再获得处理机就能够执行的状态。这样的进程可能有多个,通常排成一个队列,称就绪队列。]
2, 执行状态 [已经获得CPU,正在运行。在单处理机系统只有一个进程处于执行状态。多处理机系统则有多个处于执行状态。]
3, 阻塞状态 [正在执行的进程由于发生某事件而暂时无法继续执行时,放弃处理机而进入的状态,又称等待状态。引起阻塞的事件:请求I/O,申请缓存。]
}
进程的基本状态转换
图片
挂起状态 {
引入原因:
(1)终端用户请求
(2)父进程请求
(3)负荷调节需要 [实战OS多用]
(4)操作系统的需要
}
挂起引起的状态转换
静止状态 <-> 活动状态
^ ^
| |
V V
挂起状态 <-> 非挂起状态
PCB 进程控制块 {
PCB是OS中最重要的记录型结构。
OS用PCB对并发进程进行管理和控制。
PCB是进程存在的唯一标志。
PCB常驻内存。
OS专门开辟PCB区将所有的PCB组织成若干个链表或队列。
}
PCB中的信息 {
(1)进程标识符 {
(1)内部标识符
进程唯一的数字编号,给OS使用。
(2)外部标识符
由字母、数字组成,给用户使用。
}
(2)处理机状态 {
处理机中主要的寄存器:
(1)通用寄存器 8-32个,暂存信息用
(2)指令计数器 要访问的下一条指令地址
(3)程序状态字PSW 条件码、执行方式、中断屏蔽标志
(4)用户栈指针 用户进程拥有的系统栈,存放过程和系统调用参数及调用地址。
}
(3)进程调度信息
进程状态 进程优先级 与调度算法有关信息 事件 { 如:阻塞原因 }
(4)进程控制信息 {
程序和数据地址
进程同步和通信机制
资源清单:除CPU之外的所需资源与已经分配资源清单
链接指针:本进程PCB所在队列的下一个地址。
}
}
PCB的组织方式
(1)链接方式
把统一状态的PCB,用其中的链接字链接成一个队列。如:就绪队列、阻塞队列(根据不同阻塞原因)、空白队列。
(2)索引方式
建立就绪索引表、阻塞索引表等。把索引表在内存的首地址放在内存的专用单元中。
OS-6 : 进程管理
进程管理中最基本功能是进程控制
进程控制任务:
进程的创建、终止、进程状态的转变等
进程控制一般由OS内核来实现。
进程图 : 进程是一个家族关系,子进程可以继承父进程的资源。
引起创建进程的事件 {
(1) 用户登录。 比如 :unix
(2) 作业调度。 [批处理系统,在外存中选择一个或多个调入内存]
(3) 提供服务。 [OS向用户提供服务,比如打印什么的...]
(4) 应用请求。 [由自己来创建自己的子进程] [1,2,3由内核管理]
}
----------------------
进程的创建 { 4步
* 原语CREAT()按下述步骤创建一个新进程。
(1), 申请空白 PCB
(2), 为新进程分配资源。
(3), 初始化进程的控制块
(4), 将新进程插入就绪队列
}
PCB的初始化
(1), 初始化标识信息
(2), 初始化处理机状态信息
(3), 初始化处理机控制信息
引起进程终止的事件 {
(1), 正常结束
(2), 异常结束 {越界,运行超时,特权指令错,...}
(3), 外界干预
(1), 操作员或OS干预 (2),被父进程终止 (3) 父进程终止
}
进程的终止过程 {
从PCB集合中检索出该进程的PCB,从中读出该进程的状态。
若处于执行状态,终止该进程的执行,并置调度标志为真,重新调度。
若有子孙进程,将所有子孙进程终止。
将进程全部资源归还其父进程或系统。
将其PCB从所在队列(或链表)中移出
}
引起阻塞和唤醒的事件 {
(1), 请求系统服务
(2), 启动某种操作
(3), 新数据尚未到
(4), 无新工作可做
}
由阻塞原语BLOCK 完成
进程阻塞过程 {
入口
|
保存当前进程的CPU现场
|
置该进程状态
|
进入等待队列 [阻塞队列]
|
转进程调度
}
由唤醒原语WAKEUP 完成
进程唤醒过程 {
入口
|
从等待队列中摘下被唤醒进程
|
置该进程为就绪 态
|
进入就绪队列
|
转进程调度或返回 [如果该进程的优先级特别高]
}
注意 {
BLOCK和WAKEUP是一队作用相反的原语。
如果在某进程中调用了阻塞原语,则必须在与之相合作的另一进程中或其他相关的进程中,安排唤醒原语,以能唤醒阻塞进程;否则,被阻塞进程将会因不能被唤醒而长久地处于阻塞状态,从而再无机会继续运行。
}
OS-7
进程的挂起 {进程3种基本状态 : 就绪,执行,阻塞}
暂时从内存中调出去 - 解决系统种比较繁忙的状态
1), 挂起原语 : SUSPEND()
2), 挂起原语的执行过程
检查被挂起进程的状态 {
活动就绪 -> 静止就绪 <-激活-
活动阻塞 -> 静止阻塞 <-激活-
执行 -> 静止就绪
}
执行 -I/O请求-> 活动阻塞 【明白】
进程的两种制约关系 {
*1 间接制约 进程间由于共享某种资源
进程A <-> 资源 <-> 进程B
*2 直接制约 进程间由于合作而形成的互相制约
进程A y = x+5 <-> 进程B x = 0+3
互斥 间接制约 并发执行的进程由于竞争同一资源...
同步 直接制约 进程间共同完成一项任务... {
同步进程间具有合作关系,在执行时间上必须协调进程
}
每个进程的printf()都是使用临界区[厕所],一个printf,一个printf执行!
进入区 -> 临界区 -> 退出区 -> 剩余区
同步机制遵循的原则 {
(1), 空闲让进
(2), 忙则等待
(3), 有限等待
(4), 让权等待 [让出CPU]
}
使用信号量来协调进程间的协调关系!
信号量 {
*1, 信号量是一种数据结构
*2, 信号量的值与相应资源的使用情况
*3, 信号量的值由P, V操作改变。
}
S-11
进程通信
进程通信是指进程之间的信息交换
交换的信息量 一个状态或数值
上千个字节
进程通信分类 {
1), 低级通信:进程的互斥和同步
2), 高级通信: 指用户可直接利用os提供的一组通信命令,高效地传送大量数据的一种通信方式。对用户透明(用户不用管)。
}
高级通信分类 {
共享存储器系统 *2*
消息传递系统 ***
管道通信 ***
}
共享存储器系统, {
(1)共享数据结构的通信方式 进程之间通过某种数据结构,如缓冲池进行通信属于低级通信方式;
(2)共享存储区通信方式 为了传送大量信息,在存储器中划出一块共享存储区,进程可通过对共享存储区进行读或写来实现通信,属于高级通信方式。
}
消息传递系统 {
信息交换的单位是消息或报文,分成两种:
1.直接通信方式
2.间接通信方式
计算机网络中将消息称为报文。
}
*1* {
直接通信方式 {
发送进程直接把消息发送给目标进程
发送进程和接收进程都以显式方式分别提供对方的标识符。
系统提供两条通信原语
Send(Receiver,message);
Receive(Send,message);
例如: Send(P2,m1);
Receive(P1,m1);
}
解决生产者一消费者问题 {
repeat …
produce an item in nextp;
…
Send(consumer,nextp);
until false;
repeat
Receive(producer, nextp);
…
Consumer the item in nextc;
until false;
}
*2* 间接通信方式 {
进程之间的通信需要通过某种中间实体,该实体用来暂存发送进程发送给目标进程的消息;
接收进程则从该实体中取出对方发送给自己的消息。
这种中间实体称为信箱。
消息在信箱中可以安全地保存.只允许核准的目标用户随时读取,故可实现非实时通信。
}
信箱的创建和撤消 {
进程用信箱创建原语来建立一个新信箱。创建者进程应给出信箱名字、信箱属性(公用、私用或共享);
对于共享信箱,还应给出共享者的名字。
用信箱撤消原语来撤消
}
消息的发送与接收 {
Send(mailbox,message):将一个消息发送到指定信箱;
Receive (mailbox,message) 从指定信箱中接收一个消息
}
信箱分类 {
私用信箱。 {
用户进程建立,作为该进程的一部分。
拥有者有权读消息.其他用户只能发送。
采用单向通信链路。
进程结束时信箱也消失。
}
公用信箱。{
它由OS创建.
提供给系统中的所有核准进程使用。
进程既发送也可取出。
采用双向通信链路的信箱来实现。
系统运行期间始终存在。
}
共享信箱。{
由某进程创建,创建时提供共享进程(用户)的名字。
信箱的拥有者和共享者,都有权从信箱中取走发送给自己的消息。
}
}
信箱通信时发送进程和接收进程的关系:
一对一关系。建立一条专用的通信链路。
多对一关系。服务进程与多个用户进程之间进行交互,又称客户/服务器交互。
一对多关系。一个发送进程与多个接进程进行交互,使发送进程可用广播形式,向接收者发送消息。
多对多关系。建立一个公用信箱,多个进程投递并取走自己的消息。
*管道通信** {
管道通信方式建立在文件系统的基础上,利用共享文件来连接两个相互通信的进程,此共享文件称为管道(Pipe)。
管道是指用于连接一个读进程和一个写进程,以实现它们之间通信的共享文件
}
管道通信必需的协调能力 {
(1)互斥 当一个进程正在对管道进行读/写操作时,另一进程必须等待。
(2)同步 当写(输入)进程把一定量的数据(如4K)写入管道后,便去睡眠等待,直到读(输出)进程取走数据后再把它唤醒。当读进程发现管道空时也应睡眠等待,直至写进程将消息写入管道后,才将它唤醒.
(3)判别对方是否存在.只有确定了对方存在时方能进行通信。
}
OS-12
线程 (多CPU和网络的OS上主要提出的)
进程:使多个程序能并发执行,以提高资源利用率和系统吞吐量
引入线程,是为了减少程序在并发执行时所付出的时空开销,使OS具有更好的并发性
引入线程目的 {
进程是可拥有资源的独立单位和可独立调度和分派的基本单位。
创建、撤消和切换中,系统必须为之付出较大的时空开销。故进程,其数目不宜过多,进程切换的频率也不宜过高。
进程不应同时作为拥有资源的单位和可独立调度和分派的基本单位,应该“轻装上阵”;
}
线程的属性 {
(1)轻型实体。线程中的实体基本上不拥有系统资源
(2)独立调度和分派的基本单位。 线程的切换非常迅速、开销小。
(3)可并发执行。
(4)共享进程资源。
}