【操作系统】进程的状态切换

来谈一下自己的理解。

任何进程都逃不脱的状态是new和terminated,就像人都要经历出生和死亡一样,这两个状态是短暂的,new一旦成功就会跳到ready态,ready态的进程会由scheduler调度进内存运行,也就是切换到running态,只要有ready态的程序,调度就会发生,也就是说如果一个操作系统中所有进程都准备好了但是却没有运行的话,那这个系统应该是有毛病的。running态的程序有3个去向,第一个是通过中断回到ready态,第二个是通过挂起等手段去到terminated态,最后一个是通过I/O请求到waiting态。一旦到了waiting态,扮演重要角色的就是I/O,处在这个状态的进程会一直等到I/O结束,然后去到ready态。

所以说了半天我只是在重复这张图:

【操作系统】进程的状态切换

但是黑字的地方则是理解这张图需要注意的。

来看一个问题:用户态下有10个进程并发执行,问:

1)最多有几个处在running态,最少呢?

2)最多有几个处在waiting态,最少呢?

3)最多有几个处在ready态,最少呢?

答:

1)1,0

2)10,0

3)9,0

注意无论如何running态只可能有一个,如果没有running,那可以全部去waiting(这时候是由I/O来决定)。可不可能10个都ready?不可能,因为scheduler总是会去调度ready的进程的。