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 は常にディレクトリ エントリをファイル データへのポインタとして扱ってきました。