Mengapa Windows mengunci file selama instalasi sementara linux tidak mengunci file

0

Saya perhatikan ketika sebuah file dieksekusi pada Windows (.exe atau .dll) untuk instalasi, terkunci dan tidak dapat dimodifikasi, sedangkan Linux memungkinkan pengguna untuk memodifikasinya dengan menghapus / mengedit.

Mengapa Windows mengunci ketika Linux tidak? Apakah ada untungnya mengunci?

BlueBerry - Vignesh4303
sumber
Karena jenis OS Windows berbeda dari jenis OS Linux. Cara mereka menangani file sama sekali berbeda.
Ramhound
@Ramhound saya mengerti jenis os berbeda, tetapi pertanyaan saya adalah mengapa ada perbedaan, boleh saya tahu mengapa downvote
BlueBerry - Vignesh4303
Downvote adalah karena pertanyaan "Mengapa" adalah pertanyaan Superuser yang mengerikan. Adapun di sana mereka berbeda. Microsoft ingin kernel NT berbeda. Selain itu Windows digunakan untuk menjadi shell di atas DOS
Ramhound
1
Raymond Chen menulis sebuah artikel tentang mengapa microsoft memilih untuk tidak mengizinkan menimpa file (khususnya dll): technet.microsoft.com/en-us/magazine/…
Kryten

Jawaban:

6

Kedua sistem operasi mengunci data file. Setiap upaya untuk memodifikasi executable saat sedang berjalan atau perpustakaan saat dipetakan akan menghasilkan kesalahan "text file busy" di Linux.

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

Perbedaannya hanya pada apa terkunci. Windows mengunci entri direktori, Linux mengunci data file. Perbedaan ini ada karena alasan historis - sejak lama, Windows memperlakukan entri direktori dan data file sebagai dasarnya setara dan, untuk mempertahankan kompatibilitas, banyak konsekuensi dari desain yang telah dipertahankan. Linux selalu memperlakukan entri direktori sebagai penunjuk ke file data.

David Schwartz
sumber
Dari pengguna windows POV: Linux menyembunyikan file dari pengguna saat Anda mengklik hapus. Data masih ada dan menggunakan ruang pada drive. Hanya ketika executable berakhir, file (/ file data) dihapus.
DasKrümelmonster
@ DasKrümelmonster Yap. Apa yang orang pikirkan sebagai "delete" sebenarnya hanya unlink di Linux, menghapus entri direktori yang "menghubungkan" data file ke direktori induk. Jika itu referensi terakhir data file, itu dibebaskan. Jika tidak, tidak. Jadi Anda dapat menghapus, mengganti nama, atau bahkan mengganti entri direktori tanpa perubahan pada data file yang dimaksud. Anda juga dapat memiliki dua entri direktori yang merujuk ke data file yang sama. Dan Anda dapat memiliki data file tanpa entri direktori (saat ini terbuka, setidaknya).
David Schwartz