dot
大きすぎる入力ファイルを使用して(有向グラフを描画するプログラム)を実行しただけで、妥当な時間内にレンダリングできませんでした。
システム全体が凍結しました。殺すためにCtrl+ Alt+でテキストコンソールにたどり着くことができましたが、数分かかりました。F1dot
システムがこのようなことを許可するのはなぜですか?dot
システムの99%などの重要ではないプログラムを提供し、応答性を維持するために残りの1%を使用するのはなぜですか?
dot
大きすぎる入力ファイルを使用して(有向グラフを描画するプログラム)を実行しただけで、妥当な時間内にレンダリングできませんでした。
システム全体が凍結しました。殺すためにCtrl+ Alt+でテキストコンソールにたどり着くことができましたが、数分かかりました。F1dot
システムがこのようなことを許可するのはなぜですか?dot
システムの99%などの重要ではないプログラムを提供し、応答性を維持するために残りの1%を使用するのはなぜですか?
回答:
それがGNU / Linuxおよび他のマルチタスクシステムの動作方法であり、実行中のプロセス間でプロセッサを共有しますdot
。99%ではなく、99%の間は100%になります。特定の期間、各プロセスがプロセッサを支配します。
これはスケジューラーによって処理されます(Linuxにはいくつかのスケジューラーがあり、一部は通常の戦略を採用し、一部はユーザーインターフェイスにより多くの時間を与えようとします)。
さて、あなたの場合、問題は-おそらく-それdot
は多くのプロセッサ時間ではなく、多くのメモリを必要としていたことでした。プログラムが大量のメモリを使用すると、スラッシングが発生します。これは、システムがフリーズするプロセスです。これはdot
、多くのことを行っているためではなく、カーネルがディスク間でメモリページを前後に移動する必要があるためです(スワップパーティション)システムメモリ。
場合であってもdot
、単にCPU時間の99%を取っていた、チャンスはテキスト端末に変更すると、ほぼ即時であろうとしているか、何が起こるかは、カーネルが移動しなければならないということですdot
、それは置くことができるようにメモリ不足のものをX
それはので、メモリ内のバックX
キーを見ることができますヒットしてテキストターミナルに移動するだけで、カーネルはまだ実行X
中のメモリから移動する必要がdot
あり、次にdot
テキストターミナルプロセス(おそらくlogin
?)をメモリに戻すために移動する必要があります。(これが乱雑に見えるのは、例が乱雑だからというだけではなく、現実はこの乱雑です。)
たとえば、テキストターミナルにログインすると、キーを押したりバックスペースを押したりするだけでリアルタイムに実行できますがps
、のような小さなツールを実行するだけの簡単な操作を行うと、「フリーズ」します「ロードするためにメモリを解放する必要があるためps
(またps
、ファイルシステムから要求できるようになるまで、メモリとの間でデータを移動するために頻繁に使用されるディスクI / Oキューで待機する必要があるため) 。