実行中のLinuxシステムを更新するのに問題がないのはなぜですか?

実行中のLinuxシステムを更新するのに問題がないのはなぜですか?

私は長年にわたって毎日Linuxシステムを使用してきましたが、システムの実行中にシステムを更新するのに大きな問題はありませんでしたが、なぜこれが起こるのか疑問に思います。

たとえば、見てみましょう。

特定のパッケージのプログラム「A」がシステムで実行されていると仮定する。ある時点で、プログラムは同じパッケージ内の別のファイル(「B」)を開く必要があります。その後、プログラム「A」は不要になったので「B」を終了する。ここで、「A」と「B」が属するパッケージを更新するとしましょう。 「A」はRAM上で実行され、更新は単にハードドライブの「A」に取って代わるため、少なくとも現在はこの操作の直接的な影響を受けません。ファイルシステムの「B」も交換されたとする。今、何らかの理由で「A」は「B」を読み直す必要があります。問題は、「A」が「B」の互換性のないバージョンを見つけてクラッシュまたは誤動作する可能性がありますか?

Live CDや同様のプログラムを使用して再起動してシステムを更新しないのはなぜですか?

ベストアンサー1

ユーザースペースの更新はほとんど問題ありません。

次の理由により、ライブシステムでパッケージを頻繁に更新できます。

  1. 共有ライブラリは、呼び出すたびにディスクから読み取られずにメモリに保存されるため、アプリケーションを再起動するまで、以前のバージョンは引き続き使用されます。
  2. 開かれたファイルは、実際には次からインポートされます。ファイル記述子したがって、移動/名前変更/削除された場合でも、セクタを上書きするか、ファイル記述子が閉じられるまで実行中のアプリケーションでファイルの内容を引き続き使用できます。
  3. パッケージがうまく設計されている場合、再ロードまたは再起動が必要なパッケージは通常、パッケージマネージャが正しく処理できます。たとえば、Debianはlibc6がアップグレードされるたびに特定のサービスを再起動します。

通常、カーネルを更新して ksplice を使用していない場合は、更新プログラムを利用するためにプログラムやサービスを再起動する必要があります。ただし、デスクトップでは個々のサービスを再起動するよりも簡単な場合がありますが、ユーザースペースのエントリを更新するためにシステムを再起動する必要はほとんどありません。

また、見ることができます

http://en.wikipedia.org/wiki/Ring_%28computer_security%29#Supervisor_mode

おすすめ記事