7. 我的电脑如何同时做几件事?

实际上,它并没有同时做几件事。计算机一次只能执行一个任务(或进程)。但是计算机可以非常快速地切换任务,从而迷惑迟缓的人类,让他们认为计算机同时在做几件事。这被称为时间共享

内核的工作之一是管理时间共享。它有一个称为调度器的部件,其中保存着关于动物园中所有其他(非内核)进程的信息。每 1/60 秒,内核中的一个定时器会触发,产生一个时钟中断。调度器会停止当前正在运行的进程,将其暂停在原地,并将控制权交给另一个进程。

1/60 秒听起来可能不多。但在今天的微处理器上,它足以运行数万条机器指令,这些指令可以完成大量工作。因此,即使您有很多进程,每个进程都可以在其每个时间片内完成相当多的工作。

在实践中,程序可能无法获得其整个时间片。如果来自 I/O 设备的中断到来,内核会有效地停止当前任务,运行中断处理程序,然后返回到当前任务。大量高优先级中断可能会挤压正常的处理;这种不良行为被称为系统颠簸,幸运的是,在现代 Unix 系统下,这种情况很难发生。

事实上,程序的速度很少会受到它们可以获得的机器时间量的限制(这条规则有一些例外,例如声音或 3D 图形生成)。更多时候,延迟是由于程序必须等待来自磁盘驱动器或网络连接的数据而引起的。

一个可以常规地支持许多同时进程的操作系统被称为“多任务处理”。Unix 系列操作系统从一开始就被设计用于多任务处理,并且非常擅长这一点——比 Windows 或旧的 Mac OS 有效得多,后两者都是在事后才将多任务处理强行加入,并且做得相当糟糕。高效、可靠的多任务处理是 Linux 在网络、通信和 Web 服务方面表现出色的重要原因。