问:是什么阻止了汇编程序使操作系统崩溃?
A. 什么都没有。
然而,多年来,许多非常聪明的程序员都非常努力地让它变得越来越困难。不幸的是,对于每个聪明的程序员来说,他们之间还有很多很多其他人更有创造力,更有野心,有时甚至比聪明的程序员更幸运。每当一个聪明的程序员说没有人应该、不会或不能做某事时,总会有人找到方法去做。Microsoft Windows(例如)已经存在了将近 35 年,我们仍然有 BSoD(蓝屏死机),这只是导致操作系统崩溃的指令。
让我们从一些术语开始。在计算机上运行的所有东西都以机器代码执行。读取击键或鼠标指针移动的位,更改显示器上像素颜色或从文件中读取字节的位以及计算您的子弹是否击中坏人或决定的位如果您的信用卡申请将被接受,所有这些都将作为一系列机器代码指令执行。有些工作很常见,而且经常完成,因此汇编完成这些工作所需的指令并让每个人都使用该汇编是有意义的。这些允许或帮助他人使用计算机的工作往往被称为操作系统,但它们与任何其他程序之间并没有本质上的不同。它们都只是机器代码指令的序列。
使操作系统更复杂(因此容易崩溃)的原因是它们必须考虑您通常不必考虑的事情。以最简单的工作为例。我想在文件末尾写一条消息。在高级语言中,您会编写如下内容:
with open("myFile.txt", "w+") as f:
# do some really clever things
f.write("Goodbye cruel world!")
让我们忽略有关如何访问和更改物理状态或如何将它们解释为位和字节或如何将这些字节传输到内存和 CPU 的所有细节,并相信所有这些都是由操作系统提供的程序处理的在幕后。让我们想想如何附加到文件的末尾。1)找出文件的结尾在哪里,2)在那个位置写一些东西。什么可能出错?实际上,相当多。当你在做一些聪明的事情时,想想电脑上还发生了什么。如果其他人(包括操作系统本身)所做的任何其他事情以任何方式更改了您正在处理的文件,那么这个非常简单的工作突然变得更加复杂。文件更长,文件更短。该文件不再存在。磁盘已满,