Pertimbangkan sistem file yang ditargetkan pada beberapa perangkat tertanam yang tidak lebih dari menyimpan file dalam struktur direktori hierarkis. Sistem file ini tidak memiliki banyak operasi yang dapat Anda gunakan dalam sistem seperti unix dan Windows (misalnya, izin aksesnya sangat berbeda dan tidak terikat dengan metadata yang disimpan dalam direktori). Sistem file ini tidak mengizinkan segala jenis tautan keras atau tautan lunak, sehingga setiap file memiliki nama unik dalam struktur pohon yang ketat.
Apakah ada manfaat untuk menyimpan tautan ke direktori itu sendiri dan ke induknya dalam struktur data di-disk yang mewakili direktori?
Sebagian besar sistem file unix memiliki .
dan ..
entri pada disk. Saya bertanya-tanya mengapa mereka tidak menangani mereka di lapisan VFS (driver sistem file generik). Apakah ini artefak sejarah? Apakah ada alasan yang bagus, dan jika demikian, yang tepatnya, jadi saya dapat menentukan apakah itu relevan dengan sistem embedded saya?
sumber
Jawaban:
Memiliki tautan ke direktori induk masuk akal bagi saya. Jika Anda tidak memilikinya, Anda harus selalu bekerja dengan seluruh daftar direktori. Jadi, misalnya,
/home/svick/Documents/
harus diwakili sebagai{ /, /home/, /home/svick/, /home/svick/Documents }
. Jika Anda tidak melakukan itu, Anda tidak akan dapat menemukan direktori induk sama sekali (atau itu akan sangat mahal). Ini tidak hanya tidak efisien, tetapi juga berbahaya. Jika Anda memiliki dua daftar yang tumpang tindih, mereka dapat dengan mudah menyinkronkan jika Anda memindahkan beberapa direktori.Di sisi lain, jika Anda memiliki referensi ke direktori induk, ini lebih efisien dan lebih aman.
Saya tidak melihat alasan untuk benar-benar memiliki tautan ke direktori saat ini. Jika Anda memiliki struktur yang mewakili beberapa direktori dan Anda ingin mengakses direktori itu, menggunakan
.
selalu sama sekali tidak perlu. Karena itu, saya berharap bahwa.
tautannya tidak benar-benar ada dalam struktur sistem berkas dan hanya virtual.sumber
.
dan..
entri.Anda mendapatkan lebih sedikit case khusus. Dalam banyak situasi, VFS dapat menangani ".." karena menangani nama direktori lain.
sumber
Satu-satunya alasan yang dapat saya bayangkan adalah skenario berikut:
Implementasi asli dari sistem file ada dengan format direktori yang sama tetapi gagasan jalur file dan subdirektori tidak dipertimbangkan pada waktu itu (Lihat sistem file PDP-7 Unix ).
Kemudian orang berpikir bahwa resolusi jalur dan subdirektori akan berguna!
Untuk menjaga sejumlah kompatibilitas dengan implementasi yang lebih lama, diputuskan bahwa
.
dan..
akan disimpan pada disk sama seperti direktori lainnya.Jadi mungkin kita ditinggalkan dengan artefak yang tidak berguna itu, hanya demi kompatibilitas dengan perangkat lunak yang sudah berusia 40 tahun? Skenario yang dapat dipercaya?
Catatan: Juga tidak sepenuhnya bodoh untuk menambahkan entri ini ke daftar direktori, karena Anda perlu menyimpan nomor inode dari direktori induk asli Anda di suatu tempat (ingat bahwa hardlink pada direktori diperbolehkan saat ini), dan referensi ke Anda nomor inode sendiri mungkin pemeriksaan kewarasan yang baik.
sumber
Saya tidak melihat alasan untuk mengimplementasikan
.
dan..
di kedua tingkat daripada yang lain. Namun, jika Anda menargetkan sistem tertanam lapisan apa pun yang dapat Anda hemat mungkin merupakan dolar yang diperoleh, jadi mungkin masuk akal untuk mencoba dan mengimplementasikan semuanya serendah mungkin.Adapun kebutuhan umum
.
dan..
, bagaimana Anda mengekspresikan jalur relatif tanpa mereka? Setidaknya..
sangat diperlukan untuk jalur yang meninggalkan subtree saat ini. Jika Anda tidak memerlukan jalur seperti itu (mungkin pohon merupakan cara primitif untuk menyandikan hak akses?), Anda tidak perlu..
.sumber