Sistem Berkas var FHS

Bab 16. Implementasi Sistem Berkas

16.1. Pendahuluan

Salah satu bagian yang sangat tampak pada sebuah sistem operasi adalah sistem berkas. Banyak program yang membaca atau menulis setidaknya pada sebuah berkas. Bagi kebanyakan pengguna, performance dari sebuah sistem operasi sangat ditentukan oleh interface, structure, dan reliability dari sistem berkasnya. Hal ini disebabkan oleh kemampuan yang dimiliki sistem berkas dalam menyediakan mekanisme penyimpanan secara online dan pengaksesan isi berkas, yaitu data atau program. Sistem berkas terdapat pada secondary storage yang dirancang agar mampu menampung data dalam jumlah yang besar secara permanen. Setiap berkas yang telah kita simpan, dalam implementasinya membutuhkan sebuah struktur direktori untuk mengaksesnya kembali. Sistem operasi harus mampu mengimplementasikan sistem berkas dengan berbagai tipe yang berbeda. Pada bab ini akan dibahas bagaimana penanganan yang dilakukan oleh sistem operasi. Bab ini juga membahas mengenai implementasi sistem berkas, implementasi direktori, serta beberapa lapisan yang ada di file system dan virtual file system.

16.2. Struktur Sistem Berkas

Disk merupakan tempat penyimpanan sekunder dimana sistem berkas disimpan. Ada dua karakteristik dalam penyimpanan banyak berkas, yaitu: 1. Sebuah disk dapat ditulis kembali, memungkinkan untuk membaca, memodifikasi, dan menulis blok kembali pada tempat yang sama. 2. Sebuah blok yang menyimpan informasi yang kita cari, dapat diakses secara langsung. Dalam aplikasinya, kita dapat mengakses berkas secara random maupun sequential. Sistem operasi menyediakan satu atau lebih sistem berkas untuk menyimpan dan mengambil data dengan mudah. Struktur berkas itu sendiri terdiri dari beberapa layer. Strukturnya dapat dilihat pada Gambar 16.1, “Layered File System”. Gambar 16.1. Layered File System 123 Setiap level menggunakan feature-feature dari lapisan di bawahnya untuk digunakan sebagai feature baru bagi lapisan di atasnya. Level terbawah adalah IO control yang terdiri dari beberapa device driver dan penanganan interupsi untuk memindahkan informasi antara memori utama dan disk system. Device driver dapat dianggap sebagai penerjemah. Inputnya terdiri dari perintah-perintah high level, misalkan ambil blok 123. Outputnya berupa instruksi-instruksi hardware yang lebih spesifik. Instruksi ini digunakan oleh pengendali hardware yang menghubungkan IO device dengan sistem lainnya. Basic file system bertugas dalam hal menyampaikan perintah-perintah generic ke device driver yang dituju untuk membaca dan menulis blok-blok fisik pada disk. Masing-masing blok fisik diidentifikasi dengan alamat disknya. File organization modul adalah lapisan dalam sistem berkas yang mengetahui tentang berkas, blok-blok logis, dan blok-blok fisik. Dengan mengetahui tipe dan lokasi dari berkas yang digunakan, file organization modul dapat menerjemahkan alamat blok logis ke alamat blok fisik untuk selanjutnya diteruskan ke lapisan basic file system. File organization modul juga mengandung free space manager yang mencatat jejak blok-blok yang tidak dialokasikan dan menyediakannya ke file organization modul ketika dibutuhkan. Lapisan yang terhubung dengan program aplikasi yaitu logical file system yang bertugas dalam mengatur informasi metadata. Metadata meliputi semua struktur dari sistem berkas, kecuali data sebenarnya isi dari berkas. Lapisan ini juga mengatur struktur direktori untuk menyediakan informasi yang dibutuhkan file organization modul. Struktur dari sebuah berkas ditentukan oleh lapisan ini dengan adanya file control block.

16.3. File Control Block

Pada disk, sistem berkas bisa mengandung informasi mengenai bagaimana cara mem-boot sistem operasi, jumlah total blok, jumlah dan lokasi dari free blocks, struktur direktori dan berkas individu. Berikut ini penjelasan dari struktur-struktur tersebut. • Sebuah boot control block per volume Mengandung informasi yang dibutuhkan oleh sistem untuk mem-boot sistem operasi dari volume yang dimilikinya. Jika disk tidak mempunyai sistem operasi, blok disknya bisa saja kosong. Pada UFS, ini disebut boot block, sedangkan pada NTFS, ini disebut partition boot sector. • Volume control block per volume Mengandung informasi khusus mengenai partisi, misalnya jumlah blok yang dipartisi, ukuran blok, free block count dan free block pointer, free FCB count, dan FCB pointer. Pada UFS, disebut superblock, dan pada NTFS, disimpan di tabel master file. • Directory structure per file system Digunakan untuk mengorganisasi berkas. Pada UFS, struktur direktori ini meliputi nama berkas serta jumlah inode yang terkait dan disimpan dalam tabel master file. • Per-file FCB Mengandung semua informasi tentang berkas yaitu meliputi file permission, kepemilikan, ukuran, dan lokasi dari blok data. Informasi yang ada di dalam memori digunakan untuk pengaturan sistem berkas dan peningkatan performance dengan caching. Berikut ini adalah penjelasan mengenai strukturnya : • In-memory mount table mengandung informasi setiap volume yang di-mount. • In-memory directory structure cache menyimpan informasi direktori yang baru diakses. • System-wide open file table menyimpan hasil copy FCB. Untuk membuat berkas baru, program aplikasi memanggil logical file system karena logical file 124 system mengetahui format dari struktur direktori. Kemudian, FCB yang baru dialokasikan dan sistem membaca direktori yang dituju ke memori, mengubahnya dengan nama berkas, dan FCB yang baru menulisnya ke dalam disk. Contoh struktur FCB, bisa dilihat pada Gambar 16.2, “File Control Block” Gambar 16.2. File Control Block Beberapa sistem operasi termasuk UNIX, memperlakukan berkas sama seperti direktori. Sistem operasi yang lain, seperti Windows NT, mengimplementasikan system call yang terpisah untuk berkas dan direktori, direktori diperlakukan sebagai objek yang berbeda dari berkas. Pada tahap selanjutnya, logical file system memanggil file organization module untuk memetakan direktori MK ke disk-block number yang dikirimkan ke sistem berkas dasar dan sistem kendali MK. Setelah berkas berhasil dibuat, berkas tersebut dapat digunakan untuk operasi MK. Pertama, tentu saja berkas tersebut harus dibuka terlebih dahulu. Perintah open mengirim nama berkas ke sistem berkas. System call open mencari system-wide open-file table untuk melihat apakah berkas yang ingin dibuka sedang digunakan oleh proses lain. Jika benar, maka entry dari per-process open-file table menunjuk system-wide open-file table yang sedang eksis. Ketika berkas sedang dibuka, nama berkas tersebut dicari dalam struktur direktori. Setelah nama berkas ditemukan, FCB dari berkas tersebut disalin ke dalam system-wide open-file table di memori. Pada tahapan selanjutnya, sebuah entry dibuat dalam per-process open-file table di mana entry tersebut menunjuk ke system-wide open-file table. Semua bentuk operasi yang melibatkan berkas dilakukan oleh pointer dari entry ini. Selama berkas tersebut belum ditutup, semua operasi dari berkas dilakukan pada open-file table. Ketika sebuah berkas ditutup, entry dari per-process table dihapus, dan jumlah entry dari system-wide open-file table dikurangi. Ketika semua pengguna yang menggunakan berkas menutup berkas tersebut, semua metadata yang telah diubah disalin kembali ke disk berdasarkan struktur direktori, dan yang terakhir, entry dari system-wide open-file dihilangkan atau dihapus. Gambar 16.3, “Fungsi open Sebuah Berkas ” mengilustrasikan pembukaan sebuah berkas. 125