【操作系统习题】就绪、阻塞、执行态用户进程数量分析

零、题目示例

就绪、阻塞、执行态进程数量分析

一、题目分析

1.1 前提条件

1.1.1 条件一:不考虑短期的进程调度切换

  1. 什么是“短期进程调度切换”?
    1. 调度器基于特定策略(如时间片耗尽等)​主动中断当前运行进程,将CPU分配给其他就绪进程的行为叫做“短期进程调度切换”
  2. “不考虑短期进程调度切换”的含义
    1. 调度器不会主动剥夺正在运行进程的CPU使用权
    2. ​进程切换只能由进程自身行为触发(如进程主动换下CPU进入就绪队列或主动自我阻塞进入阻塞队列)

1.1.2 条件二:不考虑系统进程

  1. 系统进程的含义
    1. 系统进程广泛地涵盖操作系统层面的所有管理型进程(非用户进程)
  2. “不考虑系统进程”的含义
    1. 当就绪队列为空时,CPU空闲;
  3. 实际中操作系统的执行情况
    1. 当就绪队列为空时,CPU执行系统进程;
    2. 系统进程中可执行如下语句:
while(1) {  //系统进程
	while( 就绪队列是否为空 );

	1.取出就绪队列的队头用户进程;
	2.利用调度器将自己换下CPU,将用户进程换上CPU并修改其状态为执行态;
}

1.2 数量词

  1. m(m>1)个用户进程
  2. 1个处理机

二、题目解答

2.1 就绪状态的用户进程最多几个,最少几个?

2.1.1 就绪状态的用户进程最多数量【重点】

  1. 第零步:定义稳定的系统运行状态与不稳定的系统运行状态
    1. 不稳定的系统运行状态需满足如下两个条件
      1. CPU空闲
      2. 就绪队列不为空
    2. 稳定的系统运行状态有以下两种
      1. 第一种
        1. CPU空闲
        2. 就绪队列为空
      2. 第二种
        1. CPU忙
        2. 就绪队列空与不空均可
    3. 【注意】不稳定状态一定是短暂存在的,最终系统运行状态均会趋于稳定状态,因此我们在做题时只考虑稳定状态!
  2. 第一步
    1. CPU空闲,就绪队列为空,系统处于稳定运行状态。
  3. 第二步
    1. 将第一个用户进程加入就绪队列。
  4. 第三步【最容易产生问题
    1. 完成第二步后,在极短时间里,就绪队列内用户进程数量由 0 个增加到 1 个,且此时CPU空闲,因此构成系统的不稳定运行状态
  5. 第四步
    1. 就绪队列中这个单独用户进程首先会被分配CPU资源,其运行状态被改为执行态,此时不稳定的系统运行状态条件被破坏,系统运行状态趋于稳定。
  6. 第五步
    1. 此时CPU忙且就绪队列为空,系统处于稳定运行状态、因此后续的(m-1)个用户进程依次被加入就绪队列。
  7. 综上,考虑所有前置条件,当系统处于稳定运行状态时,就绪状态的用户进程数量最多为 m-1 个

2.1.2 就绪状态的用户进程最少数量

  1. 当所有 m 个用户进程均被阻塞时,CPU空闲,就绪队列为空,满足系统稳定运行状态。
  2. 综上,考虑所有前置条件,当系统处于稳定运行状态时,就绪状态的用户进程数量最少为 0 个

2.2 阻塞状态的用户进程最多几个,最少几个?

2.2.1 阻塞状态的用户进程最多数量

  1. 当所有 m 个用户进程均被阻塞时,CPU空闲,就绪队列为空,满足系统稳定运行状态。
  2. 综上,考虑所有前置条件,当系统处于稳定运行状态时,阻塞状态的用户进程最多数量为 m 个

2.2.2 阻塞状态的用户进程最少数量

  1. 当 m-1 个用户进程处于就绪态,CPU忙时,满足系统稳定运行状态。
  2. 综上,考虑所有前置条件,当系统处于稳定运行状态时,阻塞状态的用户进程最少数量为 0 个

2.3 执行状态的用户进程最多几个,最少几个?

2.3.1 执行状态的用户进程最多数量

  1. 由前置条件 “1个处理机” 知,执行状态的用户进程最多数量为 1 个。

2.3.2 执行状态的用户进程最少数量

  1. 当所有 m 个用户进程均被阻塞时,CPU空闲,就绪队列为空,满足系统稳定运行状态。
  2. 综上,考虑所有前置条件,当系统处于稳定运行状态时,执行状态的用户进程最少数量为 0 个
posted @ 2025-03-16 09:51  宇星海  阅读(43)  评论(0)    收藏  举报