问:是什么阻止汇编程序崩溃到操作系统?
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)在该位置写一些东西。可能出什么问题了?其实很多。考虑一下您在做聪明的事情时计算机上还发生了什么。如果其他任何人(包括操作系统本身)所做的任何事情以任何方式更改了您正在处理的文件,那么这项真正简单的工作突然变得复杂得多。文件越长,文件越短。该文件不再存在。磁盘已满,