Q.アセンブリプログラムによるオペレーティングシステムのクラッシュを防ぐものは何ですか?
A.何もありません。
しかし、非常に賢いプログラマーの多くは、長年にわたってそれをますます困難にするために一生懸命努力してきました。残念ながら、すべての賢いプログラマーには、賢いプログラマーよりも創造的で野心的で、時には幸運な人がたくさんいます。賢いプログラマーが、だれも何かするべきではない、そうする、できない、と言うたびに、そこにいる誰かがそれを行う方法を見つけます。Microsoft Windows(例として)はほぼ35年前から存在しており、オペレーティングシステムをクラッシュさせた単なる指示であるBSoD(死のブルースクリーン)がまだあります。
少し用語から始めましょう。コンピューターで実行されるものはすべて、マシンコードで実行されます。キーストロークまたはマウスポインターの動きを読み取るビット、ディスプレイ上のピクセルの色を変更するビット、またはファイルからバイトを読み取るビット、および弾丸が悪者にぶつかったかどうかを決定するビットを計算するビットクレジットカードの申し込みが受け入れられる場合は、すべて一連のマシンコード命令として実行されます。一部のジョブは非常に一般的であり、頻繁に実行されるため、それらを実行するために必要な命令を組み立てて、全員にそのアセンブリを使用させることが理にかなっています。他のユーザーによるコンピューターの使用を許可または支援するこれらのジョブの集まりは、オペレーティングシステムと呼ばれる傾向がありますが、それらと他のプログラムとの間に本質的な違いはありません。これらはすべて、マシンコード命令の単なるシーケンスです。
オペレーティングシステムをより複雑にする(したがって、クラッシュする傾向がある)のは、通常は考慮する必要がないことを考慮しなければならないということです。例として最も単純なジョブを取り上げます。ファイルの最後にメッセージを書きたい。高水準言語では、次のように記述します。
with open("myFile.txt", "w+") as f:
# do some really clever things
f.write("Goodbye cruel world!")
物理状態へのアクセス方法と変更方法、ビットとバイトとしての解釈方法、またはメモリとCPUとの間でそれらのバイトがどのように転送されるかに関するすべての詳細を無視し、OSが提供するプログラムによって処理されるすべてを信頼できるようにします舞台裏で。ファイルの最後に追加する方法について考えてみましょう。1)ファイルの終わりがどこにあるかを調べ、2)その位置に何かを書きます。何が間違っている可能性がありますか?実際、かなりたくさんあります。あなたが賢いことをしている間に、コンピューターで他に何が起こっているのかを考えてください。他の誰か(オペレーティングシステム自体を含む)によって何かが何らかの方法で作業中のファイルを変更する場合、この本当に単純なジョブは突然、はるかに複雑になります。ファイルは長くなり、ファイルは短くなります。ファイルはもうありません。ディスクがいっぱいです