Microsoft WordやExcelなどのプログラムが「クラッシュ」した場合は、プログラムの実行中に問題が発生したことを意味します。オペレーティングシステムは、多くの場合、深刻な問題があることを認識し、クリーンな方法で怒らアプリケーションをオフに殺します。これを行うと、オペレーティングシステムは「致命的な例外エラー」のような不可解なことを言います(そして、ユーザーであるあなたにはまったく役に立たないが、元のプログラマーには役立つかもしれない16進数の大規模なコレクションを表示することがよくあります)。プログラムがクラッシュするもう1つの方法は、オペレーティングシステムをダウンさせることです。つまり、再起動する必要があります。
不可解なエラーメッセージでできることは何もありませんが、少なくともそれらが何を意味するのかを知っておくとよいでしょう。それでは、最も一般的な3つを見ていきましょう。
- 致命的な例外エラー-MicrosoftWordのようなアプリケーションプログラムは、多くのレイヤーとコンポーネントで構成されています。コアオペレーティングシステム、オペレーティングシステムサービス層、おそらくシステムサービスの上にあるカプセル化層、何百ものソフトウェアライブラリ、内部関数/クラスライブラリとDLL、そして最後にメインアプリケーション層があります。最新のオペレーティングシステムと言語(C ++、Javaなど)のほとんどは、例外および例外処理と呼ばれるプログラミングの概念をサポートしています。例外により、さまざまなレイヤーが相互に問題を伝達できます。たとえば、プログラムにメモリが必要だとします、したがって、オペレーティングシステムにメモリのブロックを予約するように要求します。オペレーティングシステムがメモリ要求を受け入れることができない場合(要求されたブロックが大きすぎる、システムのメモリが不足しているなどの理由で)、要求を行ったレイヤーまで「メモリ例外をスロー」します。さまざまなレイヤーが例外を上向きにスローし続ける可能性があります。どこかで、レイヤーの1つが「例外をキャッチ」して問題に対処する必要があります。プログラムは、「うわー、システムのメモリが不足しています。素敵なダイアログボックスでこれをユーザーに伝える必要があります」と言う必要があります。プログラムが例外をキャッチできない場合(何らかの理由でプログラマーがその特定の例外を処理するコードを記述しなかったため)、例外はすべてのレイヤーの最上位に到達します。オペレーティングシステムはそれを「未処理の例外」として認識します。次に、オペレーティングシステムはプログラムをシャットダウンします。適切に設計されたソフトウェアは、すべての例外を処理します。
- 無効なページフォールト-プログラムはメモリ(RAM)を使用してデータを保存します。たとえば、ドキュメントをMicrosoft Wordにロードすると、編集しているファイルの大部分がRAMのスペースを占有します。プログラムはメモリを必要とするため、オペレーティングシステムに特定のサイズのメモリブロックを要求します。プログラムは、「ポインタ」を使用して割り当てた各ブロックの場所を記憶しています。プログラムがメモリブロックの終わりを超えた場所にデータを書き込もうとした場合、またはプログラムが混乱して無効なポインタを使用して存在しないメモリブロックにアクセスしようとした場合、オペレーティングシステムはそれを認識し、 「ページフォールト」または「セグメンテーション違反」。プログラムは明らかに何をしているのかわからないため、オペレーティングシステムはプログラムをシャットダウンします。
- 不正な操作-マイクロプロセッサには、理解できる命令の数が有限であり、各命令は「オペコード」と呼ばれる番号で表されます。オペコード43は「追加」を意味する場合があり、オペコード52は「乗算」を意味する場合があります。マイクロプロセッサがプログラムを実行していて、認識できない、または現在の状態のために実行できないオペコードに到達した場合。 、その後、マイクロプロセッサは文句を言うのをやめます。オペレーティングシステムは、問題のあるプログラムをシャットダウンすることにより、この苦情を処理します。不正なオペコードは通常、有効なプログラム情報を含まないメモリ内の場所にソフトウェアがジャンプすることで発生します。
これらの問題はすべて、プログラマー側の人為的エラーが原因で発生します。プログラマーは、例外をキャッチするのに十分な勤勉さを持っていないか、プログラムが無効なメモリにアクセスすることを許可します。根本的な原因が無能または経験不足である場合もありますが、多くの場合、それは今日のプログラムの複雑さです。プログラムが複雑な階層化された環境で管理する数百の例外と、多くの場合数百万のメモリブロックがあります。1つの誤った動きとアプリケーションのクラッシュ-ソフトウェアは非常に脆弱です。テストでは多くのエラーが検出されますが、通常はすべてが検出されるわけではありません。
これらのリンクは、詳細を学ぶのに役立ちます。
- 致命的な例外エラーとは何ですか?
- MSWindowsエラーメッセージ
- ネットを学ぶ:エラーメッセージのデコード
- コンピュータメモリのしくみ
- オペレーティングシステムのしくみ
- マイクロプロセッサのしくみ