Sistem operasi modern harus mampu mengimplementasikan berbagai sistem
berkas dengan tipe yang berbeda dalam waktu yang bersamaan. Salah satu teknik
yang digunakan sebagai solusinya adalah dengan menggunakan virtual file system (VFS). VFS saat ini banyak digunakan
oleh berbagai sistem operasi. Ide dari
VFS adalah meletakkan informasi di kernel untuk merepresentasikan
keseluruhan tipe sistem berkas, dan juga terdapat sebuah fungsi untuk setiap
operasi yang dimiliki sistem berkas. Sehingga, untuk setiap system call
seperti fungsi read(), write(), open(), dan lainnya, kernel akan
mensubstitusikannya menjadi actual function yang dimiliki oleh setiap
sitem berkas dengan berbagai tipe.
VFS menggunakan konsep object oriented dalam mengimplementasikan
sistem berkas. Di dalam VFS terdapat sebuah berkas yang
merepresentasikan seluruh tipe sistem berkas yang ada, berkas ini dinamakan common
file model. Berkas inilah yang menggunakan konsep object oriented,
yang di dalamnya terdapat struktur data dan method yang
diimplementasikan.
Terdapat empat objek di dalam common file model, diantaranya :
1. Superblock
object. Objek ini menyimpan informasi tentang mounted
file system atau sistem berkas secara keseluruhan.
2.
Inode
object. Objek ini menyimpan informasi umum tentang file
tertentu (individual file).
3.
File
object. Objek ini menyimpan informasi tentang file yang
sedang dibuka.
4. Dentry
object. Objek ini menyimpan informasi tentang link-link
dari sebuah entry directory file.
Struktur data dan method yang diimplementasikan, digunakan
untuk menyembunyikan implementasi detail dari actual function pada
sistem berkas dengan system call yang mengaksesnya. Oleh karena itu,
dalam mengimplementasikan sistem berkas, terdapat tiga layer utama,
seperti pada Gambar
16.5. Virtual File System Layer.
Gambar 0.1 : Virtual File System Layer
|
Lapisan yang pertama adalah file system interface. Contohnya
adalah beberapa system call seperti read(), write(), open() dan lainnya.
System call ini tidak berhubungan langsung dengan sistem, namun
terhubung melalui sebuah lapisan abstrak yaitu virtual file system.
Lapisan
yang Kedua adalah VFS Interface. Virtual
file system memiliki dua fungsi penting, yaitu:
1. Memisahkan
operasi-operasi file system generic dari implementasi detailnya, dengan
cara mendefinisikan virtual file system interface.
2. Virtual
file system interface
didasarkan pada struktur representasi berkas yang disebut vnode, yang
memiliki numerical designator yang unik untuk setiap network file.
Lapisan yang ketiga adalah sistem berkas dengan berbagai tipe. Secara
umum, terdapat tiga macam tipe sistem berkas, yaitu:
1.
Disk-based
file system. Sistem berkas ini mengatur ruang memori yang tersedia di dalam
partisi disk lokal. Misalnya, Ext2 (Second Extended file system), Ext3
(Third Extended file system), dan Reiser file system yang tedapat di
Linux.
2.
Network
file system. Sistem berkas ini terdapat di network, misalnya NFS.
3. Special
file system. Sistem berkas ini tidak terdapat di disk
space, baik lokal maupun network, misalnya /proc file system.
A.
Pengertian Virtual File System
Suatu
lapisan abstrak di atas sistem berkas yang sesungguhnya, yang menangani semua
system call yang berhubungan dengan suatu sistem berkas di bawahnya. Tujuan
dari VFS yaitu agar berbagai sistem berkas yang berbeda dapat di akses oleh
aplikasi komputer dengan cara yang seragam. Virtual File System menyediakan
antarmuka antara system call dengan sistem berkas yang sesungguhnya. Keberadaan
VFS tentu dapat mengatasi perbedaan berbagai sistem berkas yang digunakan oleh
berbagai sistem operasi saat ini seperti Windows, Mac OS, Linux, dan
sebagainya, sehingga suatu aplikasi dapat mengakses berkas dari sistem berkas
yang berbeda tanpa perlu mengetahui jenis sistem berkas yang digunakan dan
detil implementasi dari masing-masing sistem berkas tersebut.
Tujuan dari VFS yaitu agar berbagai sistem berkas
yang berbeda dapat di akses oleh aplikasi komputer dengan cara yang seragam.
Setiap berkas, directory, dan data lainnya pada
VFS direpresentasikan oleh satu dan hanya satu VFS inode. VFS inode hanya
terdapat di memori kernel dan disimpan di inode chace selama masih dibutuhkan
oleh sistem. Beberapa informasi yang disimpan oleh VFS inode yaitu:
Ø Device : Menunjukan device identifier dari
suatu device yang menyimpan berkas, ataupun directory.
Ø Inode Number : Merupakan nomor inode yang unik dalam sistem berkas.
Ø Mode : Menggambarkan apa yang
direpresentasikan oleh VFS inode.
Ø User ID : Merupakan identifier bagi pemilik berkas.
Ø Time : Menunjukkan kapan pembuatan,
modifikasi, dan penulisan suatu berkas.
Ø Blocksize : Menunjukkan ukuran dari block
yang digunakan oleh berkas.
Ø Inode Operations: Merupakan pointer ke suatu routine yang melakukan
berbagai operasi pada inode.
Ø Count : Menunjukkan berapa kali suatu
sistem telah menggunakan suatu inode.
Ø Lock : Digunakan untuk mengunci VFS
inode.
Ø Dirty : Mengindikasikan bahwa telah
terjadi penulisan pada VFS inode, sehingga perubahan yang terjadi juga harus
dituliskan ke sistem berkas yang sesungguhnya.
Ø File System Specific Information : Menunjukkan informasi
khusus yang dibutuhkan oleh suatu inode.
Superblock : Setiap sistem berkas yang
di-mount akan direpresentasikan oleh sebuah VFS Superblock. Superblock
digunakan untuk menyimpan informasi mengenai partisi tersebut. Pada dasarnya
superblock merupakan suatu struktur data yang menyimpan beberapa informasi
sebagai berikut:
Ø Device : Merupakan suatu device
identifier, contohnya /dev/hda1 adalah harddisk pertama yang terdapat pada
sistem memiliki device identifier 0×300.
Ø Inode Pointer : Merupakan suatu pointer yang menunjuk ke inode pertama
pada sistem berkas.
Ø Blocksize : Menunjukkan ukuran suatu block
dari sistem berkas, contohnya 1024 bytes.
Ø Superblock Operation : Merupakan suatu pointer ke sekumpulan superblock
routine (fungsi) dari sistem berkas, contohnya read, write, dan sebagainya.
Ø File System type :
Menunjukkan tipe dari sistem berkas, contohnya EXT2, FAT, NTFS.
Ø File System Specific :
Merupakan suatu pointer ke informasi yang dibutuhkan oleh sistem berkas.
B.
STRUKTUR SISTEM
FILE
File adalah
unit penyimpan logika yang berisi sekumpulan informasi yang berhubungan. Sistem
file berada pada penyimpan sekunder (disk). Sistem file diorganisasi ke dalam layer-layer
seperti Gambar 1.1.
Gambar 1.1 : Layer System File
Pada
level terendah, I/O control berisi device driver dan interrupt
handler untuk mengirim informasi antara memori dan sistem disk. Basic
file system berisi perintah bagi device driver untuk membaca dan
menulis blok fisik pada disk. File organization module berisi modul
untuk mengetahui blok logika pada blok fisik. Logical file system menggunakan
struktur direktori untuk memberikan ke file organization module informasi
tentang kebutuhan terakhir.
Informasi
mengenai sebuah file disimpan pada struktur penyimpan yang disebut file
control block seperti Gambar 1.2.
Gambar 1.2 : File Control Block
Gambar
1.3 mengilustrasikan pentingnya struktur sistem file disediakan oleh sistem
operasi. Pada saat membuka file (dengan menjalankan perintah open)
blok-blok dari struktur direktori disimpan pada struktur direktori di memori
dan mengubah file control block. Pada saat membaca file (dengan
menjalankan perintah read), indeks yang dibaca di cari lokasi blok pada
disk melalui tabel open file yang berada di memori.
Gambar 1.3 : (a) membuka File, (b) Membaca
file
Virtual File Systems (VFS)
merupakan implementasi sistem file yang berorientasi obyek. VFS memungkinkan
antarmuka system call (API) yang sama digunakan untuk sistem file yang berbeda.
API adalah lebih sebagai antarmuka VFS dan bukan untuk tipe sistem file
tertentu. Skema VFS dapat dilihat pada Gambar 1.4
Gambar 1.4 : Skema Virtual File System
C.
IMPLEMENTASI DIREKTORI
Implementasi direktori menggunakan daftar nama
file linier dengan pointer ke blok data. Hal ini berdampak pada pemrograman yang
mudah tetapi memerlukan waktu yang lama untuk eksekusi.
Untuk mempercepat waktu eksekusi digunakan Tabel
Hash berupa daftar linier dengan struktur data hash. Dengan struktur data hash
akan mengurangi waktu pencarian direktori. Tetapi struktur hash mempunyai
resiko bertabrakan apabila terjadi situasi dimana dua nama file hash yang
berbeda berada pada lokasi yang sama. Struktur hash berukuran tetap.
D.
METODE ALOKASI
Metode alokasi berhubungan dengan bagaimana
blok-blok pada disk dialokasikan untuk file. Terdapat beberapa metode alokasi
antara lain alokasi berurutan (contiguous allocation), alokasi
berhubungan (linked allocation) dan alokasi berindeks (indexed
allocation).
1)
Alokasi Berurutan (Contiguous Allocation)
Pada alokasi berurutan, setiap file menempati
sekumpulan blok yang berurutan pada disk (Gambar 1.5). Model ini sangat
sederhana karena hanya membutuhkan lokasi awal (block #) dan panjang (jumlah
blok). Akses pada blok disk dilakukan secara random dan memakan banyak ruang
(permasalahan dynamic storage-allocation). File yang disimpan secara berurutan
tidak dapat berkembang.
Gambar
1.5 : Alokasi Berurutan
Beberapa sistem file yang baru (misalnya Veritas
File System) menggunakan skema alokasi berurutan yang dimodifikasi. File sistem
Extent-based mengalokasikan blok pada disk secara berkembang (extent).
Extent adalah blok berurutan pada disk. Extent dialokasikan
untuk alokasi file. Sebuah file terdiri dari satu atau lebih extent.
2)
Alokasi Berhubungan (Linked Allocation)
Pada alokasi berhubungan, setiap file adalah
sebuah linked list dari blok-blok terpisah pada disk (Gambar 1.6). Pada setiap
blok terdapat satu pointer yang menunjuk ke blok lain
block
= pointer
Gambar
1.6 : Alokasi Berhubungan
Alokasi
berhubungan mempunyai bentuk yang sederhana, hanya memerlukan alamat awal.
Sistem manajemen ruang bebas pada alokasi berhubungan tidak memakan banyak
ruang. Model ini tidak menggunakan random access. Blok yang diakses adalah blok
ke-Q pada rantai link dari blok pada file. Perpindahan ke blok = R +
1. Contoh sistem file yang menggunakan alokasi berhubungan adalah
file-allocation table (FAT) yang digunakan MS-DOS dan OS/2. Bentuk file
allocation tabel dapat dilihat pada Gambar 1.7.
Gambar
1.7 : File Allocation Table
3)
Alokasi Berindeks (Indexed Allocation)
Pada alokasi berindeks, terdapat satu blok yang
berisi pointer ke blok-blok file (Gambar 1.8). Alokasi berindeks berupa bentuk
logika.
Gambar
1.8 : Alokasi Berindeks
Pada alokasi berindeks, memerlukan tabel indeks
yang membawa pointer ke blok-blok file yang lain. Akses dilakukan secara
random. Merupakan akses dinamis tanpa fragmentasi eksternal, tetapi mempunyai
blok indeks yang berlebih. Pemetaan dari logika ke fisik dalam file ukuran
maksimum 256K word dan ukuran blok 512 word hanya memerlukan 1 blok untuk tabel
indeks.
Apabila pemetaan dari logika ke fisik dalam
sebuah file dari ukuran tak hingga (ukuran blok adalah 512 word) maka digunakan
skema menghubungkan blok link dari tabel indeks (ukuran tak terbatas). Untuk
ukuran file maksimum 5123 digunakan skema two-level indeks (Gambar 1.9). Pada
skema two-level indeks terdapat tabel indeks luar dan dalam. Indeks dipetakan
ke tabel indeks luar kemudian dipetakan ke table indeks dalam setelah itu
mengakses blok file yang dimaksud. Sistem operasi UNIX mengimplementasikan
kombinasi alokasi berurutan dan alokasi berindeks seperti pada Gambar 1.10.
Gambar
1.9 : Skema two level indeks
Gambar
1.10 : Alokasi pada UNIX
E.
MANAJEMEN RUANG BEBAS
Daftar ruang bebas biasanya diimplementasikan
sebagai bit map atai bit vector (vektor bit). Setiap blok
direpresentasikan dengan 1 bit. Jika blok bebas, maka bit bernilai 1,
sebaliknya jika blok dialokasikan, bit bernilai 0. Sebagai contoh, misalnya
disk dengan blok 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 17, 18, 25, 26 dan 27 bebas
dan sisanya dialokasikan. Maka bit map dari ruang bebas adalah :
001111001111110001100000011100000…
Perhitungan
nomor blok yang bebas adalah sebagai berikut :
(jumlah
bit per word) * (jumlah nilai-0 word) + offset dari bit 1 pertama Pemetaan bit
biasanya membutuhkan ruang tambahan, misalnya ukuran blok = 212 byte, ukuran
disk = 230 byte (1 gigabyte) maka
n = 230/212 = 218 bit (atau 32K byte)
Dengan menggunakan vector bit mudah untuk
mendapatkan file yang berurutan. Pengembangan dari vector bit adalah dengan
menggunakan linked list (free list) seperti Gambar 1.11. Akan tetapi model ini
tidak mendapatkan ruang berurutan dengan mudah meskipun tidak memakan tempat.
Modifikasi berikutnya melakukan pengelompokan blok yang bebas agar lebih mudah
untuk mendapakan ruang yang berurutan.
F.
EFISIENSI DAN PERFORMANSI
Efisiensi penggunaan ruang disk tergantung pada
alokasi disk dan algoritma directori serta tipe data disimpan pada entry
direktory dari file. Untuk meningkatkan performansi penggunaan ruang disk
digunakan disk cache yang digunakan pada bagian terpisah dari main memory untuk
penggunaan blok yang sering. Selain itu juga menggunakan teknik untuk optimasi
akses berurutan yang disebut free-behind dan read-ahead. – teknik untuk
optimasi akses berurutan. Untuk meningkatkan performansi PC juga dapat
menggunakan bagian tertentu dari memory sebagai virtual disk atau RAM disk.
Gambar 1.11 : Menghubungkan daftar ruang bebas pada disk
G.
PERBAIKAN
Untuk memperbaiki sistem file dilakukan dengan
memeriksa konsistensi dengan cara membandingkan data pada struktur direktori
dengan blok data pada disk dan mencoba memperbaiki inkonsistensi. Selain itu
juga dapat menggunakan program sistem untuk back up data dari disk ke
penyimpan lain (floppy disk, magnetic tape). Perbaikan akan Recover
menghilangkan file atau disk dengan restoring data dari backup.
H.
SISTEM FILE LOG STRUCTURED
Sistem file Log structured (atau journaling)
menyhimpan semua update ke file sistem sebagai transaksi. Semua transaksi ditulis ke log. Sebuah transaksi dijadikan committed jika ditulis ke log. Tetapi, kemngkinan sistem file
tidak diupdate.
Transaksi pada log ditulis secara tidak beraturan
ke sistem file. Jika sistem file dimodifikasi, transaksi dihapus dari log. Jika
file bertabrakan, semua transaksi yang tersisa pada log harus dibentuk.
I.
SUN NETWORK FILE SYSTEM (NFS)
Network File
System adalah implementasi dan
spesifikasi dari sistem perangkat lunak untuk mengakses remote files melalui
LAN (atau WAN). NFS merupakan bagian dari Solaris and SunOS yang berjalan pada
Sun workstations menggunakan unreliable datagram protocol (UDP/IP) protocol dan
Ethernet.
Workstation yang saling berhubungan dipandang
sebagai mesin independent dengan file sistem yang independent, memungkinkan
sharing diantara sistem file secara transparent. Directory remote di-mount ke
directory sistem file lokal. Mounted directory terlihat sebagai subtree dari
sistem file lokal, mengubah subtree secara descending dari directory lokal.
Spesifikasi dari remote directory untuk operasi mount tidak transparant; host
name dari remote directory harus disediakan. File pada remote directory dapat
diakses secara transparant. Subyek ke akreditasi akses yang benar, sembarang
sistem file (atau directory dalam sistem file), dapat di-mount secara remote ke
top dari sembaran directory lokal.
NFS didesain untuk operasi pada lingkungan
heterogen dari mesin, SO dan arsitektur network yang berbeda; spesifikasi NFS
tidak tergantung dari media tersebut. Ketidak tergantungan dilakukan melalui
penggunaan RPC pada bagian tertinggi dari protokol External Data Representation
(XDR) yang digunakan antara 2 antarmuka independent. Spesifikasi NFS berbeda
antara layanan tersedian dengan mekanisme mount dan layanan akses file remote
actual.
Misalnya terdapat tiga file sistem yang independent
seperti Gambar 1.12. Kemudian dilakukan mount dengan NFS maka file sistem hasil
seperti Gambar 1.13.
Gambar 1.12 : Tiga system file yang independen
Gambar
1.13 : Mounting pada NFS