首页 > 试题广场 >

图3.9(b)中包含了 7 个状态。原则上,若在任意两...

[问答题]
图3.9(b)中包含了 7 个状态。原则上,若在任意两个状态间进行转换,则可能有 42 种不同的转换。
a.列出所有可能的转换,并举例说明什么事件会触发这终状态转换。
b.列出所有不可能的转换并说明原因。

a.列出所有可能的转换,并举例说明什么事件会触发这些状态转换。
1.新建态->就绪态:创建一个新进程,并且有足够的内存时,就把一个进程从新建态转换到就绪态。
2.新建态->就绪/挂起态:创建一个新进程,没有足够内存空间分配给新进程时,将它交换到外存,进程转换为就绪/挂起态。
3.就绪/挂起态->就绪态:若内存中没有就绪态进程,则操作系统需要调入一个进程继续执行。处于就绪/挂起态的进程比处于就绪态的任何进程优先级更高时也可以进行这种转换。
4.就绪态->就绪/挂起态:若释放内存来得到足够空间的唯一方法是挂起一个就绪态进程,则将就绪态进程挂起。若操作系统确信高优先级的阻塞态进程很快将会就绪,则它可能会选择挂起一个低优先级的就绪态进程,而非一个高优先级的阻塞态进程。
5.就绪态->运行态:需要选择一个进程运行时,操作系统选择一个处于就绪态的进程转换为运行态。
6.运行态->就绪态:正在运行的进程已到达“允许不中断执行”的最大时间段;操作系统给不同的进程分配不同的优先级,低优先级的进程被抢占;进程自愿释放对处理的控制。
7.运行态->阻塞态:进程请求其必须等待的某些事件时,从运行态转换为阻塞态。
8.阻塞态->就绪态:所等待的事件发生时,处于阻塞态的进程转换到就绪态。
9.阻塞态->阻塞/挂起态:若没有就绪进程,则至少换出一个阻塞进程,以便为另一个未阻塞进程腾出空间。
10.阻塞/挂起态->阻塞态:一个进程终止后,会释放一些内存空间,而阻塞/挂起队列中有一个进程的优先级要比就绪/挂起队列中任何进程的优先级都高,并且操作系统有理由相信阻塞进程的事件很快就会发生,这时,把阻塞进程调入内存是合理的。
11.阻塞/挂起态->就绪/挂起态:若等待的事件发生,则处于阻塞/挂起态的进程可转换到就绪/挂起态。
12.运行态->就绪/挂起态:通常,当一个运行进程的分配时间到期后,它将转换到就绪态。但在阻塞/挂起队列中具有较高优先级的进程不再被阻塞时,操作系统会抢占这个进程,或者直接把这个运行进程转换到就绪/挂起队形中,并释放一些内存空间。
13.运行态->退出态:若当前正运行的进程表示自身已完成或取消,则它将被操作系统终止。
14.各种状态->退出态:典型情况下,一个进程的运行终止,要么是它已完成运行,要么是出现了一些错误条件。但在某些操作系统中,进程可被父进程终止,或在父进程终止时终止。
b.列出所有不可能的转换并说明原因。
1.各种状态->新建态:新建态是刚刚创建的进程,操作系统还未把它加入可执行进程组,它通常是进程控制块已经创建但还未加载到内存中的新进程,所以不能从其他状态转换到新建态。
2.退出态->各种状态:退出态是操作系统从可执行进程组中释放出的进程,要么它自身已停止,要么它因某种原因被取消。不能将一个已经退出的进程转换为其他状态。
3.新建态->运行态,新建态->阻塞态,新建态->阻塞/挂起态:创建一个新进程时,该进程要么加入就绪队列,要么加入就绪/挂起队列,不会直接转换为其他状态。
4.就绪/挂起态->阻塞/挂起态,就绪态->阻塞态,就绪/挂起态->阻塞态,就绪态->阻塞/挂起态:进程等待的事件已就绪,不会转换为阻塞态。
5.就绪/挂起->运行态:进程不存在于内存中,不可以转换为运行态。
6.运行态->阻塞/挂起态:运行态进程要先转换为阻塞态,再转换为阻塞/挂起态。
7.阻塞/挂起态->就绪态:进程等待的事件还未完成,并且还在外存中,无法直接转换为就绪态。
8.阻塞态->就绪/挂起态:进程需要交换到外存中,并且等待事件已就绪,需要两步转换,无法直接转换。
9.阻塞态->运行态:进程需要等待事件完成,转换为就绪态后再转换为运行态。
发表于 2022-10-19 15:01:06 回复(0)