一、进程状态:

执行态(run):进程正在使用CPU

等待态(wait):进程正在等待I/O完成,不在使用也不能使用CPU

就绪态(ready):进程不在使用CPU,但已经纯备好用使用CPU

二、CPU调度算法

  衡量CPU调度算法的标准有:CPU利用率、用户程序响应时间、系统吞吐量、公平合理性、设备利用率等。

  常见的调度算法有:先来先服务FIFO、轮转调度法RR(时间片法)、优先级调度法、短作业优先SJF、最短剩余事件优先、最高相应比优先、多级反馈法、策略驱动法、最晚时间限调度、二级调度法。

三:常见调度算法:

linux常用:

  时间片算法:所有的进程排成一个队列。操作系统按照他们的顺序,给每个进程分配一段时间(一般为20ms~250ms

  如果在时间片结束时进程还在运行,则CPU将被剥夺,重新调度此时,退出的进程转换为就绪态,等待属于它的时间片的到来。

  如果进程在时间片结束前阻塞或结束,则CPU当即进行切换。调度程序所要做的就是维护一张就绪进程列表,当进程用完它的时间片后,它被移到队列的末尾。

windows常用:

  抢占式操作系统:假设有若干进程,操作系统会根据他们的优先级、饥饿时间,给他们算出一个总的优先级来。操作系统就会把 CPU 交给总优先级最高的这个进程。

  当进程执行完毕或者自己主动挂起后,操作系统就会重新计算一次所有进程的总优先级,然后再挑一个优先级最高的把CPU控制权交给他。

  操作系统会监控进程霸占CPU的情况,如果发现某个线程长时间霸占CPU,会强制使这个线程挂起。


注:Thread.Sleep(0):触发操作系统立刻重新进行一次CPU竞争