Dlaczego system Windows blokuje pliki podczas instalacji, podczas gdy system Linux nie blokuje plików

0

Zauważyłem, że podczas instalacji plik w systemie Windows (.exe lub .dll) jest zablokowany i nie można go modyfikować, podczas gdy Linux pozwala użytkownikowi na ich modyfikację poprzez usunięcie / edycję.

Dlaczego system Windows blokuje się, gdy Linux nie działa? Czy istnieje zaleta blokowania?

BlueBerry - Vignesh4303
źródło
Ponieważ typ systemu operacyjnego Windows różni się od tego, jaki jest typ systemu operacyjnego Linux. Sposób postępowania z plikiem jest zupełnie inny.
Ramhound
@Rhound rozumiem, że typ os jest inny, ale moje pytanie brzmi: dlaczego jest różnica, może wiem dlaczego downvote
BlueBerry - Vignesh4303
Wadą jest to, że pytania „Dlaczego” są okropnymi pytaniami Superużytkownika. Co do tego są różne. Microsoft chce, aby jądro NT było inne. Dodatkowo Windows był powłoką nad DOS
Ramhound
1
Raymond Chen napisał artykuł o tym, dlaczego microsoft postanowił nie zezwalać na nadpisywanie plików (w szczególności dll): technet.microsoft.com/en-us/magazine/…
Kryten

Odpowiedzi:

6

Oba systemy operacyjne blokują dane pliku. Każda próba zmodyfikowania pliku wykonywalnego, gdy jest uruchomiony lub biblioteka podczas mapowania, spowoduje błąd „plik tekstowy zajęty” w systemie Linux.

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

Różnica polega tylko na tym, co jest zablokowane. Windows blokuje wpis katalogu, Linux blokuje dane pliku. Różnica ta istnieje z przyczyn historycznych - dawno temu system Windows traktował wpisy katalogów i dane plików jako zasadniczo równoważne, a aby zachować zgodność, wiele konsekwencji tego projektu zostało zachowanych. Linux zawsze traktował wpisy katalogów jako wskaźnik do danych pliku.

David Schwartz
źródło
Z użytkownika systemu Windows POV: Linux po prostu ukrywa plik przed użytkownikiem po kliknięciu Usuń. Dane nadal istnieją i wykorzystują miejsce na dysku. Tylko wtedy, gdy plik wykonywalny zostanie zakończony, plik (/ dane pliku) zostanie usunięty.
DasKrümelmonster
@ DasKrümelmonster Tak. To, co ludzie uważają za „usuń”, jest w rzeczywistości po prostu odłączeniem w Linuksie, usuwając wpis katalogu, który „łączy” dane pliku z katalogiem nadrzędnym. Jeśli to ostatnie odniesienie do danych pliku, zostanie zwolnione. Jeśli nie, nie. Możesz więc usunąć, zmienić nazwę, a nawet zastąpić wpis w katalogu bez zmiany danych pliku. Możesz także mieć dwa wpisy katalogu, które odnoszą się do tych samych danych pliku. I możesz mieć dane pliku bez wpisu w katalogu (przynajmniej jeśli jest otwarty).
David Schwartz