第六章进程结构 1、进程的状态和状态的转换 进程的基本状态可分为: 运行态 就绪态 睡眠态 进一步细分,又可分为九种状态: ①、进程在用户态下执行: ② 、 进程在核心态下执行; ③、进程已经准备好运行,在内存中就绪: ④、进程等待资源,在内存中睡眠; ⑤、进程处于就绪状态,因内存不足,被放在交换区上等待: 1
第六章 进程结构 1、进程的状态和状态的转换 进程的基本状态可分为: 运行态 就绪态 睡眠态 进一步细分,又可分为九种状态: ①、进程在用户态下执行; ②、进程在核心态下执行; ③、进程已经准备好运行,在内存中就绪; ④、进程等待资源,在内存中睡眠; ⑤、进程处于就绪状态,因内存不足,被放在交换区上等待; 1
⑥、 进程睡眠等待资源,因内存不足,被换到交换区上等待; ⑦、进程正从核心态返回用户态,但核心抢先于它做了上下 文切换,以调度另外一个进程; ⑧、进程处于刚被创建的状态,此时进程既没有处于就绪状 态,也没有进入睡眠状态: ⑨、 进程执行了系统调用exit,处于僵死状态。此时进程刚 消亡,并向父进程发送退出状态信息和计时统计信息。 进程在其生命周期中必然处在这九种状态之一,并且根 据运行时间和条件的变化,在这九种状态之间进行转换,这种 有方向规定的状态转换路径,就构成了进程的状态转换图 有向图。 2
⑥、进程睡眠等待资源,因内存不足,被换到交换区上等待; ⑦、进程正从核心态返回用户态,但核心抢先于它做了上下 文切换,以调度另外一个进程; ⑧、进程处于刚被创建的状态,此时进程既没有处于就绪状 态,也没有进入睡眠状态; ⑨、进程执行了系统调用exit,处于僵死状态。此时进程刚 消亡,并向父进程发送退出状态信息和计时统计信息。 进程在其生命周期中必然处在这九种状态之一,并且根 据运行时间和条件的变化,在这九种状态之间进行转换,这种 有方向规定的状态转换路径,就构成了进程的状态转换图—— 有向图。 2
用户态运行 中断,中断返回 系统调用,中断 1 返回用户态 返回 9 退出 2 抢先 7 僵死 核心态运行 重新调度进程 被抢先 睡眠 在内存中就绪 4 3 唤醒 在内存 创建 中睡眠 内存充足 8 fork 换出 换出 换入 内存不足 6 唤醒 5 在外存中睡眠 在外存中就绪 3
3 2 7 1 4 3 6 5 9 8 僵死 被抢先 创建 fork 在内存中就绪 在外存中睡眠 在外存中就绪 在内存 中睡眠 核心态运行 用户态运行 唤醒 唤醒 换出 换出 换入 退出 抢先 中断,中断返回
有关进程抢先: 任何进程都不能抢先另一个在核心中运行的进程 (1)、对于一个在核心态下运行的进程,如果没有因等待 资源而睡眠,或者被中断,或者执行完毕准备退出,则它永 远占用处理机而不会发生上下文切换(调度其他进程)。 为什么? 4
有关进程抢先: ——任何进程都不能抢先另一个在核心中运行的进程 (1)、对于一个在核心态下运行的进程,如果没有因等待 资源而睡眠,或者被中断,或者执行完毕准备退出,则它永 远占用处理机而不会发生上下文切换(调度其他进程)。 为什么? 4
有关进程抢先: 任何进程都不能抢先另一个在核心中运行的进程 (2)、对于一个在用户态下运行的进程,也不会直接发生 抢先。 如果该用户态下的进程运行时间较长,则在时钟中断 处理程序(核心态)运行完毕、准备返回到用户态时发生抢 先。 5
有关进程抢先: ——任何进程都不能抢先另一个在核心中运行的进程 (2)、对于一个在用户态下运行的进程,也不会直接发生 抢先。 如果该用户态下的进程运行时间较长,则在时钟中断 处理程序(核心态)运行完毕、准备返回到用户态时发生抢 先。 5
进程状态3与状态7的区别: 状态3一在内存中就绪 通常(除创建状态外)进程是因执行系统调用(申请资源 )进入睡眠后,又被唤醒后进入就绪状态.因此进程被重新调 度后就进入状态2(核心态下)继续运行。 状态7一被抢先 正在运行的进程从核心态正要返回到用户态时,因运行时 间足够长了,发生进程切换,从而进入就绪状态。当重新被调 度后,进入用户态继续执行。 直接效果一 一个是进入核心态运行;一个是进入用户态运行 6
进程状态3与状态7的区别: 状态7 —— 被抢先 正在运行的进程从核心态正要返回到用户态时,因运行时 间足够长了,发生进程切换,从而进入就绪状态。当重新被调 度后,进入用户态继续执行。 状态3 —— 在内存中就绪 通常(除创建状态外)进程是因执行系统调用(申请资源 )进入睡眠后,又被唤醒后进入就绪状态. 因此进程被重新调 度后就进入状态2(核心态下)继续运行。 直接效果 —— 一个是进入核心态运行;一个是进入用户态运行 6
2、进程的特征: ①、每个进程在核心进程表(proc数组)都占有一项,在其 中记录了进程的状态信息; ②、每个进程都有一个“每进程数据区(per process data area一ppda)”,保留相应进程更多的信息和核心栈; ③、处理机的全部工作就是在某个时候执行某个进程; ④、一个进程可生成或消灭另一进程; ⑤、一个进程中可申请并占有资源; ⑥、一个进程只能沿着一个特定的指令序列运行,不会跳转 到另一个进程的指令序列中去,也不能访问别的进程的数据 和堆栈。(抗病毒传播的重要原因之一) 7
2、进程的特征: ①、每个进程在核心进程表(proc数组)都占有一项,在其 中记录了进程的状态信息; ②、每个进程都有一个“每进程数据区(per process data area —— ppda)”,保留相应进程更多的信息和核心栈; ③、处理机的全部工作就是在某个时候执行某个进程; ④、一个进程可生成或消灭另一进程; ⑤、一个进程中可申请并占有资源; ⑥、一个进程只能沿着一个特定的指令序列运行,不会跳转 到另一个进程的指令序列中去,也不能访问别的进程的数据 和堆栈。(抗病毒传播的重要原因之一) 7
3、进程的解释 在UNIX系统中进程的概念包含什么意义? 在较高级的方面 进程是一个重要的组织概念。可以把计算机系统看作是若 干进程组合的活动。进程是系统中活动的实体,它可以生成和 消灭,申请和释放资源,可以相互合作和竞争,而真正活动的 部件如处理机和外部设备则是看不见的。 在较低级方面 进程是不活动的实体,而处理机则是活动的,处理机的任 务就是对进程进行操作,处理机在各个进程映像之间转换。 8
3、进程的解释 在UNIX系统中进程的概念包含什么意义? 在较高级的方面 进程是一个重要的组织概念。可以把计算机系统看作是若 干进程组合的活动。进程是系统中活动的实体,它可以生成和 消灭,申请和释放资源,可以相互合作和竞争,而真正活动的 部件如处理机和外部设备则是看不见的。 在较低级方面 进程是不活动的实体,而处理机则是活动的,处理机的任 务就是对进程进行操作,处理机在各个进程映像之间转换。 8
4、进程映像 进程映像虽然包括很多方面,但关键问题是存储器映像。 当一个进程暂时退出处理机时,它的处理机映像(也就是各个 寄存器的值)就成为存贮器映像中的一部分。当该进程再次被 调度使用处理机时,又从存储器映像中恢复处理机映像。 般说来,进程的结构,即进程映像是指其存储器映像, 由下列几部分组成: ① 进程控制块(PCB) ② 进程执行的程序,即共享正文段(TEXT) ③ 进程执行时所需要使用的数据,即数据段(DATA) ④ 进程执行时使用的工作区,即栈段 9
4、进程映像 进程映像虽然包括很多方面,但关键问题是存储器映像。 当一个进程暂时退出处理机时,它的处理机映像(也就是各个 寄存器的值)就成为存贮器映像中的一部分。当该进程再次被 调度使用处理机时,又从存储器映像中恢复处理机映像。 一般说来,进程的结构,即进程映像是指其存储器映像, 由下列几部分组成: ① 进程控制块(PCB) ② 进程执行的程序,即共享正文段(TEXT) ③ 进程执行时所需要使用的数据,即数据段(DATA) ④ 进程执行时使用的工作区,即栈段 9
1)、进程控制块PCB PCB包括两部分信息: 一部分是不论进程当前是否在处理机上运行,系统都要查 询和修改的一些控制信息,它们构成一个数据结构poc(进程 基本控制块)。所有进程的poc结构就构成了核心“进程 表”一“进程表”中每一项都是一个存放某进程控制信息的 proc结构。 另一部分信息当进程不在处理机上运行时,系统不会对它 们进行查询和处理,这些信息构成另一个数据结构user,它是 对proc的扩充,称为“进程扩充控制块user结构”。 10
1)、进程控制块 PCB PCB包括两部分信息: 一部分是不论进程当前是否在处理机上运行,系统都要查 询和修改的一些控制信息,它们构成一个数据结构proc(进程 基本控制块)。所有进程的proc结构就构成了核心“进程 表”——“进程表”中每一项都是一个存放某进程控制信息的 proc结构。 另一部分信息当进程不在处理机上运行时,系统不会对它 们进行查询和处理,这些信息构成另一个数据结构user,它是 对proc的扩充,称为“进程扩充控制块user结构”。 10