Windowsで再起動を求められることがありますが

Linuxなどで同様のオペレーションをしてもキチンとシステム周りが更新されます。
どのような仕組みの差なのでしょうか?

専門用語で解説していただいてかまいません。
よろしくお願いします。

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2015/10/24 18:50:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:tea_cup No.1

回答回数1071ベストアンサー獲得回数194

ポイント34pt

最新でも正確でもありませんが、こんな文章で雰囲気は、つかめますか?

モノリシックなカーネルに様々な機能を取り込むことで巨大化することによる欠点・弊害としては、OSの機能を動的に切り替えたり更新したりすることが(マイクロカーネルと比較した場合に)困難なものになりやすいこと等が挙げられる。

Windows NTは、当初よりマイクロカーネル方式での実装を模索していたが、オーバーヘッドを削減するためにNT 4.0でWindowsサブシステムとグラフィクスデバイスドライバがカーネル空間から直接見える様に修正された。さらにWindows 2000以降では、ハードウェア管理機能の一部をマイクロカーネル直轄のモジュールとしての外部モジュールからカーネル制御部本体による制御方式に切り替えており、純粋なマイクロカーネルから外れた実装になっている。

モノリシックカーネル - Wikipedia

id:shitsumonyou

リンク先のモノリシックカーネルの採用例を見ると
WindowsもLinuxもUnixも入っているのでそこでは差が無いようですが・・・

2015/10/18 22:14:12
id:Binoculars No.2

回答回数6ベストアンサー獲得回数0

ポイント33pt

単純に設計思想の違いじゃないでしょうか。
マルチユーザーなUnixの流れだと、誰かが何かをアップデートしてシステム再起動なんてダメですよね。Windowsは実質シングルユーザー向けですから。

id:shitsumonyou

Windowsの功績は再起動への抵抗をユーザーから取り払ったことだって誰かが言っていました。

2015/10/19 22:10:50
id:t_yamo No.3

回答回数15ベストアンサー獲得回数3

ポイント33pt

Windowsでも再起動が必要になるのは基本的にOSに絡む部分など起動時に読み込まれる系のものであり、Linuxでもカーネルの更新ではさすがに再起動が必要なので、その部分は同じ気がします(ちょうど半年前ぐらいにライブパッチ機構入りのものがリリースされましたが http://gihyo.jp/admin/clip/01/linux_dt/201504/14 )。

また、Windowsは定期的にOSのアップデートをMS側が送りつけてきてくれて「再起動しないとダメだよ!」と半ば強制してくれるので「しょっちゅう再起動させられるな!」という印象になるのに対し、Linuxはyum等でパッケージやKernelのファイル自体は更新しているものの「Linuxは再起動しなくて楽だなー」って思いながら古いKernelプロセスのまま使い続けてる人もそれなりにいそうな予感も。

ただ、確かにWindowsの方は通常のアプリケーションっぽいものでもアップデート後に再起動を求めるモノもあり、そういったケースは「プロセスが立ち上がりっぱなしでアップデートされたファイルが有効になってないかもしれないので念のため再起動してね」(=システム的な理由と思想的な理由が半々)の意味合いもあると思います(実際しばらく再起動せずに作業し続けてもそんなに支障がなかったりも)。

id:shitsumonyou

Unix系だと設定ファイルの読み直しやデーモン再起動で済むことが多いのでその辺は取り入れて欲しいなあと。サーバ機では同じ操作でも不要なことがあるのも不思議です。
DLLの仕組み的にロードし直しなせいかと思いますがsoだとどうやってるんだろうと。

2015/10/19 22:13:16
  • id:KuroNeko666
    そういや、まともに考えたことなかったけど、内部通信の差じゃないかな…

    Linux / Unix だと各アプリケーションが独立して動いていて、要求があったら応答する。
    Windows だと相互に連携して動いていて、要求は自分で解決する。

    この「自分で解決する」というのは「必要なファイルを勝手に開いて利用する」なので、もし更新が必要なファイルを強制的に更新できても、誰か(何かのアプリ)が使っているならどんな悪影響があるかわからない。
    むしろ、排他制御が働いて更新できない。
    なので OS から再起動して、誰にも邪魔されずにまっさらな状態で更新しようとするのが Windows だったりする。
    (なので再起動後にも更新を続けているメッセージが表示される)

    Linux だと、必要なファイルは開いて利用するけど、それに依存しないように後始末までしているイメージ。
  • id:practicalscheme
    Unixでは他プロセスが使用中のファイルでも更新できます。より正確には、Unixではファイルの名前はオープンする時のみ使われて、オープン後のプロセスは直接ファイル実体を参照しているため、現在使われている実体はそのままにして新しいバージョンの実体をインストールして名前だけつけかえる、ということが可能です。更新後に起動されるプロセスは新しい実体を使うようになるわけです。なお名前を失った旧実体は、使うプロセスが全て終了した時点でごみとしてOSに回収されます。
  • id:shitsumonyou
    コメントありがとうございます。
    Windowsでいまだに「ファイルは使用中」ってエラーになるわりに
    どのプロセスが掴んでいるかを教えてくれないのが解せないのですが
    Unix系のrm -rf /が出来てしまうのも怖いです。
    Windwosでもサーバー系のエディションだとクライアントOSで再起動を求められる操作でも再起層が不要で出来るんならクライアントのほうでも実装してほしいものです。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません