システムが応答しなくなるのはなぜですか?


12

dot大きすぎる入力ファイルを使用して(有向グラフを描画するプログラム)を実行しただけで、妥当な時間内にレンダリングできませんでした。

システム全体が凍結しました。殺すためにCtrl+ Alt+でテキストコンソールにたどり着くことができましたが、数分かかりました。F1dot

システムがこのようなことを許可するのはなぜですか?dotシステムの99%などの重要ではないプログラムを提供し、応答性を維持するために残りの1%を使用するのはなぜですか?


回答:


15

それがGNU / Linuxおよび他のマルチタスクシステムの動作方法であり、実行中のプロセス間でプロセッサを共有しますdot。99%ではなく、99%の間は100%になります。特定の期間、各プロセスがプロセッサを支配します。

これはスケジューラーによって処理されます(Linuxにはいくつかのスケジューラーがあり、一部は通常の戦略を採用し、一部はユーザーインターフェイスにより多くの時間を与えようとします)。

さて、あなたの場合、問題は-おそらく-それdotは多くのプロセッサ時間ではなく、多くのメモリを必要としていたことでした。プログラムが大量のメモリを使用するとスラッシング発生します。これは、システムがフリーズするプロセスです。これはdot、多くのことを行っているためではなく、カーネルがディスク間でメモリページを前後に移動する必要があるためです(スワップパーティション)システムメモリ。

場合であってもdot、単にCPU時間の99%を取っていた、チャンスはテキスト端末に変更すると、ほぼ即時であろうとしているか、何が起こるかは、カーネルが移動しなければならないということですdot、それは置くことができるようにメモリ不足のものをXそれはので、メモリ内のバックXキーを見ることができますヒットしてテキストターミナルに移動するだけで、カーネルはまだ実行X中のメモリから移動する必要がdotあり、次にdotテキストターミナルプロセス(おそらくlogin?)をメモリに戻すために移動する必要があります。(これが乱雑に見えるのは、例が乱雑だからというだけではなく、現実はこの乱雑です。)

たとえば、テキストターミナルにログインすると、キーを押したりバックスペースを押したりするだけでリアルタイムに実行できますがps、のような小さなツールを実行するだけの簡単な操作を行うと、「フリーズ」します「ロードするためにメモリを解放する必要があるためps(またps、ファイルシステムから要求できるようになるまで、メモリとの間でデータを移動するために頻繁に使用されるディスクI / Oキューで待機する必要があるため) 。


そのため、ユーザーエクスペリエンスを向上させる方法は、特定のプログラムを " スティッキー " として指定し、これらのプログラムがスワップアウトされるのを防ぐことです。
クリストフワーム

70年代と「スティッキー」ビットの元のセマンティクス以来、スティッキーネスはそのようには機能しませんでした。あなたはすることができます、彼らがスワップアウトすることができませんので、しかし、メモリへのプログラム(の一部)をロックします。ただし、メインメモリは高価な贅沢品であるため、すべてに対応することはできません。
アレクシオス

@njsg、良い説明をありがとう。追加の質問:スラッシングを防ぐ方法はありませんか?スワッピングは全体としてメモリ使用量をより効果的にすることを理解していますが、制限があるはずです。Xと同じくらい重要なプロセスをメモリから移動しないでください。重要なプロセスが移動しないように保護されるように、UNIXのようなシステムを構成する方法はありますか?サーバーではそれとは異なりますが、デスクトップでは、デスクトップが私に話しかけるのを止めるよりも、メモリを大量に消費するプロセスをクラッシュさせたいと思います。
A.ドンダ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.