3.2 进程的描述 进程的特征 1 .动态性 动态性是进程最基本的特征。 动态性是进程最基本的特征。 2. 并发性 这是指多个进程实体,同存于内存中,能在一段时 间内同时运行。并发性是进程的重要特征,同时也成 为 OS 的重要特征。引入进程的目的也是为了使该进 程的程序能和其它进程的程序并发执行。 这是指多个进程实体,同存于内存中,能在一段时 间内同时运行。并发性是进程的重要特征,同时也成 为 OS 的重要特征。引入进程的目的也是为了使该进 程的程序能和其它进程的程序并发执行。
3. 独立性 进程实体是一个能独立运行的基本单位,同时也 是系统中独立获得资源和独立调度的基本单位。 没有建立进程的程序,不能作为一个独立的单位 参加运行。 进程实体是一个能独立运行的基本单位,同时也 是系统中独立获得资源和独立调度的基本单位。 没有建立进程的程序,不能作为一个独立的单位 参加运行。 4. 异步性 进程按各自独立的、不可与之的速度向前推进 进程按各自独立的、不可与之的速度向前推进 5. 结构特性 5. 结构特性 从结构上看,进程是由程序段、数据段及进程控 制块三部分组成。 从结构上看,进程是由程序段、数据段及进程控 制块三部分组成。
3.2.2 进程的基本状态 一、进程的三种基本状态 1 .就绪状态( Ready ) 当进程已经分配到除 CPU 以外的所有必要的资源 后,只要能再获得处理机,就可以立即执行。这 时的进程的状态称为就绪状态。 当进程已经分配到除 CPU 以外的所有必要的资源 后,只要能再获得处理机,就可以立即执行。这 时的进程的状态称为就绪状态。 2 .执行状态( Running )(运行状态) 指进程已获得处理机,其程序正在执行。在 单处理机系统中,只能有一个进程处于执行状态。 (在多处理机中,可能有多个进程处于执行状态) 指进程已获得处理机,其程序正在执行。在 单处理机系统中,只能有一个进程处于执行状态。 (在多处理机中,可能有多个进程处于执行状态)
3 .阻塞状态( Block )(等待状态) 进程因为发生某个事件而暂停执行时的状态(如: 请求 I/O 、申请缓冲空间等),也就是说,进程受 到阻塞,所以称这种暂停状态为阻塞状态,有时 也称 “ 等待 ” 状态或 “ 睡眠 ” 状态。 2 进程状态间的变迁 ①就绪 → 执行:调度 ②执行 → 等待:等待某个事件发生而睡眠 ③等待 → 就绪:因等待的时间发生而唤醒 ④执行 → 就绪:时间片用完
二、新状态和终止状态 1. 新状态 1. 新状态 是一个进程刚刚建立,但还没有将它送入就绪队列时 的状态 是一个进程刚刚建立,但还没有将它送入就绪队列时 的状态 2. 终止状态 2. 终止状态 当一个进程已经正常结束或异常结束, OS 已经将它从 就绪队列中移出,但还没有将它撤消时的状态。 当一个进程已经正常结束或异常结束, OS 已经将它从 就绪队列中移出,但还没有将它撤消时的状态。 建立进程 第一步为新登陆的用户程序创建进程,并为他分 建立进程 第一步为新登陆的用户程序创建进程,并为他分 配资源,此时进程处于新状态 配资源,此时进程处于新状态 第二步把新创建的进程送入就绪队列,一旦进程进入 第二步把新创建的进程送入就绪队列,一旦进程进入 就绪队列,它便由新状态转变为就绪状态。 就绪队列,它便由新状态转变为就绪状态。 撤销进程 第一步 第二步 第二步
二、程状态的转换 对于一个进程来说 “ 新状态 ” 和 “ 终止状态 ” 只有 一次。 对于一个进程来说 “ 新状态 ” 和 “ 终止状态 ” 只有 一次。 1 .新状态 就绪状态 当就绪队列能够接纳新的进程时, OS 便把处于 新状态的进程移入就绪队列,此时进程由新状态转变 为就绪状态。 当就绪队列能够接纳新的进程时, OS 便把处于 新状态的进程移入就绪队列,此时进程由新状态转变 为就绪状态。 2 .就绪状态 执行状态 处于就绪状态的进程,当进程调度程序为它分配了 处理机后,该进程便由就绪状态变为执行状态,正在 执行的进程也称为当前进程。 处于就绪状态的进程,当进程调度程序为它分配了 处理机后,该进程便由就绪状态变为执行状态,正在 执行的进程也称为当前进程。
3. 执行状态 阻塞状态 正在执行的进程因发生某件事件而无法执行。例如: 进程请求访问临界资源,而该资源正被其它进程访问, 则请求该资源的进程将由执行状态转变为阻塞状态。 正在执行的进程因发生某件事件而无法执行。例如: 进程请求访问临界资源,而该资源正被其它进程访问, 则请求该资源的进程将由执行状态转变为阻塞状态。 4 .执行状态 就绪状态 正在执行的进程,如果事件发生或中断而被暂停执行, 该进程便由执行状态转变为就绪状态。(分时系统中, 时间片用完;抢占调度方式中,优先权高抢占处理机) 正在执行的进程,如果事件发生或中断而被暂停执行, 该进程便由执行状态转变为就绪状态。(分时系统中, 时间片用完;抢占调度方式中,优先权高抢占处理机) 5 .执行状态 终止状态 当一个进程经完成或发生某事件,如程序中出现地址越 界、非法指令等错误,而被异常结束时,进程将由执行 状态转变为终止状态。 当一个进程经完成或发生某事件,如程序中出现地址越 界、非法指令等错误,而被异常结束时,进程将由执行 状态转变为终止状态。
就绪 新进程 结束 执行 阻塞 接纳 事件发生 进程调度 等待某事件 完成 中断
3.2.3 进程的挂起状态 一、挂起状态的引入 1 终端用户的需要 1 终端用户的需要 当终端用户在自己的程序运行期间,发现 有可疑问题时,往往希望暂时使自己的进程 静止下来。也就是说,如果进程处于执行状 态,则暂停执行;如果进程处于就绪状态, 则暂时不接受调度,以便研究其执行情况或 对程序进行修改。我们把这种静止状态称为 挂起状态。 当终端用户在自己的程序运行期间,发现 有可疑问题时,往往希望暂时使自己的进程 静止下来。也就是说,如果进程处于执行状 态,则暂停执行;如果进程处于就绪状态, 则暂时不接受调度,以便研究其执行情况或 对程序进行修改。我们把这种静止状态称为 挂起状态。
2. 父进程的需求 父进程常常希望考察和修改子进程,或者当要协调 各子进程间的活动时,要挂起自己的子进程。 父进程常常希望考察和修改子进程,或者当要协调 各子进程间的活动时,要挂起自己的子进程。 3. 操作系统的需要 操作系统有时需要挂起某些进程,检查运行中资 源的使用情况及进行记帐,以便改善系统的运行性能。 操作系统有时需要挂起某些进程,检查运行中资 源的使用情况及进行记帐,以便改善系统的运行性能。 4. 对换的需要 为了缓和内存紧张的情况,将内存中处于阻塞状态 的进程换至外存上。 为了缓和内存紧张的情况,将内存中处于阻塞状态 的进程换至外存上。 5. 负荷调节的需要 当实时系统中的工作负荷较重,可能影响到对实时 任务的控制时,可由系统把一些不重要或不紧迫的进 程挂起,以保证系统仍然能正常运行。 当实时系统中的工作负荷较重,可能影响到对实时 任务的控制时,可由系统把一些不重要或不紧迫的进 程挂起,以保证系统仍然能正常运行。
二、进程状态的转换 在引入挂起状态后,又将增加从挂起状态(又称静止状态)到 非挂起状态(又称活动状态)的转换。或者相反,可以有以下几 种情况: 在引入挂起状态后,又将增加从挂起状态(又称静止状态)到 非挂起状态(又称活动状态)的转换。或者相反,可以有以下几 种情况: 1 .活动就绪 静止就绪 当进程处于未被挂起的就绪状态时,称此为活动就绪状 态,表示为 Readya 。当用挂起原语 Suspend 将该进程挂 起后,该进程便转变为静止就绪状态。表示为 Readys (处在 Readys 状态的进程,不再被调度执行) 当进程处于未被挂起的就绪状态时,称此为活动就绪状 态,表示为 Readya 。当用挂起原语 Suspend 将该进程挂 起后,该进程便转变为静止就绪状态。表示为 Readys (处在 Readys 状态的进程,不再被调度执行)
2 .活动阻塞 静止阻塞 当进程处于未被挂起的阻塞状态时,称为它处在活 动阻塞状态(表示为 Blockeda )。当 Suspend 原语将 它挂起后,进程便转变为静止阻塞状态(表示为 Blockeds )。处于该状态的进程,在其所期待的事件 出现以后,他将从静止阻塞变为静止就绪。 当进程处于未被挂起的阻塞状态时,称为它处在活 动阻塞状态(表示为 Blockeda )。当 Suspend 原语将 它挂起后,进程便转变为静止阻塞状态(表示为 Blockeds )。处于该状态的进程,在其所期待的事件 出现以后,他将从静止阻塞变为静止就绪。 3 .静止就绪 活动就绪 处于 Readys 状态的进程,若用激活原语 Active 激活后, 该进程将转变为 Readya 状态。 处于 Readys 状态的进程,若用激活原语 Active 激活后, 该进程将转变为 Readya 状态。 4 .静止阻塞 活动阻塞 处于 Blockeds 状态的进程,若用激活原语 Active 激活 后,进程将转变为 Blockeda 状态。 处于 Blockeds 状态的进程,若用激活原语 Active 激活 后,进程将转变为 Blockeda 状态。
挂起 执行 活动就绪 活动阻塞 静止就绪 静止阻塞 请求 I/O 激活 释放 挂起 释放 激活 挂起 具有挂起状态的进程状态图
3.3.1 进程控制块 进程的静态描述:由三部分组成 PCB 、有关程序段和该程序段对其进行操作的数 据结构集。 PCB 、有关程序段和该程序段对其进行操作的数 据结构集。各部分的作用: 1 进程控制块:用于描述进程情况及控制进程运行所 需的全部信息。 2 程序段:是进程中能被进程调度程序在 CPU 上执行的 程序代码段。 3 数据段:一个进程的数据段,可以是进程对应的程 序加工处理的原始数据,也可以是程序执行后产生 的中间或最终数据。
3.3.2 进程控制块中的信息 进程控制块中主要包括四个方面用于描述和控制进程运行的 信息。 进程控制块中主要包括四个方面用于描述和控制进程运行的 信息。 1 1. 进程标识符信息 进程标识符用于唯一的标识一个进程。一个进程通常有以下 两种标识符。 进程标识符用于唯一的标识一个进程。一个进程通常有以下 两种标识符。 外部标识符。由创建者提供,通常是由字母、数字组成, 往往是用户(进程)访问该进程使用。外部标识符便于记忆, 如:计算进程、打印进程、发送进程、接收进程等。 外部标识符。由创建者提供,通常是由字母、数字组成, 往往是用户(进程)访问该进程使用。外部标识符便于记忆, 如:计算进程、打印进程、发送进程、接收进程等。 内部标识符:为了方便系统使用而设置的。在所有的 OS 中,都为每一个进程赋予一个唯一的整数,作为内部标识 符。它通常就是一个进程的符号,为了描述进程的家族关系, 还应该设置父进程标识符以及子进程标识符。还可以设置用 户标识符,来指示该进程由哪个用户拥有。 内部标识符:为了方便系统使用而设置的。在所有的 OS 中,都为每一个进程赋予一个唯一的整数,作为内部标识 符。它通常就是一个进程的符号,为了描述进程的家族关系, 还应该设置父进程标识符以及子进程标识符。还可以设置用 户标识符,来指示该进程由哪个用户拥有。
1 2 、处理机状态信息 处理机状态信息主要是由处理机各种寄存器中的内 容所组成。 处理机状态信息主要是由处理机各种寄存器中的内 容所组成。 通用寄存器。又称为用户可视寄存器,可被用户程 通用寄存器。又称为用户可视寄存器,可被用户程 序访问,用于暂存信息。 序访问,用于暂存信息。 指令寄存器。存放要访问的下一条指令的地址。 指令寄存器。存放要访问的下一条指令的地址。 程序状态字 PSW 。其中含有状态信息。(条件码、 程序状态字 PSW 。其中含有状态信息。(条件码、 执行方式、中断屏蔽标志等) 执行方式、中断屏蔽标志等) 用户栈指针。每个用户进程有一个或若干个与之相关 用户栈指针。每个用户进程有一个或若干个与之相关 的系统栈,用于存放过程和系统调用参 的系统栈,用于存放过程和系统调用参 数及调用地址。栈指针指向该栈的栈顶。 数及调用地址。栈指针指向该栈的栈顶。
3. 进程调度信息 在 PCB 中还存放了一些与进程调度和进程兑换有关 的信息。 ( 1 )进程状态。指明进程当前的状态,作为进程 调度和对换时的依据。 ( 1 )进程状态。指明进程当前的状态,作为进程 调度和对换时的依据。 ( 2 )进程优先级。用于描述进程使用处理机的优 先级别的一个整数,优先级高的进程优先获得处 理机。 ( 2 )进程优先级。用于描述进程使用处理机的优 先级别的一个整数,优先级高的进程优先获得处 理机。 ( 3 )进程调度所需要的其他信息。(进程已等待 CPU 的时间总和、进程已执行的时间总和) ( 3 )进程调度所需要的其他信息。(进程已等待 CPU 的时间总和、进程已执行的时间总和) ( 4 )事件。这是进程由执行状态转变为阻塞状态 所等待发生的事件。(阻塞原因) ( 4 )事件。这是进程由执行状态转变为阻塞状态 所等待发生的事件。(阻塞原因)
3.2.3 PCB 的组织方式 常用的组织方式有两种:链接方式、索引方式。 1 、 链接方式: 具有相同状态的 PCB ,用其中的链接字,链接成一 个队列。这样就可以形成就绪队列、若干个阻塞 队列和空白队列等。对其中的就绪队列常按照进 程优先权的大小排列,把优先权告的进程的 PCB 排在队列前面。
执行指针 就绪队列指针 阻塞队列指针 空闲队列指针 PCB1 PCB2 PCB3 PCB4 PCB5 PCB6 PCB7 PCB8 PCB ……
1 、索引方式: 1 、索引方式: 系统根据所有进程的状态,建立几张索引 表。例如:就绪索引表、阻塞索引表的国 内。并把各索引表在内存的首地址记录在 内存中的一些专用单元中。每个索引表的 表目中,记录具有相同状态的某个 PCB 在 PCB 表中的地址。 系统根据所有进程的状态,建立几张索引 表。例如:就绪索引表、阻塞索引表的国 内。并把各索引表在内存的首地址记录在 内存中的一些专用单元中。每个索引表的 表目中,记录具有相同状态的某个 PCB 在 PCB 表中的地址。
执行指针 就绪表指针 阻塞表指针 就绪索引表 阻塞索引表 PCB3 PCB4 PCB5 PCB7 PCB6 PCB2 PCB1 按索引方式组织 PCB
3.3.4 进程上下文 进程上下文: 是进程执行活动全过程的静态描述。包括 计算机系统中与执行该进程有关的各种寄 存器的值、程序段在经过编译之后形成的 机器指令代码集、数据集及各种堆栈值和 PCB 结构。可按一定的执行层次组合,如用 户级上下文、系统级上下文等。 是进程执行活动全过程的静态描述。包括 计算机系统中与执行该进程有关的各种寄 存器的值、程序段在经过编译之后形成的 机器指令代码集、数据集及各种堆栈值和 PCB 结构。可按一定的执行层次组合,如用 户级上下文、系统级上下文等。
3 . 3 . 5 进程空间 任何一个进程,都有自己的地址空间,把该空间称为进程空 间或虚空间。 进程空间的大小只与处理机的位数有关。程序的执行都在进 程空间内进行。用户程序、进程的各种控制表格都按一定 的结构排列在进程空间里。 在 Unix 和 Linux 系统中,进程空间还被划分为用户空间和系统 空间两大部分 在进程空间被划分为两大部分后,用户程序在用户空间内执 行,操作系统内核程序在进程的系统空间内执行。 为了防止用户程序访问系统空间,造成访问出错,计算机系 统还通过程序状态寄存器设置不同的执行模式,用户模式 和系统模式来进行保护,即用户态和系统态。
练习 练习 1. 为使进程由活动就绪转变为静止就绪,应利用 __ ⑴ __ 原语; 为使进程由执行状态变为阻塞状态,应利用 __ ⑵ __ 原语; 为使进程由静止就绪变为活动就绪,应利用 __ ⑶ __ 原语; 从阻塞状态变为就绪状态应利用 __ ⑷ __ 原语。 ⑴ - ⑷: A. create B.suspend C.active D. block E.wakeup ⑴ - ⑷: A. create B.suspend C.active D. block E.wakeup 2. 正在执行的进程由于时间片用完而被暂停执行,此时进 程应从执行状态变为 __ ⑴ __ 状态;处于静止阻塞状态的进 程,在进程等待事件出现后,应转变为 __ ⑵ __ 状态;若进 程正处于执行状态时,应终端的请求而暂停下来以便研究 其运行情况,这时进程应转变为 __ ⑶ __ 状态,若进程已处 于阻塞状态,则此时应转变为 __ ⑷ __ 状态。 2. 正在执行的进程由于时间片用完而被暂停执行,此时进 程应从执行状态变为 __ ⑴ __ 状态;处于静止阻塞状态的进 程,在进程等待事件出现后,应转变为 __ ⑵ __ 状态;若进 程正处于执行状态时,应终端的请求而暂停下来以便研究 其运行情况,这时进程应转变为 __ ⑶ __ 状态,若进程已处 于阻塞状态,则此时应转变为 __ ⑷ __ 状态。 ⑴ - ⑷: A. 静止阻塞 B. 活动阻塞 C. 静止就绪 D. 活动就绪 E. 执行 ⑴ - ⑷: A. 静止阻塞 B. 活动阻塞 C. 静止就绪 D. 活动就绪 E. 执行
⑴ - ⑷: A. create B.suspend C.active D. block E.wakeup ⑴ - ⑷: A. create B.suspend C.active D. block E.wakeup ⑴ B ⑵ D ⑶ C ⑷ E ⑴ B ⑵ D ⑶ C ⑷ E ⑴ D ⑵ C ⑶ C ⑷ A ⑴ D ⑵ C ⑶ C ⑷ A