Linuxなどで同様のオペレーションをしてもキチンとシステム周りが更新されます。
どのような仕組みの差なのでしょうか?
専門用語で解説していただいてかまいません。
よろしくお願いします。
最新でも正確でもありませんが、こんな文章で雰囲気は、つかめますか?
モノリシックなカーネルに様々な機能を取り込むことで巨大化することによる欠点・弊害としては、OSの機能を動的に切り替えたり更新したりすることが(マイクロカーネルと比較した場合に)困難なものになりやすいこと等が挙げられる。
Windows NTは、当初よりマイクロカーネル方式での実装を模索していたが、オーバーヘッドを削減するためにNT 4.0でWindowsサブシステムとグラフィクスデバイスドライバがカーネル空間から直接見える様に修正された。さらにWindows 2000以降では、ハードウェア管理機能の一部をマイクロカーネル直轄のモジュールとしての外部モジュールからカーネル制御部本体による制御方式に切り替えており、純粋なマイクロカーネルから外れた実装になっている。
Linux / Unix だと各アプリケーションが独立して動いていて、要求があったら応答する。
Windows だと相互に連携して動いていて、要求は自分で解決する。
この「自分で解決する」というのは「必要なファイルを勝手に開いて利用する」なので、もし更新が必要なファイルを強制的に更新できても、誰か(何かのアプリ)が使っているならどんな悪影響があるかわからない。
むしろ、排他制御が働いて更新できない。
なので OS から再起動して、誰にも邪魔されずにまっさらな状態で更新しようとするのが Windows だったりする。
(なので再起動後にも更新を続けているメッセージが表示される)
Linux だと、必要なファイルは開いて利用するけど、それに依存しないように後始末までしているイメージ。
Windowsでいまだに「ファイルは使用中」ってエラーになるわりに
どのプロセスが掴んでいるかを教えてくれないのが解せないのですが
Unix系のrm -rf /が出来てしまうのも怖いです。
Windwosでもサーバー系のエディションだとクライアントOSで再起動を求められる操作でも再起層が不要で出来るんならクライアントのほうでも実装してほしいものです。