深入理解Go语言
上QQ阅读APP看书,第一时间看更新

1.1.1 单进程时代不需要调度器

早期的单进程操作系统,面临两个问题。

(1)单一的执行流程。计算机只能一个任务一个任务处理,所有的程序几乎是阻塞的,更不用说具备图形化界面或者鼠标这种异步交互的处理能力。

(2)进程阻塞所带来的CPU时间浪费。在一个进程完整的生命周期中,所要访问的物理部分包括CPU、Cache、主内存、磁盘、网络等,不同的硬件媒介处理计算的能力相差甚大。如果将这些处理速度不同的处理媒介通过一个进程串在一起,则会出现高速度媒介等待和浪费的现象。如当一个程序加载一个磁盘数据的时候,在读写的过程中,CPU处于等待状态,那么对于单进程的操作系统来讲,很明显会造成CPU运算能力的浪费,因为CPU此刻本应该被合理地分配到其他进程上去做高层的计算。

那么能不能有多个进程来宏观地一起执行多个任务呢?后来操作系统就具有了最早的并发能力,即多进程并发。当一个进程阻塞的时候,切换到另外等待执行的进程,这样就能尽量把CPU利用起来,CPU也就不那么浪费了。