Adakah yang bisa menjelaskan mengapa Linux dirancang sebagai pohon direktori tunggal?
Sedangkan di Windows kita dapat memiliki beberapa drive seperti C:\
, dan D:\
, ada satu root di Unix. Adakah alasan khusus di sana?
filesystems
mount
directory-structure
pengguna2720323
sumber
sumber
C:
danD:
me-mount poin di Windows juga. Setara dengan Windows/
adalahMy Computer
, semuanya terpasang di bawah itu./
di Linux sama dengan C: di MSDOS / Windows, padahal sebenarnya tidak sama.C:
,D:
dan hal-hal hanya kompatibilitas dengan DOS dan Win32; Windows NT secara internal memiliki hierarki objek yang agak seperti UNIX, jika huruf drive (dan secara umum Win32) hanyalah tautan simbolis ke objek "nyata" (c:\file.txt
sebenarnya\??\c:\file.txt
, dengan\??\c:
menjadi symlink ke eg\device\harddisk0\partition1
). Lihat misalnya di siniJawaban:
Karena sistem file Unix telah mendahului Windows selama bertahun-tahun, orang dapat mengubah pertanyaannya menjadi "mengapa Windows menggunakan penunjuk yang terpisah untuk setiap perangkat?".
Sistem file hierarkis memiliki keuntungan bahwa setiap file atau direktori dapat ditemukan sebagai anak dari direktori root. Jika Anda perlu memindahkan data ke perangkat baru atau perangkat jaringan, lokasi dalam sistem file dapat tetap sama dan aplikasi tidak akan melihat perbedaannya.
Misalkan Anda memiliki sistem di mana OS statis dan ada aplikasi yang memiliki persyaratan I / O tinggi. Anda dapat me-mount / usr hanya-baca dan meletakkan / memilih (jika aplikasi ada di sana) ke drive SSD. Hirarki sistem file tidak berubah. Di bawah Windows ini jauh lebih sulit, terutama dengan aplikasi yang bersikeras hidup di bawah C: \ Program Files \
sumber
DISK0:
atauSY:
keA:
.Ini sebagian karena alasan historis, dan sebagian karena lebih masuk akal dengan cara ini.
Multics
Multics adalah sistem operasi pertama yang memperkenalkan sistem file hirarkis seperti yang kita kenal sekarang, dengan direktori yang dapat berisi direktori. Mengutip "Sistem File Tujuan Umum Untuk Penyimpanan Sekunder" oleh RC Daley dan PG Neumann:
Seperti dalam banyak aspek lain, Multics mencari fleksibilitas. Pengguna dapat bekerja di subtree dari sistem file dan mengabaikan sisanya, dan masih mendapat manfaat dari direktori untuk mengatur file mereka. Direktori juga digunakan untuk kontrol akses - atribut BACA memungkinkan pengguna untuk membuat daftar file dalam direktori, dan atribut EXECUTE memungkinkan pengguna untuk mengakses file dalam direktori itu (ini, seperti banyak fitur lainnya, hidup dalam unix).
Multics juga mengikuti prinsip memiliki kumpulan penyimpanan tunggal. Makalah ini tidak membahas aspek ini. Satu kumpulan penyimpanan cocok dengan perangkat keras saat itu: tidak ada perangkat penyimpanan yang dapat dilepas, setidaknya tidak ada yang dipedulikan pengguna. Multics memang memiliki kumpulan penyimpanan cadangan yang terpisah, tetapi ini transparan bagi pengguna.
Unix
Unix mengambil banyak inspirasi dari Multics, tetapi ditujukan untuk kesederhanaan sedangkan Multics bertujuan untuk fleksibilitas.
Sistem file hierarkis tunggal sangat cocok untuk Unix. Seperti halnya Multics, kumpulan penyimpanan biasanya tidak relevan bagi pengguna. Namun, ada perangkat yang dapat dilepas, dan Unix memang mengekspos mereka kepada pengguna, melalui perintah
mount
danumount
(disediakan untuk "pengguna super", yaitu administrator). Dalam “Sistem Berbagi Waktu UNIX” , Dennis Ritchie dan Ken Thompson menjelaskan:Sistem file hierarkis juga memiliki keuntungan berkonsentrasi kompleksitas mengelola beberapa perangkat penyimpanan ke dalam kernel. Ini berarti bahwa kernel lebih kompleks, tetapi semua aplikasi lebih sederhana sebagai hasilnya. Karena kernel harus peduli dengan perangkat keras tetapi kebanyakan aplikasi tidak, ini adalah desain yang lebih alami.
Windows
Windows melacak leluhurnya kembali ke dua garis keturunan: VMS , sistem operasi yang awalnya dirancang untuk komputer mini VAX , dan CP / M , sistem operasi yang dirancang untuk mikrokomputer Intel awal.
VMS memiliki sistem file hirarkis terdistribusi, File-11 . Dalam Files-11, path lengkap ke file berisi nama node, penunjukan akun pada node itu, nama perangkat, path tree direktori, nama file, tipe file, dan nomor versi. VMS memiliki fitur nama logis yang kuat yang memungkinkan pintasan untuk didefinisikan ke direktori tertentu, sehingga pengguna jarang harus peduli dengan lokasi "nyata" direktori.
CP / M dirancang untuk komputer dengan 64kB RAM dan floppy drive, jadi mudah saja. Tidak ada direktori, tetapi referensi file dapat menyertakan indikasi drive (
A:
atauB:
).Ketika MS-DOS 2.0 memperkenalkan direktori, ia melakukannya dengan sintaks yang kompatibel dengan MS-DOS 1 yang dengan sendirinya mengikuti CP / M. Jadi jalur di-root pada drive dengan nama huruf tunggal. (Juga, karakter slash
/
digunakan dalam VMS dan CP / M untuk memulai opsi baris perintah, jadi karakter yang berbeda harus digunakan sebagai pemisah direktori. Inilah sebabnya mengapa DOS dan kemudian Windows menggunakan backslash, meskipun beberapa komponen internal juga mendukung slash ).Windows mempertahankan kompatibilitas dengan pendekatan DOS dan VMS, sehingga ia mempertahankan gagasan huruf drive bahkan ketika mereka menjadi kurang relevan. Hari ini, di bawah tenda, Windows menggunakan jalur UNC ( awalnya dikembangkan oleh Microsoft dan IBM untuk OS / 2 , keturunan terkait). Meskipun ini dicadangkan untuk pengguna listrik (mungkin karena beratnya sejarah), Windows memang memungkinkan pemasangan melalui titik-titik yang berulang .
sumber
A:
danB:
merupakan konvensi yang layak untuk membedakan antara floppy drive Anda jika Anda memiliki dua di antaranya. Ketika dukungan hard drive ditambahkan dalam MS-DOS 2.0,C:
penunjukan drive memungkinkan kompatibilitas dengan memperlakukan HD sebagai satu floppy BESAR.Tidak ada masalah keamanan di balik memiliki pohon direktori tunggal.
Orang-orang yang merancang Unix memiliki banyak pengalaman dengan sistem operasi yang mengharuskan pengguna untuk mengetahui perangkat fisik apa yang mengandung sumber daya yang diberikan. Karena bagian dari tujuan sistem operasi adalah untuk membuat mesin abstrak di atas perangkat keras yang nyata, mereka pikir itu jauh lebih mudah untuk membuang sumber daya pengalamatan dengan lokasi fisik mereka dan memutuskan untuk memasukkan semuanya ke dalam satu pohon nama.
Ini hanya satu bagian dari kejeniusan di balik desain Unix .
sumber
Perhatikan bahwa nama huruf drive dari MS-DOS yang bertahan ke Windows modern adalah herring merah di sini. Nama huruf drive bukan representasi terbaik dari struktur sistem file yang memiliki banyak akar. Mereka adalah pelaksana implementasi sistem semacam itu.
Filesystem yang diimplementasikan dengan benar yang mendukung banyak root akan memungkinkan penamaan sewenang-wenang untuk volume, seperti
dvdrom:/path/to/file.avi
. Sistem seperti itu akan menyingkirkan masalah antarmuka pengguna yang menggelikan yang mengganggu Windows. Misalnya, jika Anda mencolokkan perangkat seperti kamera, Windows Explorer UI membuat Anda percaya bahwa ada perangkat yang disebut Kamera (atau apa pun), dan Anda memiliki jalur sepertiComputer\Camera\DCIM\...
. Namun, jika Anda memotong dan menempel versi tekstual dari path ini keluar dari Explorer, itu sebenarnya tidak berfungsi karena beberapa komponen pathname adalah fiksi antarmuka pengguna, tidak diketahui oleh OS yang mendasarinya. DALAM sistem yang diimplementasikan dengan baik dengan banyak root, akan baik-baik saja: akan ada acamera:\DCIM\...
jalur yang diakui secara seragam di setiap tingkat dalam sistem. Selain itu, jika Anda melakukan porting pada hard drive lama dari PC LAMA, Anda tidak akan terjebak dengan beberapa nama huruf driveF:
, tetapi Anda akan dapat menamainya apa pun yang Anda inginkanold-disk:
.Jadi, jika Unix memang memiliki banyak root dalam struktur sistem file, itu akan dilakukan secara waras seperti ini, dan tidak seperti di MS-DOS dan Windows dengan nama drive satu huruf. Dengan kata lain, mari kita bandingkan skema Unix dengan desain multi-root yang bagus.
Jadi, mengapa Unix tidak memiliki implementasi multi-root yang waras, yang mendukung implementasi one-root yang waras? Mungkin hanya untuk kesederhanaan. Mount points menyediakan semua fungsionalitas untuk dapat mengakses volume melalui nama. Tidak perlu memperluas namespace dengan sintaks awalan tambahan.
Secara matematis, setiap grafik pohon disjoint ("hutan") dapat digabungkan dengan menambahkan simpul akar dan membuat potongan disjoint menjadi anak-anaknya.
Selain itu, lebih fleksibel bahwa volume tidak harus berada di level root. Karena tidak ada sintaks khusus yang menunjukkan volume (itu hanya komponen jalur), mount poin bisa di mana saja. Jika Anda membawa tiga disk lama ke mesin Anda, Anda dapat memiliki mereka sebagai
/old-disk/one
,/old-disk/two
, dll Anda dapat mengatur disk namun Anda inginkan, cara Anda mengatur file dan direktori.Aplikasi dapat ditulis yang bergantung pada jalur, dan validitas jalur dapat dipertahankan ketika perangkat penyimpanan dikonfigurasi ulang. Misalnya, aplikasi dapat menggunakan jalur terkenal seperti
/var/log
dan/var/lib
. Terserah Anda apakah/var/log
dan/var/lib
berada di volume disk yang sama atau yang terpisah. Anda dapat memigrasi sistem ke topologi penyimpanan baru, sambil mempertahankan jalurnya.Mount point adalah ide yang bagus, itulah mengapa Windows telah memilikinya sejak sekitar Windows 2000.
sumber
FTP:
volume yang memungkinkan Anda untuk mengakses file di server FTP apa pun dengan jalur sepertiFTP:hostname/path/to/file
.* Nix dan Windows memasang drive mereka. Di Windows ini secara otomatis dipasang di mount point yang, secara default, dalam urutan abjad. Standarnya adalah:
A:
danB:
=> disketC:
=> partisi pertama dari hard drive pertamaD:
=> partisi berikutnya atau hard drive berikutnya atau drive CD / DVD jika tidak ada partisi lain.Masing-masing titik pemasangan ini adalah direktori.
Di * nix, titik pemasangan ditentukan oleh pengguna. Sebagai contoh, saya memiliki satu partisi yang dipasang sebagai
/
, dan yang lain sebagai/home
. Jadi,/home
adalah drive terpisah, itu akan menjadi setara dengan katakanlahE:
pada Windows.Dalam kedua kasus, Windows dan * nix, mount point adalah direktori yang terpisah. Satu-satunya perbedaan adalah bahwa di * nix, direktori terpisah ini adalah sub-direktori
/
,C:
sementara di Windows, setiap titik pemasangan dipasang langsung di bawah/
,My Computer
katakanlah.Dari perspektif pengguna, keuntungan utama adalah bahwa tunggangan benar-benar transparan. Saya tidak perlu tahu bahwa direktori
/home
sebenarnya berada di partisi yang terpisah. Saya hanya bisa menggunakannya sebagai direktori normal. Sebagai gantinya, dalam DOS, saya harus secara eksplisit menyebutnya dengan nama mount point, katakanlahE:\home
Drive eksternal dipasang dengan cara yang hampir sama di kedua sistem. Katakan
D:
untuk Windows dan/mnt/cdrom
untuk Linux. Masing-masing adalah direktori, saya tidak benar-benar melihat perbedaannya. Ketika Anda meletakkan CDROM ke drive Anda di bawah Windows, disk sudah terpasangD:
seperti di Linux.sumber
Saya setuju dengan jawaban di atas, terutama jawaban Doug O'Neal, tetapi saya pikir mereka semua kehilangan sedikit, seperti halnya perangkat eksplisit me-mount poin seperti MS-DOS "C:" atau "A:".
Rob Pike menulis The Hideous Name tentang sintaksis nama, tetapi Russ Cox merebusnya :
Satu ruang nama tempat perangkat dapat dipasang secara sewenang-wenang memungkinkan operasi yang sangat fleksibel. Saya secara teratur menggunakan
/mnt/sdb1
dan/mnt/cdrom
untuk sementara menempatkan disk atau CD yang saat ini tidak digunakan ke dalam sistem file keseluruhan. Sama sekali tidak umum untuk memiliki direktori home di server NFS, sehingga tidak peduli mesin apa yang Anda masuki, Anda mendapatkan yang sama di$HOME
mana-mana.Yang terjadi adalah: memiliki sintaks khusus untuk hal-hal khusus memberikan batasan pasti pada apa yang dapat Anda lakukan. Jika Anda hanya dapat memasang disk atau CD atau DVD yang tidak digunakan, atau sistem file jaringan / "bagikan" pada "E:" atau "W:" atau apa pun, Anda memiliki fleksibilitas yang jauh lebih sedikit.
sumber
proto://specifichost.domain.tld/topleveldir/middle/specificdoc.html
.proto://
bisnis adalah kebutuhan pragmatis. Setiap bagian dari perangkat lunak tidak dapat diharapkan untuk mengetahui tentang semua skema URI di luar sana. Dengan demikian dapat membantu untuk mengetahui kapan ID skema berakhir, dan sisa URI dimulai.Ini konyol. Windows juga memiliki titik hierarki tunggal. Tapi itu tersembunyi dan tidak standar. Seperti kebanyakan hal windows.
Dalam hal ini, itu adalah konsep "My Computer". Itu setara dengan root (/) di Unix. Ingat bahwa root adalah konsep yang ada di kernel. kamu suka atau tidak. Sama seperti windows memperlakukan "My Computer". tentu saja, Anda dapat memasang partisi pada root di unix, dan itulah yang dilakukan kebanyakan orang. Dan banyak hal akan melihat jalur khusus untuk hal-hal (misalnya / etc /) tetapi Anda tidak dibatasi olehnya. Dengan segala cara, pasang drive Anda di / C: /. Anda tidak dilarang melakukan itu di unix.
C: \ bukan root di windows, itu adalah titik mount dari satu partisi. Yang HARUS di tingkat atas "My Computer". Sementara di unix Anda dapat memasang partisi di bawah pohon lain. Jadi linux Anda dapat memiliki C: terpasang
/
sementara Anda memiliki D: dipasang di/mnt/d/
... atau bahkan juga dipasang di/
tapi itu rumit dan tergantung pada bagaimana dua sistem file berperilaku saat pemasangan di atas jalur yang sudah terpasang.Jadi Anda bisa mendapatkan yang sama persis seperti yang Anda miliki dengan windows dengan "memaksa" diri Anda untuk mengikuti batasan yang sama yang diterapkan windows secara acak pada Anda.
Maka Anda harus melewati opsi mount pada opsi boot. karena Anda tidak akan memiliki / etc / ... tapi itu juga mensimulasikan pembatasan yang diberlakukan windows, seperti yang dilakukannya.
sumber
My Computer
.My Computer
adalah simpul akar dari hierarki Shell. itu berisi drive, jika mereka memiliki huruf drive , tetapi juga panel kontrol dan Windows Phone yang terhubung. Hirarki Shell menggunakan PIDL sebagai ganti jalur.CreateFile
lewat "Komputer Saya" atau folder shell lainnya; ini adalah abstraksi yang hanya dipahami oleh kode yang berhubungan dengan shell, semua panggilan kernel (dan dengan demikian 90% aplikasi, karena manajemen file dalam sebagian besar bahasa diimplementasikan dalam hal API file kernel) tidak tahu apa-apa tentang hal ini. Folder shell hanya dapat digunakan ketika program menggunakan "dialog standar" (yang memahami ruang nama shell) dan hanya ketika file yang dipilih langsung memetakan ke jalur "nyata" (= dipahami kernel).Alasan Windows memiliki huruf drive mungkin lebih jauh dari Microsoft dan DOS. Menugaskan surat ke drive yang dapat dilepas adalah hal yang umum pada sistem IBM, jadi Microsoft mungkin baru saja bertindak atas instruksi IBM dengan menyalin CP / M. Dan pada awalnya, DOS juga tidak memiliki direktori.
Ketika MS-DOS berjalan pada komputer dengan satu atau dua disk yang dapat dilepas dan tidak ada media tetap, Anda tidak benar-benar membutuhkan sistem file dengan direktori. Dengan satu, atau mungkin dua, 180 kilobyte disk, Anda tidak pernah memiliki cukup file sehingga sulit mengaturnya.
https://en.wikipedia.org/wiki/Drive_letter_assignment
sumber
Sebenarnya, Linux didasarkan pada Unix (atau Unix, lihat diskusi ) dan Unix berasal dari lingkungan mainframe, di mana menggunakan beberapa perangkat cukup jelas. Perangkat pemasangan dalam pohon direktori tunggal memberi Anda fleksibilitas maksimal, dan tidak membatasi jumlah perangkat yang dapat diakses sistem operasi.
Di sisi lain, huruf DOS untuk drive adalah desain yang bagus untuk PC dengan 1 atau 2 stasiun disket dan drive disk tunggal. Floppy besar 5,25 'selalu A :, si kecil 3,5' selalu B :, dan disk drive selalu C :. Anda selalu tahu jika Anda menyalin file ke floppy atau di suatu tempat ke disk. Anda tidak memerlukan fleksibilitas apa pun jika secara fisik Anda tidak dapat menghubungkan lebih dari 2 floppy drive dan 2 (atau 4) hard disk.
Desain DOS lebih ramah pengguna akhir, sedangkan desain Unix ramah administrator. Sekarang huruf kandar adalah beban bagi Windows, pengguna lebih bergantung pada secara otomatis membuka jendela penjelajah dengan konten kandar yang dapat dilepas daripada mengetahui hurufnya ... Ubuntu juga melakukan hal yang sama.
sumber
Sebenarnya itu tidak benar. Windows menggunakan skema jalur lain (baik, tidak sama)
"Unit Letters" hanyalah sesuatu yang mudah diingat jalur, disk, dan partisi.
Jalur ARC menentukan jalur file di windows (tetapi hanya dapat dilihat oleh pengguna saat boot):
http://support.microsoft.com/kb/102873
https://serverfault.com/questions/5910/how-do-i-determine-the-arc-path-for-a-particular-drive-letter-in-windows
Di Windows NT tidak ada hubungan antara disk, partisi dan huruf satuan: Anda dapat "meletakkan" seluruh volume dalam folder (misalnya: c: \ myseconddisk bisa menjadi seluruh disk fisik!)
sumber
Dua hal yang ingin saya tunjukkan -
sumber
Jika Anda melihat kembali sejarah Anda juga dapat melihat bahwa Unix dimulai pada saat sistem 8 track tape untuk audio dan 9 track sistem data IBM (8 track / 8 bit untuk data, satu untuk paritas). Secara teknis sangat mirip.
Pada saat itu informasi tentang lokasi file disimpan di bagian informasi pada tape dan maju dan mundur didefinisikan ketika Anda membaca data dari rekaman (seperti file, dengan posisi awal dan tanda tangan akhir); itu menjelaskan juga mengapa Anda tidak hanya memiliki satu FAT di awal drive — Anda memiliki beberapa FAT untuk mempercepat pencarian. Dan jika Anda memiliki banyak drive, mereka terhubung di dalam / dev dan melalui alamat file yang Anda pindah di antara perangkat.
Saya percaya Anda dapat memiliki pandangan bahwa itu dimulai hanya sebelumnya dan bahwa keputusan di belakang area MS Dos (CP / M) dan kemudian Windows NT hanya terkait dengan huruf drive mainframe VM daripada satu titik masuk karena pada saat itu terlihat lebih modern, jumlah data hari ini tidak ada dan mereka tidak berpikir bahwa Anda pada akhirnya akan memiliki huruf drive tidak cukup atau itu akan lebih berantakan.
Penugasan 9-Track-Drive dan Drive Letter
sumber