如果把计算机内存中的指令流看作是用数字0和数字1组成的公路网络,那么中央处理器(CPU)就是飞驰在这些公路上的轿车。CPU在行驶的过程中执行“道路”上的指令,完成各种功能。这个过程可以是正在进行中的复杂科学运算,也可以是激战正酣的网络游戏。
最初的计算机是单中央处理器和单任务的,即只有一个CPU,同一时间只执行一个任务。一个任务执行好了之后再执行下一个,这就好像是只有一辆车在简单的公路上行驶。在这种情况下,没有“撞车”的可能,也很少会“走错路”,但是有可能因为某种意外情况或者机械故障导致系统停止运行。
举例来说,曾在UNIVAC大型机上工作过的艾伦·赖特在他关于UNIVAC大型机的回忆文章中,讲了这样一个有趣的故事。故事的主角是美国钢铁公司使用的第14号UNIVAC,当时的计算机很少,每一台都有独立的编号。这台UNIVAC是使用附近的密歇根湖湖水来冷却的,有一次一条鱼堵塞了冷却系统,导致UNIVAC因过热而“死机”。直到今天,系统过热仍是导致死机的一个可能原因。
然而“死机”的原因更多的是由于软件故障导致CPU偏离了运行轨道无法继续工作。崩溃和挂起是两种常见的“死机”情况。
前一种情况主要是因为CPU在运行时遇到了错误的指令,比如除零。因为0不可以做除数,所以CPU无法计算,只好抛出异常报告给操作系统,操作系统接收到异常后会根据错误指令的来源做判断,如果错误指令属于低优先级的应用程序,那么会交给它自己处理,如果属于高优先级的系统程序,那么便可能触发系统的崩溃机制,让整个系统停止工作,显示错误信息,然后复位。如果Windows系统遇到这种情况时,会显示蓝屏画面,然后自动重启系统,被称为蓝屏死亡,简称BSOD。
后一种情况可能是因为CPU陷入了一条没有出口的“环路”,在那里无休止地行驶,没有办法脱身执行其他任务了,无法响应用户的输入,系统就好像死了一样。