アカウント名:
パスワード:
0dayのパッチがWindowsだけ遅い状況が解消されて、うれしい限り
しかし、Windowsのパッチが遅いと書いたときに月1回じゃないととか、過去の経緯が云々とかいってたMS信者は、月1回を貫き通してほしいものですなw
というか、なぜWindowsはシステム更新でOS再起動が必要なのだろう?
サービス更新なら、サービス立ち上げなおせばいいし。設定ファイル更新なら、読み込め直せばいいし。9x時代から(それ以前から?)、なぜこれを改善しないのか。
なにか認識不足だろうか。
あんだけ大量にあるサービス全部立ち上げなおすの?それなら再起動したほうが早いだろ
パッチに関連するのだけで良いだろ、って話なんじゃないかな。それとも毎回kernelいじってるの?
Windowsの場合、OS側のファイル操作仕様が強制ロック (mandatory lock) なので、UNIXで一般的なアドバイザリロック (advisory lock) とは異なり、何をどうやっても排他ロックのかけられたファイルに書き込むことができません。これを回避する目的で、再起動後に反映する仕組み(MoveFileExのMOVEFILE_DELAY_UNTIL_REBOOTフラグ)がありますが、これによって関連するサービスの再起動だけでは済まない事情が発生してしまっています。(プログラムファイル自身もそうですし、それらが使用しているデータファイルも同様です)
UNIXで一般的なアドバイザリロックの場合は、逆に「パッチは適用したつもりだけど、サービス類の再起動を忘れて実は新しいモジュールやデータが反映されてなかった」事態が起こりえますので、一長一短ではあります。
別にWindowsだって、実行中のファイルは上書きできないだけで、リネームはできるよ。だからDLLを再起動せずに入れ替える事もできる。「パッチは適用したつもりだけど、サービス類の再起動を忘れて実は新しいモジュールやデータが反映されてなかった」のが発生するのも同じ。
それで思い出したので貼っておきます。Windows 秘話 : Windows では可能でも行わないことがある [microsoft.com]
実は、Windows では元の DLL の名前を変更し、そこに新しいファイルをコピーすることで、使用中の DLL を置き換えることができます。しかし、Windows ではこの処理が行われていません。なぜでしょう。
Open中のファイルをリネームできます?
実行だけでなく、オープン一般の話であれば、CreateFileの際にFILE_SHARE_DELETEをつけてるならリネームできる。(Windows KernelがEXE/DLLを実行用に開く時は、このフラグをつけてる)
>Windows では、再起動しない場合に発生する複雑さを回避しているだけこれは酷い言い訳ですね…。脆弱性の修正については、構造体の意味を変更しない小さな修正の方が多いというのに。まぁ、この先、live patchingの流行(*1)によって、Microsoftも方針を見直すでしょう、多分。
*1 Oracleが、Kspliceをユーザー空間向けに拡張中http://japan.zdnet.com/article/35063253/3/ [zdnet.com]
Hotpatching ぐらい、Windows Server 2003 以降には搭載されています。
構造体は一例じゃないですかね。小さい修正でも組み合わせテストはしなきゃならないから複雑には違いないでしょう。10DLL×10世代で100パターンとかなったら嫌になる。現実はもっと多いでしょうし。
Linuxはこの辺の問題をどうやって避けてるんですかね。
#ってか記事を書いたのRaymond Chenなのか。
おお、本当だ、凄い。既にWindowsには搭載されてますね>Hotpatching。ただし、Windows Updateからは利用不可(*1)と。ダメじゃん。Hotpatchingを有効にするためには、アップデータのインストール時の引数に"/hotpatch:enable"を渡す必要があるらしいです。ううむ、何が問題なんでしょうね。
*1http://jpassing.com/2011/05/01/windows-hotpatching/ [jpassing.com]
リンク先では、「システムにA.dllと A.dllから呼び出されるB.dllがあったときに A.dllだけ更新されると上手く動作しない可能性がある。」という問題が指摘されています。
でもこれは複数の会社が開発したプロプライエタリなDLLが混在する環境を想定していますよね。
Linuxのようにディストリビュータが全てのソースコードにアクセスできる場合は、「古いB.dllでも動作するようにパッチを当てたA.dllをリリースする」という方法で対応できます。(少なくとも理論上は)
このようにちょっとした不具合なら誰でも修正できるのがオープンソフトのメリットです。Richard StallmanのFreesoftの理念も「オレのコンピュータで動作しているソフトを自由に改造したい」というものでしょう。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
にわかな奴ほど語りたがる -- あるハッカー
パッチの提供が早くなるのであれば歓迎 (スコア:0, おもしろおかしい)
0dayのパッチがWindowsだけ遅い状況が解消されて、うれしい限り
しかし、Windowsのパッチが遅いと書いたときに月1回じゃないととか、
過去の経緯が云々とかいってたMS信者は、月1回を貫き通してほしいものですなw
Re: (スコア:0)
というか、なぜWindowsはシステム更新でOS再起動が必要なのだろう?
サービス更新なら、サービス立ち上げなおせばいいし。
設定ファイル更新なら、読み込め直せばいいし。
9x時代から(それ以前から?)、なぜこれを改善しないのか。
なにか認識不足だろうか。
Re: (スコア:0)
あんだけ大量にあるサービス全部立ち上げなおすの?
それなら再起動したほうが早いだろ
Re: (スコア:0)
パッチに関連するのだけで良いだろ、って話なんじゃないかな。
それとも毎回kernelいじってるの?
Re: (スコア:2, 参考になる)
Windowsの場合、OS側のファイル操作仕様が強制ロック (mandatory lock) なので、UNIXで一般的なアドバイザリロック (advisory lock) とは異なり、何をどうやっても排他ロックのかけられたファイルに書き込むことができません。
これを回避する目的で、再起動後に反映する仕組み(MoveFileExのMOVEFILE_DELAY_UNTIL_REBOOTフラグ)がありますが、これによって関連するサービスの再起動だけでは済まない事情が発生してしまっています。
(プログラムファイル自身もそうですし、それらが使用しているデータファイルも同様です)
UNIXで一般的なアドバイザリロックの場合は、逆に「パッチは適用したつもりだけど、サービス類の再起動を忘れて実は新しいモジュールやデータが反映されてなかった」事態が起こりえますので、一長一短ではあります。
Re:パッチの提供が早くなるのであれば歓迎 (スコア:1)
別にWindowsだって、実行中のファイルは上書きできないだけで、リネームはできるよ。だからDLLを再起動せずに入れ替える事もできる。
「パッチは適用したつもりだけど、サービス類の再起動を忘れて実は新しいモジュールやデータが反映されてなかった」のが発生するのも同じ。
Re:パッチの提供が早くなるのであれば歓迎 (スコア:3, 参考になる)
それで思い出したので貼っておきます。
Windows 秘話 : Windows では可能でも行わないことがある [microsoft.com]
実は、Windows では元の DLL の名前を変更し、そこに新しいファイルをコピーすることで、使用中の DLL を置き換えることができます。しかし、Windows ではこの処理が行われていません。なぜでしょう。
Re: (スコア:0)
Open中のファイルをリネームできます?
Re: (スコア:0)
実行だけでなく、オープン一般の話であれば、CreateFileの際にFILE_SHARE_DELETEをつけてるならリネームできる。
(Windows KernelがEXE/DLLを実行用に開く時は、このフラグをつけてる)
Re: (スコア:0)
>Windows では、再起動しない場合に発生する複雑さを回避しているだけ
これは酷い言い訳ですね…。脆弱性の修正については、構造体の意味を変更しない小さな修正の方が多いというのに。
まぁ、この先、live patchingの流行(*1)によって、Microsoftも方針を見直すでしょう、多分。
*1 Oracleが、Kspliceをユーザー空間向けに拡張中
http://japan.zdnet.com/article/35063253/3/ [zdnet.com]
Re: (スコア:0)
Hotpatching ぐらい、Windows Server 2003 以降には搭載されています。
Re: (スコア:0)
構造体は一例じゃないですかね。
小さい修正でも組み合わせテストはしなきゃならないから複雑には違いないでしょう。
10DLL×10世代で100パターンとかなったら嫌になる。
現実はもっと多いでしょうし。
Linuxはこの辺の問題をどうやって避けてるんですかね。
#ってか記事を書いたのRaymond Chenなのか。
Re:パッチの提供が早くなるのであれば歓迎 (スコア:1)
おお、本当だ、凄い。既にWindowsには搭載されてますね>Hotpatching。ただし、Windows Updateからは利用不可(*1)と。ダメじゃん。
Hotpatchingを有効にするためには、アップデータのインストール時の引数に"/hotpatch:enable"を渡す必要があるらしいです。
ううむ、何が問題なんでしょうね。
*1
http://jpassing.com/2011/05/01/windows-hotpatching/ [jpassing.com]
Re: (スコア:0)
リンク先では、
「システムにA.dllと
A.dllから呼び出されるB.dllがあったときに
A.dllだけ更新されると上手く動作しない可能性がある。」
という問題が指摘されています。
でもこれは複数の会社が開発したプロプライエタリなDLLが混在する環境を想定していますよね。
Linuxのようにディストリビュータが全てのソースコードにアクセスできる場合は、
「古いB.dllでも動作するようにパッチを当てたA.dllをリリースする」という方法で対応できます。
(少なくとも理論上は)
このようにちょっとした不具合なら誰でも修正できるのがオープンソフトのメリットです。
Richard StallmanのFreesoftの理念も
「オレのコンピュータで動作しているソフトを自由に改造したい」というものでしょう。