[OS] 第二章 进程管理
2013-01-18 13:14
295 查看
进程管理 * 进程的基本概念 : 程序在并发环境中的执行过程, 资源分配和独立运行的基本单位 * 进程与程序的区别 程序顺序执行的特征 { 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)共享进程资源。 }
相关文章推荐
- [OS] 第二章 进程管理
- [OS复习]进程管理3
- OS 进程管理
- Python:OS 模块 -- 进程管理
- 第二章 进程管理(4)——进程通信
- 计算机操作系统(第四版)第二章 进程管理 试题
- 第二章-进程管理笔记(2)
- 第二章 进程管理(5)——线程
- 深入linux内核架构-第二章-进程管理和调度
- python os模块进程管理
- OS复习-进程管理
- [OS复习]进程管理2
- [OS复习]进程管理5
- Python之OS模块进程管理介绍--os.fork()
- [笔记分享] [OS] Linux的进程管理
- [OS复习]进程管理4
- 第二章-进程管理笔记(3)
- Python:os模块的进程管理
- Python之os模块的进程管理介绍
- 第二章 进程管理