内存中通常有很多个进程,而只有个数非常少的CPU
    image.png
    每次CPU都需要决定下一个运行的进程,做个选择的工作就叫CPU的调度程序。
    image.png

    当然一个进程里有多个线程的话,内核管理的线程就以线程为基本单位。
    image.png
    首先进程有2种,一种是长时间占用CPU进行计算,成为计算密集型;
    还有一种CPU计算时间短,但是访问外接设备如磁盘的时间长、次数多成为I/O 密集型,这里的I/O指的是input输入、output输出的简写。
    而实际随着芯片的计算速度越来越快,磁盘的读写速度相对较慢,所以I/O密集型进程数量越来越多,现在更多考虑优化I/O密集进程。比如Nodejs的出现就是应对这类场景,因此不同的场景需要不同的调度策略。
    image.png
    我们大致可以把具体环境分成3类:

    • 批处理:比如银行利息计算,保险公司需要索赔处理,商场需要存货清单的处理等,针对这种最简单的调度方式就是先来先服务