F. Was verhindert, dass ein Assembly-Programm das Betriebssystem zum Absturz bringt?
A. Nichts.
Viele sehr clevere Programmierer haben sich jedoch über die Jahre sehr bemüht, es immer schwieriger zu machen. Leider gibt es für jeden cleveren Programmierer viele, viele andere, die kreativer, ehrgeiziger und manchmal glücklicher sind als die cleveren. Jedes Mal, wenn ein cleverer Programmierer sagt, dass niemand etwas tun sollte, würde oder könnte, wird jemand einen Weg finden, dies zu tun. Microsoft Windows (als Beispiel) gibt es seit fast 35 Jahren, und wir haben immer noch BSoD (Blue Screens of Death). Dies sind nur Anweisungen, die das Betriebssystem zum Absturz gebracht haben.
Beginnen wir mit einer kleinen Terminologie. Alles, was auf einem Computer läuft, geschieht im Maschinencode. Das Bit, das die Tastenanschläge oder die Bewegung des Mauszeigers liest, das Bit, das die Farbe eines Pixels auf der Anzeige ändert oder ein Byte aus einer Datei liest, und das Bit, das berechnet, ob Ihre Kugel den Bösewicht trifft oder das Bit, das entscheidet Wenn Ihr Kreditkartenantrag akzeptiert wird, werden alle als Folge von Maschinencode-Anweisungen ausgeführt. Einige Arbeiten sind so häufig und werden so oft ausgeführt, dass es sinnvoll ist, die dazu erforderlichen Anweisungen zusammenzustellen und alle Personen diese Baugruppe verwenden zu lassen. Die Menge dieser Jobs, die es anderen ermöglichen oder helfen, den Computer zu nutzen, wird in der Regel als Betriebssystem bezeichnet, zwischen ihnen und anderen Programmen besteht jedoch kein grundsätzlicher Unterschied. Sie alle sind nur Sequenzen von Maschinencode-Anweisungen.
Was Betriebssysteme komplizierter macht (und daher zum Absturz neigt), ist, dass sie Dinge berücksichtigen müssen, über die Sie normalerweise nicht nachdenken müssen. Nehmen Sie die einfachsten Jobs als Beispiel. Ich möchte eine Nachricht an das Ende einer Datei schreiben. In einer höheren Sprache würden Sie etwa schreiben:
with open("myFile.txt", "w+") as f:
# do some really clever things
f.write("Goodbye cruel world!")
Ignorieren wir alle Details darüber, wie auf die physischen Zustände zugegriffen und diese geändert werden oder wie sie als Bits und Bytes interpretiert werden oder wie diese Bytes zu und von dem Speicher und der CPU übertragen werden, und vertrauen wir darauf, dass alles, was von den Programmen des Betriebssystems verarbeitet wird hinter den Kulissen. Denken wir nur darüber nach, wie Sie an das Ende einer Datei anhängen. 1) Finden Sie heraus, wo sich das Ende der Datei befindet. 2) Schreiben Sie etwas an dieser Position. Was könnte möglicherweise falsch laufen? Eigentlich ziemlich viel. Denken Sie darüber nach, was sonst noch auf dem Computer passiert, während Sie clevere Dinge tun. Wenn irgendetwas anderes (einschließlich des Betriebssystems selbst) die Datei ändert, an der Sie gerade arbeiten, wird dieser wirklich einfache Job plötzlich sehr viel komplizierter. Die Datei ist länger, die Datei ist kürzer. Die Datei ist nicht mehr da. Die Festplatte ist voll.