第六章进程结构 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