计算机科学与技术专业段雪丽—操作系统.pdf
操作系统 授课教师:段雪丽 信息工程学院 计算机科学与技术教研室 TRANSITION PAGE 2.1 2.2 2.3 前趋图和程序的执行 进程的描述 进程控制 2.4 2.5 2.6 2.7 2 进程通信 进程同步基本概念 经典的同步问题 线程及其实现 目 录 页 本节课 主要内容 重点: Ø 进程的并发执行 Ø 进程特征 Ø 进程状态转换 Ø 进程控制块 难点: Ø 进程管理中的数据结构 3 第一节 2.1.1 程序的顺序执行及其特征 前趋图及程序的执行 程序的顺序执行:一个具有独立功能的程序,独占处理机直至得到最终结 Ø 果的过程,称为程序的顺序执行。(一个较大的程序通常都由若干个程序 段组成。程序在执行时,必须按照某种先后次序逐个执行,仅当前一操 作执行完后,才能执行后继操作。) 1) 程序段按固定的流程执行下去 例1:输入I,计算C,打印P 2) 语句的顺序执行 例2: S1: a=x+y S2: b=a-5 S3: c=b+1 4 第一节 2.1.1 程序的顺序执行及其特征 前趋图及程序的执行 Ø 程序顺序执行时的特征 (1) 顺序性 处理机的操作严格按照程序所规定的顺序执行。 (2) 封闭性 程序一旦开始执行,其计算结果不受外界因素的影响。即程 序运行时独占全机资源,资源的状态(除初始)只有本程序才能改变它。 (3) 可再现性 程序执行的结果与它的执行速度无关(即与时间无关),而 只与初始条件有关。 5 第一节 2.1.2 前趋图 前趋图及程序的执行 Ø 引入前趋图描述程序执行的先后顺序:为了描述一个程序的各部分 (程序段、语句)间的依赖关系,或是一个大的计算的各子任务间的 因果关系,采用前驱图方式。 6 第一节 2.1.2 前趋图 前趋图及程序的执行 • 有向无循环图 • 节点用于表示一个进程或一段程序 • 节点之间用一个有方向的线段相连 • 方向表示所连接的节点之间的前趋和后继关系 • 节点间的有向边则表示两个结点之间存在的偏序(Partial Order)或前趋关 系(Precedence Relation)“→” • 被指向的节点为后继节点,离开箭头的节点是前趋节点。 (Pi,Pj)→ 可写成Pi→Pj,表示Pi必须在Pj前完成 7 第一节 2.1.2 前趋图 前趋图及程序的执行 G={P, → } P={P1, P2, P3, P4, P5, P6, P7, P8, P9} →={ (P1, P2), (P1, P3), (P1, P4), (P2, P5), (P3, P5), (P4, P6), (P4, P7), (P5, P8), (P6, P8), (P7, P9), (P8, P9)} 8 第一节 2.1.2 前趋图 前趋图及程序的执行 P2 P4 P1 P6 P3 P7 P5 9 第一节 2.1.2 前趋图 具有循环的前趋图 前趋图及程序的执行 前趋图中是不允许有循环的,否则必 然会产生不可能实现的前趋关系。 S2→S3,S3→S2 10 第一节 2.1.3 程序的并发执行及其特征 前趋图及程序的执行 1) 程序并发执行 Ii Ii+1 Ci Ci+1 Pi Pi+1 Ii Ci Pi 前趋关系Ii→Ci,Ii→Ii+1,Ci→Pi,Ci→Ci+1,Pi→Pi+1,而Ii+1和Ci及Pi-1是 重叠的,即在Pi-1和Ci以及Ii+1之间,不存在前趋关系,可以并发执行。 11 第一节 2.1.3 程序的并发执行及其特征 前趋图及程序的执行 2) 程序并发执行时的特征 (1) 间断性(制约性) (2) 失去封闭性 (3) 不可再现性 12 第一节 2.1.3 程序的并发执行及其特征 前趋图及程序的执行 2) 语句的并发 S1: A=X+2 S2: B=Y+1 S3: C=A+B S4: D=C-6 S1 S3 S4 S2 13 第一节 2.1.3 程序的并发执行及其特征 前趋图及程序的执行 对于下述五条语句的程序段: S1: a:=x+2 S2: b:=y+4 S3: c:=a+b S4: d:=c+b S5: e:=d+3 14 第一节 顺序执行与并发执行的特征 前趋图及程序的执行 完成前一操作才能 进入下一操作 初始条件相同,结果唯一 (执行次数和执行速度与结果无关) 程序顺序执行的特征 1)顺序性 2)封闭性 3)可再现性 资源的状态只能由执行程序改变(运行时程序独占资源) 执行 暂停 程序并发执行时的特征 原因:相互制约(直接/间接) 1)间断性 2)失去封闭性 3)不可再现性 资源被共享,状态由多个共享者改变 15 第一节 程序并发执行带来的问题: 前趋图及程序的执行 不可再现性 程序A N=N+1 情况A 程序B N=N+1 情况C PRINT(N) PRINT(N) PRINT(N) N=0 N=N+1 N=0 N=N+1 N=0 N值为: 0 1 0 打印结果: N+1 N N PRINT(N) N=0 情况B 16 第一节 程序并发执行带来的问题: 前趋图及程序的执行 余额: 余额: 1000 1000 读取余额1 读取余额1 读取余额2 取500 取200 保存余额1 保存余额2 余额: ? 800 读取余额2 存500 保存余额1 ? 取1500 17 第一节 程序并发执行带来的问题: 前趋图及程序的执行 程序并发执行,虽然能有效地提高资源利用率和系统的吞吐量, 但必须采取某种措施,以便并发程序能保持其“可再现性”。 程序并发性的分析 1)如何使程序并发(行) 2)并发中出现的问题 3)如何处理 任务能否并发,不但取决于算法,还与程序 的结构形式有很大关系,并行的方法: 在标准语言的基础上加以扩充 重新设计专门的并行语言 18 第二节 2.2.1 进程的定义和特征 进程的描述 ? 为什么要引入进程? 为了使内存中的多道程序能够正确地并发执行, ? 为什么程序不能并发执行? 因为并发执行的程序是“停停走走”地执行,会失去封闭进而结果不可再现。因此, 人们引入“进程”(Process)这一概念来描述程序动态执行过程的性质并加以记 录,实现可再现性,即进程就是操作系统为进行处理机管理而引入的概念。 为了使参与并发执行的每个程序(含数据)都能独立地运行,在操作系统中必须 为之配置一个专门的数据结构,称为进程控制块PCB,当程序停下时,能将其现 场信息保存在它的PCB中,待下次被调用执行时,再从PCB中恢复CPU现场而继 续执行。进而PCB、程序段和数据是进程的核心内容。 19 第二节 2.2.1 进程的定义和特征 进程的描述 进程的定义 异步性 进程都是并发的 进程的定义:进程是可并发执行的、具有独立功能的程序在一定数据集 合上的一次执行过程,是操作系统进行资源分配和调度的基本单位。 组成:程序+数据 独立性:资源的拥有者和CPU调度的分配者 一次性+动态性 创建/撤消 进程是一个程序及数据在处理机上顺序执行时所发生的活动(执行的过程) 书中的定义 进程是进程实体的运行过程,是系统进行资源分配 和调度的一个独立单位。 20 第二节 2.2.1 进程的定义和特征 进程的描述 相同的程序可以多次运行,每 进程的理解: 次运行的环境可能不相同。这种多 –进程是程序运行过程 次运行可以发生在同一时间段中。 操作系统通过进程的数据结构了解 –进程是以异步为主要特征并具有“活力”的过程 虽然进程是程序运行,但是 进程的详细信息,采用进程管理的方法 进程与程序却不能完全等同。程 –操作系统需要用数据结构描述进程 实现对进程运行轨迹的控制。 进程的异步特征的表现形式是进程推进过 序是静态的,是以文件形式存放 程中的“走走停停”,某一进程被别的进程切 –进程的运行轨迹是可以控制的 在磁盘上的代码序列。 操作系统为了管理进程,对每个进 换又切换其他的进程; –进程是资源分配的单位 进程是动态的,是不断向前 程都有一个数据结构用来描述进程的 在以进程为基础的操作系统 进程的每一步执行都是一个向前推进的过 推进的过程,进程具有各种状态 详细信息,该数据结构根据进程的动 中,系统资源以进程为单位进行 –进程与程序不同 程,是具有“活力”的过程。 并可以在状态之间转换。 态过程不断更新。 分配。系统资源包括各种硬件资 源和软件资源,特别是处理器资 源。 21 第二节 2.2.1 进程的定义和特征 进程的描述 进程包含有描述进程信息的数据结构和 进程的特征:运行在进程上的程序。操作系统用进程控制 –结构性 块描述和记录进程的动态变化过程。进程的 进程是程序在数据集合上的一次执行过 数据结构至少包含进程控制块、程序块和代 –动态性 程,具有生命周期,由创建而产生,由调度 码块。 在同一段时间内,若干个进程可以共享 –并发性 而运行,由结束而消亡,是一个动态推进的 一个处理器。进程的并发性能够改进系统的 过程。 –独立性 资源利用率,提高计算机的效率。 在操作系统管理上,进程是一个独立的 –异步性 资源分配单位,进程可以在创建时获取资源, 在计算机环境中,处理器的数量总是小 也可以在运行过程中获取资源。操作系统为 于进程的数量,多个进程被强制分享同一个 进程分配各种资源,如处理器和内存地址空 处理器,进程以交替方式被处理器执行。进 间等。 程的这种执行方式为异步性。 22 小结 程序 顺序 执行 时的 特征 程序 并发 执行 时的 特征 1)顺序性 前一操作完成才能进入下一操作 2)封闭性 运行时独占资源,结果不受外界影响; 即资源的状态只能由本程序改变 3)可再现性 初始条件相同,结果唯一(结果与程序的 执行次数和速度无关(停—走—停—走) 1)间断性 出现执行——暂停——执行这种间断性的活动规律 原因:相互制约(直接/间接) 2)失去封闭性 资源被共享,状态由多个共享者改变 3)不可再现性 初始条件相同,结果不唯一 (结果与执行程序的速度相关) 23 小结 进程的定义:进程是可并发执行的、具有独立功能的程序在一定数据集 合上的一次执行过程,是操作系统进行资源分配和调度的基本单位。 进程是程序的执行过程,创建而产 生﹑调度而执行﹑撤消而消亡 按各自独立的、不可预知的速度向前推 进,导致程序执行的不可再现性。 1)动态性 2)并发性 3)独立性 进程可以并发执行,而程 序却不能 4)异步性 5)结构特 征 进程实体由程序段、数据段和进程控制 块组成,又称为“进程映像”。 独立运行/资源分配/调度的基本单位 24 小结 进程与程序的区别 动态 静态(定义) 暂时性(具有生命期) 永久性 并发性、独立性、结构特征 程序都没有 程序+数据+PCB块 程序+数据 一个进程可以涉及多个程序 一个程序可以对应多个进程 异步运行,会相互制约 程序不具备此特征 (不同的进程可以包含相同的程序) 25 第二节 2.2.2 进程的状态及其转换 进程的描述 Ready: 该进程运行所需的一 切条件都得到满足,但因 处理机资源个数少于进程 个数,所以该进程不能运 行,而必须等待分配处理 机资源,一旦获得处理机 就立即投入运行。 26 第二节 2.2.2 进程的状态及其转换 进程的描述 Running: 进程正在处理机上 运行的状态,该进程已 获得必要的资源,也获 得了处理机,用户程序 正在处理机上运行。 27 第二节 2.2.2 进程的状态及其转换 进程的描述 Blocked: 进程等待某种事件 完成(例如,等待输入 /输出操作的完成)而 暂时不能运行的状态, 处于该状态的进程不能 参加竞争处理机,此时, 即使分配给它处理机, 它也不能运行。 28 第二节 2.2.2 进程的状态及其转换 进程的描述 状态变化: 就绪状态 → 执行状态 执行状态 → 就绪状态 执行状态 → 阻塞状态 阻塞状态 → 就绪状态 29 第二节 2.2.2 进程的状态及其转换 进程的描述 创建状态是指操作系统创建进程时,进程所处的状 态。进程新建成功后即转入就绪状态,在就绪进程队列中 排队。 操作系统创建进程需要为进程分配资源。因此,操作 系统将根据系统的性能和内存容量的情况决定是否创建新 进程达到了结束点或进程出现了严重的错误时, 的进程。如果系统性能较差或内存容量受到限制,不能为 会被操作系统终止或被其他有终止权的进程终止。 新进程分配资源,则操作系统会发出创建新进程失败的响 应或将创建新进程的工作推迟。 进入终止状态的进程不再被执行,等待操作 系统完成进程终止处理。当操作系统完成进程终止 处理后,操作系统会删除进程,收回进程所占用的 资源。 30 小结 执行状态 释放 终止 中断(时间片用完) 进程调度 创建 许可 就绪状态 所等待事件发生 (如I/O完成) 等待事件发生 (如等待I/O或请求I/O) 阻塞状态 执行态:此时正用CPU; 就绪态:可运行,但未分到CPU; 阻塞态:不能运行,等待某个外部事件发生。 在一定条件下,进程状态才发生转换 31 第二节 2.2.3 挂起操作和进程状态的转换 进程的描述 终端用户可以直接操作自己的程序。 挂起状态 当程序员需要调试、检查和修改自己的程 • 系统资源的需要 序时,可以要求挂起与程序相对应的进程, 某些定期执行的进程,如系统监控进 暂停进程的推进。 • 调节竞争或消除故障的需要父进程对自己的子进程实施控制、修 程、日志进程等,在执行时间未到而需要 当系统中所有的进程均处于阻塞状态 • 终端用户的需要 改和检查时,需要挂起自己的子进程,暂 等待时,可以将进程挂起,对换到外存, 时,没有就绪进程,处理器处于空闲。如 停子进程的推进。 • 父进程的需要 从而减轻内存负担。当执行时间到时,再 操作系统在检查进程运行中竞争资源 果这时内存空间已经被进程占满,不能装 将这些进程激活换入到内存。 的情况时,或在系统出现故障使某些功能 • 调节进程的需要 入更多的进程,需要将内存中处于阻塞状 受到破坏时,为了解决进程的资源竞争或 态的进程挂起,对换到外存上,让出内存 消除系统故障,操作系统需要挂起某些对 空间接纳新创建的进程。 资源竞争的进程或怀疑引起系统故障的进 程,将进程对换到外存。 32 第二节 2.2.3 挂起操作和进程状态的转换 进程的描述 “挂起”的实质是使进程不能继续执行,处于静止状态,而没被挂起的进程 称为活动状态。处于静止状态的进程,只有通过“激活”动作,才能转换 成活动状态。 挂起 内存 激活 磁盘 “挂起”常被用于进程对换中,挂起的进程从内存对换到外存,以便腾出更多 内存空间接纳新创建的进程。常将内存中处于阻塞状态的进程挂起。 进程只能由操作系统,父进程,进程自身挂起 33 度 CP O 求 I/ 放 调 时 间 片 完 起 U 挂 活动就绪 → 静止就绪 激活 活动阻塞 → 静止阻塞 静止就绪 → 活动就绪 挂起 释 静止阻塞 → 活动阻塞 放 激活 释 进程的描述 终止 请 第二节 2.2.3 挂起操作和进程状态的转换 挂起 图2-7 具有挂起状态的进程状态图 34 小结 进程可以在:新建,就绪,阻塞,运行状态被挂起。 进程只能由操作系统,父进程,进程自身挂起 挂起 进程状态转换 35 第二节 2.2.4 进程管理中的数据结构 进程的描述 OS中用于管理控制的数据结构 OS的内存 占用部分 内存表 进程 设备表 文件表 是进程的唯一实体,系统根据PCB块而感知进程的存在,即PCB块是进程存在 的唯一标识。 进程实体 (进程映象) 程序代码 数据 PCB块 36 第二节 2.2.4 进程管理中的数据结构 进程的描述 进程控制块中的信息 通用寄存器﹑指令寄存器 程序状态字﹑用户栈指针 进程状态﹑ 优先级﹑调度所需的其 它信息﹑阻塞原因 外部标识符 内部标识符 程序和数据地址﹑进程同步和进程 通信机制﹑资源清单﹑链接指针 创建时用户指定 OS唯一指定 37 第二节 2.2.4 进程管理中的数据结构 PCB的作用 进程的描述 进程的创建 异步性 状态的转变 进程管理 同步和通信 OS不同,PCB的长度不一(时空开销) OS的内存 占用部分 内存表 1)线性表 进程 2)链接方式 设备表 文件表 3)索引方式 38 第二节 2.2.4 进程管理中的数据结构 进程的描述 PCB的组织方式: PCB块号 指针 PCB 1 4 1)PCB线性队列示意图 PCB 2 3 PCB 3 5 PCB 4 8 PCB 5 6 PCB 6 7 PCB 7 9 PCB 8 2 PCB 9 X PCB块指针 39 第二节 2.2.4 进程管理中的数据结构 进程的描述 2)PCB链接队列示意图 执行指针 PCB1 PCB2 PCB3 就绪队列指针 PCB4 4 3 0 8 PCB5 阻塞队列指针 PCB6 PCB7 PCB8 空闲队列指针 PCB9 7 9 0 1 ... 40 第二节 2.2.4 进程管理中的数据结构 进程的描述 链接方式 优点 直观,体现了进程的本身特性,如等待时间的长短、优先级的高低、需要 处理时间的长短,为进程调度算法的实施提供了方便。 缺点 以链接方式组织进程控制块的主要缺点是如果进程状态发生变化,则链接 队列需要作相应的调整,进程控制块中的首部和尾部指针需要改变。 41 第二节 2.2.4 进程管理中的数据结构 进程的描述 执行指针 就绪队列 单CPU时 就绪索引表 PCB 1 PCB 2 PCB 3 PCB 4 3)按索引方式组织PCB ………. 阻塞队列 阻塞索引表 PCB 5 PCB 6 …… …… ………. PCB的查找和修改都在索引表中进行 PCBn 42 第二节 2.2.4 进程管理中的数据结构 进程的描述 索引方式 优点 • 通过索引表可以快速得到进程控制块地址,不需要像链接方式一样,从链首到 链尾查找; • 如果进程状态变化,不需要修改进程控制块的链接指针,只需要增加或删除索 引表中的记录。 缺点 • 索引表本身需占用内存空间; • 搜索索引表需要时间。 43 第二节 2.2.4 进程管理中的数据结构 进程的描述 内存映像 是进程在内存中的组成 包括如下内容: • 进程程序块 • 进程数据块 • 系统或用户堆栈 • 进程控制块 进程程序块为执行的程序代码, 规定了进程一次运行需要完成的功能。 进程运行时的全局变量、局部变 量和常量等的存储区以及开辟的工作 区。 每个进程捆绑的系统/用户堆栈, 用来解决过程调用或系统调用时的信 息存储和参数传递。 进程的标志信息、处理机状态信 息、进程调度信息、进程控制信息。 44 第二节 2.2.4 进程管理中的数据结构 进程的描述 进程上下文 进程的物理实体和支持进程运行的环境合称为进程上下文( process context)。 • 用户级上下文(user-level context) • 系统级上下文(system-level context) • 寄存器上下文(register context)。 由进程的正文区、数据区、用户 由进程控制块、内存管理信息、 栈区和共享存储区组成,在编译目标 进程环境块和系统堆栈等组成的进程 文件时生成,占据进程的虚拟地址空 由程序状态寄存器、各类控制寄 地址空间。 间。 存器、地址寄存器、通用寄存器和用 户栈指针等组成。 45 第三节 小结 进程控制 是进程的唯一实体,系统根据PCB块而感知进程的存在,即PCB块是进程存在的唯一 标识。 进程实体 (进程映象) 程序代码 数据 PCB块 46 第三节 2.3 进程控制 进程控制 n进程管理最基本的功能 n一般由OS内核中的原语实现 n包括: 00 00 进程创建 进程终止 00 进程阻塞与唤醒 00 进程挂起与激活 47 第三节 2.3.1 进程的创建 进程控制 n 进程具有层次结构 A n 创建新进程是通过创建原语完成的,被创建 B C 的进程称作子进程,而创建子进程的进程则称 作父进程。子进程又可以创建自己的子进程, 从而形成一棵有向的进程树,即进程图 • 关系 D I E J F K G L H M • 子进程可以继承父进程的所有资源 • 子进程撤销时,向父进程归还资源 • 父进程撤销时,所有子进程也被撤销 48 第三节 2.3.1 进程的创建 进程控制 n 进程创建过程: ① 申请空白PCB; ② 分配所需资源; ③ 初始化PCB; ④ 插入就绪队列。 49 第三节 2.3.1 进程的创建 进程控制 正在运行的进程由于程序自身需要 当操作系统启动时,通常会创建若 可以用系统调用创建新进程。一个 引起进程创建的事件 干进程,特别是一些常驻系统的进 正在运行的进程,如果需要处理与 程。这些进程有的运行在系统的前 其相关却又相互独立的事件,可以 • 操作系统初始化 台,供用户交互;有的运行在后台 用系统调用来创建一个新的进程来 当运行中的程序需要某种服务时, ,完成某些专门的功能。如网络服 • 提供用户服务(输入/输出) 系统专门创建一个进程来提供所需 完成这样的事件。如UNIX操作系统 务器中的电子邮件服务进程,如果 中父进程用系统调用创建子进程, 要的服务,如打印文件、屏幕输出 没有邮件需要处理,则进入休眠状 • 用户登录(分时系统) 子进程协同父进程完成同一任务。 等。 态;如果邮件到来,则该进程被唤 当用户在终端键入登录命令后,系 • 用户请求系统创建新进程 醒,处理接收到的邮件。 在交互式系统中,用户用键盘键入 统将为该终端用户建立一个进程。 命令或用鼠标点击,则可以创建新 • 执行创建新进程的系统调用 进程。如在Windows操作系统中,用 户可以用键盘运行多个程序,或用 用户提交批处理作业,当操作系统 • 批处理作业的初始化和调度 鼠标打开多个窗口。每个程序或每 能够提供资源时,作业调度程序按 个窗口对应一个新的进程。 照一定的算法,从批处理作业清单 中调度某个作业并装入内存,为作 业分配必要的资源,创建作业的进 程。 50 第三节 2.3.1 进程的创建 进程控制 创建步骤 进程创建原语的主要任务是创建进程控制块PCB。 命名进程:为进程设置进程标志符; 从PCB集合中为新进程申请一个空白PCB; 确定进程的优先级; 为进程的程序段、数据段和用户栈分配内存空间;如果进程 中需要共享某个已在内存的程序段,则必须建立共享程序段 的链接指针; 为进程分配除内存外的其他各种资源; 初始化PCB,将进程的初始化信息写入PCB; 如果就绪队列能够接纳新创建的进程,则将新进程插入到就绪 队列; 通知OS的其他管理模块,如记账程序、性能监控程序等。 51 第三节 2.3.1 进程的创建 进程控制 fork( ) 代码区 Linux中进程的创建 的返回码 fork( ) 代码区 if (fork()= = 0) {printf(“hello”);} else {printf(“ok”) ;} 52 第三节 2.3.2 进程的终止 进程控制 终止原因 • 进程正常结束: 批处理作业中的“halt”,多用户系统中的“log off”,用户程序中的“end”等。 第一步:根据被终止进程的标识符,从PCB集合中查 • 操作异常(进程自身): 越界﹑保护错﹑特权指令错﹑非法指令错﹑ 第二步:若被终止进程正处于执行状态,则终止该 找对应进程控制块并读出该进程的状态; 运行超时﹑等待超时﹑算术运算错﹑I/O故障. 第三步:若进程还有子孙进程,应将其所有子孙进 进程的执行,并设置调度标志为真,用于指示该进 • 外界干预:操作员(提前结束)或操作系统(竞争资源死锁)﹑父进程 第四步:将进程所占有的全部资源释放(还给父进 程终止,以防它们成为不可控制的。 程被终止后应重新进行调度,选择一新进程,把处 请求﹑父进程终止 程或系统),释放进程控制块(若该进成为执行态, 第五步:将被终止进程(它的PCB)从所在队列(或 理机分配给它。 链表)中移出,等待其他程序来收集相关信息。 要进行进程调度)。 53 第三节 2.3.3 进程的阻塞与唤醒 进程控制 引起进程阻塞和唤醒的事件 1)向系统请求资源失败: 请求打印机(间接制约) 2)等待某种操作的完成: 等待I/O的完成 3)新数据尚未到来:合作进程之间(直接制约) 4)等待新任务的到达: 服务进程 进程阻塞过程(自身阻塞) 停止该进程的执行 改PCB中状态 插入阻塞队列 重新调度新进程 保留处理机状态 54 第三节 2.3.3 进程的阻塞与唤醒 进程控制 进程阻塞是进程的一种自主行为,是进程为了等待某事件的发生, 而自己调用阻塞原语使得自己放弃处理器,进入阻塞队列中等待 进程唤醒过程 (合作进程/系统进程唤醒) 运行 阻塞 就绪 唤醒 阻塞 从阻塞队列中移出 阻塞 改PCB的状态为就绪 唤醒 插入就绪队列 主体 客体 阻塞 A A 自我行为 唤醒 B 非B 被动行为 55 第三节 2.3.4 进程的挂起与激活 进程控制 处于阻塞状态、就绪状态和运行状态的进程都可以被挂起,根据进程挂起前的 状态决定挂起后的状态。 如果进程被挂起,进程的进程控制块中的信息要修改,进程上下文被放到外存。 如果进程挂起的时间到或者内存资源充足时,系统或有关进程,特别是进程同 步中的原语操作,会激活被挂起的进程。 激活进程的主要工作是将进程上下文从外存调入内存,修改进程控制块信息并 调入内存,修改进程控制块中的进程状态,并按照进程状态将进程控制块排入到相 应的进程队列。 56 第三节 2.3.4 进程的挂起与激活 进程控制 挂起 内存 挂起进程 激活 修改PCB块中的信息 进程调入外存 激活进程 磁盘 进程放入相应的状态队列中 将调出的进程从外存调入内存 修改PCB块中的进程状态 并按照进程状态将进程控制块排入到相应的进程队列 进程只能由操作系统,父进程,进程自身挂起 57 第三节 2.3.4 进程的挂起与激活 进程控制 1)三对进程控制原语 阻塞Block 创建Creation 结束Termination 唤醒Wakeup 挂起Suspend 激活Active 2)PCB块使用频繁,放入内存的专用区 3)每个系统的PCB块结构都不相同,进程的状态也都不一样。 58 小结 进程可以在:新建,就绪,阻塞,运行状态被挂起。 进程只能由操作系统,父进程,进程自身挂起 挂起 进程状态转换 59 2.4 进程通信概念 进程通信是指进程之间的信息交换 低级进程通信 :进程的同步和互斥 Ø 效率低 Ø 通信对用户不透明 高级进程通信 Ø 使用方便 Ø 高效地传送大量数据 60 2.4.1 进程通信的类型(1) 共享存储器系统 Ø 基于共享数据结构的通信方式(效率低) Ø 基于共享存储区的通信方式(高级) 管道通信 Ø 管道:用于连接一个读进程和一个写进程以 实现它们之间通信的一个共享文件,又名 pipe文件。 Ø 管道机制的协调能力:互斥、同步、对方是 否存在 61 2.4.1 进程通信的类型(2) 消息传递系统 Ø 直接通信方式 Ø 间接通信方式(通过邮箱) 客户机-服务器系统 Ø 套接字(Socket) Ø 远程过程调用(RPC)和远程方法调用 (RMI,Java) 62 2.4.2 消息传递通信的实现方式 直接通信方式 Ø Ø 发送原语:send(P, message) 发送 通信链路的属性 拼命搞信息到进程P Ø 自动建立链路 接收原语:receive(Q, message) 从 Ø 一条链路恰好对应一堆通信进程 Ø 每对进程之间只有一个链路存在 Ø 链路可以是单向的,通常都是双向 进程Q接收消息 63 2.4.2 消息传递通信的实现方式 send(mailbox, message) receiver(mailbox,message) 间接通信方式:通过信箱来完成 Ø 定向接收消息 Ø 每个消息队列都有一个唯一的ID p 只有他们共享了一个消息队列进程才能 通信链路属性 Ø 建立链路 通信 Ø p 只有进程共享一个共享的消息队列才 信箱类型 Ø 链接可以与许多进程相关联 私用邮箱,公共邮箱,共享邮箱 Ø 每对进程可以共享多个通信链路 Ø 连接可以单向或双向 64 2.4.3 Linux进程通信方式 管道 信号 消息队列 共享内存 信号量 套接字 65 2.4.3 无名管道实例 #define INPUT 0 #define OUTPUT 1 close(file_descriptors[INPUT]); void main() { write(file_descriptors[OUTPUT], "test data", int file_descriptors[2]; pid_t pid; char buf[256]; exit(0); } int returned_count; pipe(file_descriptors); if((pid = fork()) == -1) { printf("Error in fork/n"); exit(1); else { printf("in the spawning (parent) process.../n"); close(file_descriptors[OUTPUT]); returned_count = read(file_descriptors[INPUT], } if(pid == 0) { strlen("test data")); printf("in the spawned (child) process.../n"); buf, sizeof(buf)); printf("%d bytes of data received from spawned process: %s/n",returned_count, buf); } } 66 2.4.3 有名管道实例 #include

计算机科学与技术专业段雪丽—操作系统.pdf




