操作系统习题2—进程调度

1. 假定有一个进程 A,其工作流程如图 1 所示。如果系统中进程只有三种状态(就绪、运行、阻塞),并且进程被调度程序选中后就可以投入运行,且时间片为 200ms,请顺序列出该进程从开始到结束所经历的状态转换过程,并说明原因。

操作系统进程调度算法Java代码 操作系统进程调度例题_执行时间


该进程从开始到结束所经历的状态转换过程为:

就绪 => 运行 => 就绪 => 运行 => 阻塞 => 就绪 => 运行 => 阻塞 => 就绪 => 运行 => 阻塞 => 就绪 => 运行 => 结束

分析:

  • 该进程产生后进入就绪状态,被调度程序选中后占用CPU,变为运行态。
  • 运行了一个时间片 200ms 后,此进程由运行态变为就绪态,CPU 转而运行其他进程
  • 在某一时刻,此进程重新被调度程序选中,由就绪态变为运行态
  • 运行了 50ms 后,此进程请求磁盘 I/O 服务,由运行态变为阻塞态
  • 等待磁盘 I/O 完成后,进程又由阻塞态变为就绪态
  • 在某一时刻进程被调占用 CPU,就绪态变为运行态
  • 运行了 50ms 后,此进程又请求磁带 I/O 服务,由运行态变为阻塞态
  • 等待磁带 I/O 完成后,进程又由阻塞态变为就绪态
  • 在某一时刻进程被调占用 CPU,就绪态变为运行态
  • 运行了一个时间片 200ms ,且进程要执行打印请求,此时进程由运行态变为阻塞态
  • 打印结束后,进程由阻塞态变为就绪态
  • 在某一时刻又被调度,从就绪态变为运行态,运行 150ms,进程结束

2、试判断该说法是否正确,并说明原因:引入线程后,同一进程内或不同进程间的线程都可以并发执行。

该说法正确。

① 同一进程内的线程可以并发执行。
线程是进程的一个实体,是 CPU 调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行。

② 不同进程间的线程可以并发执行。
线程自己只拥有一点儿必不可少的资源(线程栈,线程号等),但它可以访问其所属进程的系统资源。不同进程之间的线程执行互相不干扰,可以很好地并发执行。

3、假定一个操作系统的进程调度采用剥夺式短进程优先调度算法(单处理机系统),系统中各进程到达就绪队列的时刻以及执行时间如表 1 所示,请给出各进程的调度次序。

操作系统进程调度算法Java代码 操作系统进程调度例题_调度算法_02

  • 在 0 时刻,就绪队列中只有进程 1,进程 1 被调度运行
  • 在 1 时刻,进程 2 到达就绪队列,因为进程 2 执行时间比进程 1 短,进程 1 进入就绪队列,进程 2 被调度运行
  • 在 2 时刻,进程 3 到达就绪队列,进程 3 执行时间比进程 2 长,不改变调度状态,进程 2 继续执行
  • 在 3 时刻,进程 4 到达就绪队列,进程 4 执行时间比进程 2 长,进程 2 继续执行
  • 在 5 时刻,进程 2 执行完毕,就绪队列中进程 4 执行时间最短,进程 4 被调度运行
  • 在 10 时刻,进程 4 执行完毕,就绪队列中进程 1 执行时间最短,进程 1 被调度运行
  • 在 17 时刻,进程 1 执行完毕,就绪队列中只有进程 3,进程 3 被调度运行
  • 在 26 时刻,进程 3 执行完毕

所以,进程的调度次序为:

操作系统进程调度算法Java代码 操作系统进程调度例题_操作系统进程调度算法Java代码_03

4、考虑如表 2 所示的一组进程,进程占用的 CPU 区间长度以毫秒来计算。假设在 0 时刻进程以 P1、P2、P3、P4、P5的顺序到达。

操作系统进程调度算法Java代码 操作系统进程调度例题_操作系统_04


(1). 画出 4 个 Gantt 图分别演示使用 FCFS、非剥夺式 SJF、非剥夺式优先级(数字越小表示优先级越高)和 RR(时间片为 1ms)算法调度时进程的执行过程。①FCFS

操作系统进程调度算法Java代码 操作系统进程调度例题_执行时间_05


②非剥夺式 SJF

操作系统进程调度算法Java代码 操作系统进程调度例题_操作系统_06


③非剥夺式优先级

操作系统进程调度算法Java代码 操作系统进程调度例题_时间片_07


④RR

操作系统进程调度算法Java代码 操作系统进程调度例题_执行时间_08

(2). 每个进程在每种调度算法下的周转时间是多少?

操作系统进程调度算法Java代码 操作系统进程调度例题_执行时间_09

(3). 每个进程在每种调度算法下的等待时间是多少?

操作系统进程调度算法Java代码 操作系统进程调度例题_执行时间_10

(4). 对所有进程,哪一种调度算法的平均等待时间最小

操作系统进程调度算法Java代码 操作系统进程调度例题_执行时间_11


对所有进程,非剥夺式 SJF 调度算法的平均等待时间最小。

5、在一个使用多级反馈队列调度算法的系统中,若采用优先级越低分配时间片越长的策略,即如果第一级就绪队列调度的时间片为 2 秒,每降一级时间片增加为上一级的 2 倍,那么一个只使用 CPU 的进程的执行时间若为 40 秒,让其初始优先级最高,即插入第一级就绪队列,这个进程运行结束前会被中断多少次,结束时处于哪级队列?

  • 此进程在第一级队列运行 2 秒,中断执行,转入第二队列末尾等待调度
  • 在第二队列调度后运行 4 秒,中断执行,转入第三队列末尾等待调度
  • 在第三队列调度后运行 8 秒,中断执行,转入第四队列末尾等待调度
  • 在第四队列调度后运行 16 秒,中断执行,转入第五队列末尾等待调度
  • 在第五队列调度后运行 10 秒,进程结束

这个进程运行结束前会被中断 4 次,结束时处于第五级队列。