引言
系统中的 CPU 数量有限,而用户希望「同时」得到服务的进程(任务)常常会多于可用的 CPU 核数,这时就需要聪明的任务调度器来为我们实现 CPU 虚拟化,让每个进程都能得到服务。调度器需要照顾到任务的响应时间(否则用户会在敲击键盘后等很久,体验很渣),还要保证一定的周转时间(CPU 密集型的任务期望获得更多的连续运行时间,从而利用 CPU 缓存亲和性,频繁的任务切换会导致一些性能损失,尤其是现代系统 TLB miss, Page Fault 惩罚非常严重),同时还不能让某些低优先级的任务饿死。可见调度器是实现多任务的核心,现代操作系统必备。