MAKALAH SISTEM OPERASI (IMPLEMENTASI SISTEM FILE)
DI SUSUN OLEH:
KELOMPOK 10: Nama Anggota:
1. Muhammad Zulfan
Azhari (090412026) 2. Nurul Nova Rina (090412050)
Kelas Jurusan Prodi
: G2 : T. Elektro : T. Informatika
POLITEKNIK NEGERI LHOKSUEMAWE JURUSAN TEKNIK ELEKTRO PRODI TEKNIK INFORMATIKA 2011
KATA PENGANTAR Puji syukur mari sama-sama kita panjatkan kehadirat Allah swt yang telah memberi kita kesempatan dan kesehatan kepada kita semua sehingga penulis dapat menyelesaikan sebuah makalah yang sangat sederhana ini dengan judul Implementasi Sistem File. Selanjutnya salawat dan salam kita limpahkan kepada junjungan kita Nabi Muhammad saw yang telah membawa kita dari alam kebodohan ke alam yang penuh dengan ilmu pengetahuan dan rahmat seperti yang dapat kita rasakan sekarang ini. Penulis menyadari sepenuhnya bahwa makalah ini masih jauh dari kesempurnaan, baik dari segi tata bahasa maupun dari segi-segi lainnya, oleh sebab itu penulis mengharapkan saran dan kritikannya yang bersifat positif dan membangun dari semua pihak. Akhirnya semoga Allah swt memberikan yang layak atas seluruh jasa dan kebijakan yang penulis terima. Semoga hasil karya ini bermanfaat bagi penulis sendiri maupun bagi pihak yang lain.
Wassalam
Implementasi Sistem File PENDAHULUAN Salah satu bagian yang sangat tampak pada sebuah sistem operasi adalah sistem file. Banyak program yang membaca atau menulis setidaknya pada sebuah file. Bagi kebanyakan pengguna, performance dari sebuah sistem operasi sangat ditentukan oleh interface, structure, dan reliability dari sistem file-nya. Hal ini disebabkan oleh kemampuan yang dimiliki sistem file dalam menyediakan mekanisme penyimpanan secara online dan pengaksesan isi file, yaitu data atau program. Sistem file terdapat pada secondary storage yang dirancang agar mampu menampung data dalam jumlah yang besar secara permanen. Setiap file yang telah kita simpan, dalam implementasinya membutuhkan sebuah struktur direktori untuk mengaksesnya kembali. Sistem operasi harus mampu mengimplementasikan sistem file dengan berbagai tipe yang berbeda. Pada bab ini akan dibahas bagaimana penanganan yang dilakukan oleh sistem operasi. Bab ini juga membahas mengenai implementasi sistem file, implementasi direktori, serta beberapa lapisan yang ada di file system dan virtual file system.
STRUKTUR SISTEM FILE Disk merupakan tempat penyimpanan sekunder dimana sistem file disimpan. Ada dua karakteristik dalam penyimpanan banyak file, 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 file secara random maupun sequential. Sistem operasi menyediakan satu atau lebih sistem file untuk menyimpan dan mengambil data dengan mudah. Struktur file itu sendiri terdiri dari beberapa layer. Strukturnya dapat dilihat pada Gambar 1, “Layered File System”.
Gambar 1. Layered File System Setiap level menggunakan feature-feature dari lapisan di bawahnya untuk digunakan sebagai feature baru bagi lapisan di atasnya. Level terbawah adalah I/O 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 I/O 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 file yang mengetahui tentang file, blokblok logis, dan blok-blok fisik. Dengan mengetahui tipe dan lokasi dari file 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 file, kecuali data sebenarnya (isi dari file). Lapisan ini juga mengatur struktur direktori untuk menyediakan informasi yang dibutuhkan file organization modul. Struktur dari sebuah file ditentukan oleh lapisan ini dengan adanya file control block.
FILE CONTROL BLOCK Pada disk, sistem file bisa mengandung informasi mengenai bagaimana cara mem-boot sistem operasi, jumlah total blok, jumlah dan lokasi dari free blocks, struktur direktori dan file 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 file. Pada UFS, struktur direktori ini meliputi nama file serta jumlah inode yang terkait dan disimpan dalam tabel master file.
•
Per-file FCB Mengandung semua informasi tentang file yaitu meliputi file permission, kepemilikan, ukuran, dan lokasi dari blok data.
Informasi yang ada di dalam memori digunakan untuk pengaturan sistem file 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 file baru, program aplikasi memanggil logical file system karena logical file system mengetahui format dari struktur direktori. Kemudian, FCB yang baru dialokasikan dan sistem membaca direktori yang dituju ke memori, mengubahnya dengan nama file, dan FCB yang baru menulisnya ke dalam disk. Contoh struktur FCB, bisa dilihat pada Gambar 16.2, “File Control Block”
Gambar 2. File Control Block Beberapa sistem operasi termasuk UNIX, memperlakukan file sama seperti direktori. Sistem operasi yang lain, seperti Windows NT, mengimplementasikan system call yang terpisah untuk file dan direktori, direktori diperlakukan sebagai objek yang berbeda dari file. Pada tahap selanjutnya, logical file system memanggil file organization module untuk memetakan direktori M/K ke disk-block number yang dikirimkan ke sistem file dasar dan sistem kendali M/K. Setelah file berhasil dibuat, file tersebut dapat digunakan untuk operasi M/K. Pertama, tentu saja file tersebut harus dibuka terlebih dahulu. Perintah open() mengirim nama file ke sistem file. System call open() mencari system-wide open-file table untuk melihat apakah file 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 file sedang dibuka, nama file tersebut dicari dalam struktur direktori. Setelah nama file ditemukan, FCB dari file 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 file dilakukan oleh pointer dari entry ini. Selama file tersebut belum ditutup, semua operasi dari file dilakukan pada open-file table. Ketika sebuah file ditutup, entry dari per-process table dihapus, dan jumlah entry dari system-wide open-file table dikurangi. Ketika semua pengguna yang menggunakan file menutup file 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 3. “Fungsi open Sebuah File ” mengilustrasikan pembukaan sebuah file.
Gambar 3. Fungsi open Sebuah File Sedangkan pada Gambar 4, “Reading a File” mengilustrasikan pembacaan sebuah file.
Gambar 4. Reading a File
VIRTUAL FILE SYSTEM (VFS)
Sistem operasi modern harus mampu mengimplementasikan berbagai sistem file 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 file, dan juga terdapat sebuah fungsi untuk setiap operasi yang dimiliki sistem file. Sehingga, untuk setiap system call seperti fungsi read(), write(), open(), dan lainnya, kernel akan mensubstitusikannya menjadi actual function yang dimiliki oleh setiap sitem file dengan berbagai tipe. VFS menggunakan konsep object oriented dalam mengimplementasikan sistem file. Di dalam VFS terdapat sebuah file yang merepresentasikan seluruh tipe sistem file yang ada, file ini dinamakan common file model. File 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 file 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 file dengan system call yang mengaksesnya. Oleh karena itu, dalam mengimplementasikan sistem file, terdapat tiga layer utama, seperti pada Gambar 5, “Virtual File System Layer”.
Gambar 5. 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 file yang disebut vnode, yang memiliki numerical designator yang unik untuk setiap network file. Lapisan yang ketiga adalah sistem file dengan berbagai tipe. Secara umum, terdapat tiga macam tipe sistem file, yaitu: 1. Disk-based file system. Sistem file 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 file ini terdapat di network, misalnya NFS. 3. Special file system. Sistem file ini tidak terdapat di disk space, baik lokal maupun network, misalnya /proc file system.
IMPLEMENTASI SISTEM FILE
File berisi sekumpulan blok. Sistem manajemen file bertanggung jawab untuk alokasi blokblok disk ke file. Dua hal penting yang harus ditangani adalah pencatatan ruang yang dialokasikan untuk file, pencatatan ruang bebas yang tersedia di disk. Sistem file meliputi alokasi file, pencatatan ruang disk, shared file, kehandalan system file, serta kinerja sistem file. Masalah pokok dalam alokasi file adalah pencatatan blok-blok yang digunakan file. Beragam metode dapat digunakan, diantaranya alokasi berturutan/kontigu (contigous allocation). Teknik ini merupakan skema alokasi paling sederhana, yaitu menyimpan file sebagai blokblok data berturutan (kontigu) di disk. Keunggulannya adalah sederhana dalam implementasi karena pencatatan dimana blok-blok file berada direduksi menjadi hanya mengingat alamat awal file dan panjang file, yaitu jumlah blok dari file. Kinerjanya luar biasa bagus Karena seluruh file dapat dibaca dari disk dengan satu operasi. Tak ada metode alokasi lain yang dapat menandingi kinerja pengaksesan. Keunggulan ini diperoleh karena rekord-rekord yang secara logik berturutan biasanya juga saling berdekatan secara fisik. Kelemahannya adalah Hanya bila ukuran maksimum diketahui pada saat file diciptakan. Layak digunakan kecuali bila ukuran maksimum diketahui pada saat file diciptakan. Tanpa informasi itu, sistem operasi tidak mengetahui berapa banyak ruang disk yang digunakan untuk suatu file. Kelemahan lain adalah Terjadi fragmentasi disk. Fragmentasi disk dapat dihasilkan metode alokasi ini, ruang yang disiakan seharusnya dapat digunakan. Metode kedua adalah alokasi blok-blok file sebagai senarai berkait yang mencatat blok-blok file dengan senarai berkait blok-blok didisk. Word pertama di blok data sebagai pointer ke blok berikutnya, sisanya untuk menyimpan data. Skema ini disebut rantai blok (block chaining) karena blok pertama merantai blok kedua, blok kedua merantai blok ketiga, dan seterusnya. Blok sebelumnya merantai blok berikutnya. Direktori mencatat blok pertama file. Keunggulan metode ini adalah Setiap blok di disk dapat digunakan. Tak ada ruang yang hilang karena fragmentasi eksternal. Isian/elemen direktori cukup menyimpan alamat blok pertama file.
Kelemahannya adalah Pembacaan sekuen cukup merepotkan karena harus menelusuri blok satu per satu. Blok data tidak lagi berukuran 2k, karena pointer memerlukan beberapa byte. Masalah ini tidak fatal. Ukuran yang janggal (bukan berukuran 2k) kurang efisien karena program membaca dan menulis blok tidak dapat memanfaatkan sifat bilangan biner. Metode ketiga adalah alokasi blok-blok sebagai senarai berkait menggunakan indeks (FAT). Kelemahan alokasi senarai berkait dieliminasi dengna menghilangkan pointer di blok dan meletakkan sebagai tabel tersendiri di memori. Seluruh blok tersedia untuk data. Skema ini disebut block oriented file mapping. Tabel yang mencatat nomor blok data disebut FAT (File Allocation Table). Keunggulan metode ini adalah pengaksesan acak lebih mudah. Meski masih harus menelusuri rantai berkait untuk menemukan lokasi blok file, rantai blok seluruhnya di memori sehingga dapat dilakukan secara cepat tanpa membuat pengaksesan ke disk. Direktori cukup menyimpan bilangan bulat nomor blok awal. Blok awal ini digunakan untuk menemukan seluruh blok, tak peduli jumlah blok file itu. Direktori menunjuk blok pertama file dan FAT menunjukkan blok-blok file berikutnya. Kelemahannya adalah seluruh tabel (FAT) harus disimpan di memori. Jika penyimpanan berukuran besar mengakibatkan tabel berukuran besar dan harus ditaruh di memori utama meskipun hanya satu file yang dibuka. MS-DOS menggunakan metode ini.
IMPLEMENTASI DIREKTORI Isian direktori menyediakan informasi untuk menemukan blok-blok disk. Informasi isian direktori bergantung sistem pencatatan blok-blok yang digunakan. Informasi ini dapat berupa alamat disk dari seluruh file, nomor blok pertama atau i-node. Implementasi direktori tebagi dua jenis yaitu implementasi direktori linier dan implementasi direktori hash.
a. Implementasi Direktori Linier Pemilihan algoritma untuk pencarian sebuah direktori merupakan salah satu penentu tingkat efisiensi dan performance suatu sistem file. Salah satu algoritma itu adalah implementasi direktori linier. Algoritma ini merupakan algoritma yang paling sederhana dalam pembuatan program yang mengimplementasikan linier list dari nama-nama file yang memiliki pointer ke blok-blok data. Namun, algoritma ini tidak efisien apabila digunakan pada suatu direktori yang memiliki jumlah file yang sangat banyak karena proses eksekusi file membutuhkan waktu yang lama. Misalnya, untuk membuat file, kita
harus memastikan bahwa dalam direktori tidak ada file yang mempunyai nama yang sama. Kemudian, file yang baru tersebut ditambahkan pada akhir direktori tersebut. Untuk menghapus sebuah file, kita mencari terlebih dahulu nama file yang hendak dihapus dalam direktori, kemudian membebaskan space yang dialokasikan pada file tersebut. Apabila kita menginginkan untuk menggunakan kembali entry file tersebut, ada beberapa alternatif yang bisa kita gunakan, yaitu: 1. kita bisa menandai file tersebut misalnya melalui pemberian nama file yang khusus pada file tersebut. 2. Kedua, kita bisa menempatkan file tersebut pada sebuah list of free directory entries. 3. alternatif yang ketiga adalah dengan menyalin entry terakhir dalam direktori ke suatu freed location. Salah satu kerugian yang ditimbulkan dalam penggunaan algoritma ini adalah pencarian file dilakukan secara linier search. Oleh karena itu, banyak sistem operasi yang mengimplementasikan sebuah software cache yang menyimpan informasi tentang direktori yang paling sering digunakan, sehingga pengaksesan ke disk bisa dikurangi. Filefile yang terurut dapat mengurangi rata-rata waktu pencarian karena dilakukan secara binary search. Namun, untuk menjaga agar file-file selalu dalam keadaan terurut, pembuatan maupun penghapusan file akan lebih rumit. Struktur data tree seperti B-tree bisa digunakan untuk mengatasi masalah ini. a. Implementasi Direktori Hash Pada implementasi ini, linier list tetap digunakan untuk menyimpan direktori, hanya saja ada tambahan berupa struktur data hash. Prosesnya yaitu hash table mengambil nilai yang dihitung dari nama file dan mengembalikan sebuah pointer ke nama file yang ada di linier list. Oleh karena itu, waktu pencarian file bisa dikurangi. Akan tetapi, ada suatu keadaan yang menyebabkan terjadinya peristiwa collisions, yaitu suatu kondisi di mana terdapat dua file yang memiliki nilai hash yang sama, sehingga menempati lokasi yang sama. Solusi yang dipakai untuk mengatasi hal tersebut yaitu dengan menggunakan chainedoverflow hash table, yaitu setiap hash table mempunyai linked list dari nilai individual dan crash dapat diatasi dengan menambah tempat pada linked list tersebut. Efek samping dari penambahan chained-overflow tersebut adalah dapat memperlambat pencarian. Ada beberapa kelemahan dari implementasi direktori hash, yaitu ukurannya yang tetap dan adanya ketergantungan fungsi hash dengan ukuran hash table. Sebagai contoh, misalnya kita membuat sebuah linear-probing hash table yang memiliki 32 entry. Sebuah
fungsi hash dibutuhkan untuk mengubah nama file menjadi bilangan bulat dari 0 s.d. 31, misalnya dengan menggunakan fungsi modulo 32. Jika kita ingin untuk menambahkan sebuah file yang harus diletakkan pada lokasi yang ke-33, kita harus memperbesar ukuran dari hash table tersebut, sehingga diperlukan sebuah fungsi hash baru untuk disesuaikan dengan ukuran hash table tersebut. Oleh karena itu, file-file yang sebelumnya sudah ditempatkan di suatu lokasi pada hash table yang lama harus dicari tempat yang bersesuaian dengan menggunakan fungsi hash yang baru.
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). a. Alokasi Berurutan (Contiguous Allocation) Pada alokasi berurutan, setiap file menempati sekumpulan blok yang berurutan pada disk (Gambar 6). 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 6. 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. b. Alokasi Berhubungan (Linked Allocation) Pada alokasi berhubungan, setiap file adalah sebuah linked list dari blok-blok terpisah pada disk (Gambar 7). Pada setiap blok terdapat satu pointer yang menunjuk ke blok lain.
Gambar 7. 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 ystem file yang menggunakan alokasi berhubungan adalah file-allocation table (FAT) yang digunaka MSDOS dan OS/2. Bentuk file allocation tabel dapat dilihat pada Gambar 8.
Gambar 8. File Allocation Table c. Alokasi Berindeks (Indexed Allocation) Pada alokasi berindeks, terdapat satu blok yang berisi pointer ke blok-blok file (Gambar 9). Alokasi berindeks berupa bentuk logika.
Gambar 9. 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 twolevel indeks (Gambar 10). Pada skema two-level indeks terdapat tabel indeks luar dan dalam. Indeks dipetakan ke tabel indeks luar kemudian dipetakan ke tabel indeks dalam setelah
itu
mengakses
blok
file
yang
dimaksud.
Sistem
operasi
UNIX
mengimplementasikan kombinasi alokasi berurutan dan alokasi berindeks seperti pada Gambar 11.
Gambar 10. Skema two level indeks
Gambar 11. Alokasi Pada UNIX
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 12. 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.
EFISIENSI DAN PERFOMANSI 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 12 : Menghubungkan daftar ruang bebas pada disk
RECOVERY 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.
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.
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 transparan. 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 tersedia dengan mekanisme mount dan layanan akses file remote actual. Misalnya terdapat tiga file sistem yang independent seperti Gambar 13. Kemudian dilakukan mount dengan NFS maka file sistem hasil seperti Gambar 14.
Gambar 13 : Tiga sistem file yang independen
Gambar 10-12 : Mounting pada NFS
RANGKUMAN Untuk memberikan akses yang efisien ke disk, sistem operasi mengizinkan satu atau lebih sistem file yang digunakan untuk menyimpan, meletakkan, dan mengambil data dengan mudah. Sistem file tersebut terdiri dari beberapa lapisan yang mana setiap lapisan akan menyediakan fitur-fitur untuk dipergunakan pada lapisan di atasnya. Lapisan tersebut (dari tingkat yang terbawah) antara lain device driver, I/O control, basic file system, fileorganization module, logical file system, dan application program. Berbagai operasi yang dilakukan pada sistem file, seperti membuka maupun membaca file, sangat membutuhkan informasi tentang file yang hendak digunakan. Semua informasi tentang file tersebut didapatkan pada file control block.
Dalam pengimplementasiannya, sistem operasi harus mampu mendukung berbagai jenis sistem file. Teknik yang digunakan oleh sistem operasi untuk mendukung kemampuan ini disebut Virtual File System (VFS). Konsep dalam mengimplementasikan VFS ini adalah konsep object oriented yaitu menggunakan sebuah file yang dapat merepresentasikan seluruh tipe file. File ini disebut common file model. Oleh karena itu, digunakanlah tiga lapisan utama dalam mengimplementasikan sistem file, diantaranya file system interface, VFS interface, dan file system types. Algoritma untuk mencari file dalam sebuah direktori juga digunakan sebagai parameter performance dari sebuah sistem operasi. Ada dua algoritma yang sering digunakan dalam pengimplementasian direktori, yaitu implementasi direktori linier dan hash. Masing-masing bentuk implementasi ini memiliki kelebihan dan kekurangan tersendiri. Untuk implementasi linier, kelebihannya adalah sederhana dalam pembuatan programnya dan kekurangannya adalah lamanya mengakses file apabila terdapat banyak sekali file dalam sebuah direktori. Sedangkan pada implementasi direktori hash, kecepatan pencarian file lebih cepat dibandingkan dengan pencarian dalam direktori linier dan kekurangannya adalah ukuran tabel yang statis, sehingga perlu dilakukan pengubahan fungsi hash apabila ingin mengubah ukuran tabel hash.