Windows はインストール中にファイルをロックするのに、Linux はファイルをロックしないのはなぜですか?

Windows はインストール中にファイルをロックするのに、Linux はファイルをロックしないのはなぜですか?

Windows ではインストールのためにファイル (.exe または .dll) が実行される場合、そのファイルはロックされて変更できませんが、Linux ではユーザーが削除/編集して変更できることに気付きました。

Linux はロックしないのに、Windows はなぜロックするのでしょうか? ロックすることに利点はあるのでしょうか?

答え1

どちらのオペレーティング システムもファイル データをロックします。実行中に実行可能ファイルを変更しようとしたり、マップされているライブラリを変更しようとしたりすると、Linux では「テキスト ファイルがビジーです」というエラーが発生します。

$ gcc foo.c -o f
$ ./f &
[1] 2017
$ ls > f
bash: f: Text file busy

違いはロックされています。Windows はディレクトリ エントリをロックし、Linux はファイル データをロックします。この違いは歴史的な理由によります。昔、Windows はディレクトリ エントリとファイル データを本質的に同等のものとして扱い、互換性を維持するために、その設計の結果の多くが保持されています。Linux は常にディレクトリ エントリをファイル データへのポインタとして扱ってきました。

関連情報