Back to IF2130 Sistem Operasi

Topic

Questions/Cues

  • Arsitektur Berlapis Sistem Berkas?
  • Struktur Data di Disk vs. di Memori
  • Peran Virtual File System (VFS)
  • Opsi Implementasi Direktori
  • Alokasi Berurutan (Contiguous)
  • Alokasi Tertaut (Linked)
  • Alokasi Terindeks (Indexed)
  • Perbandingan Metode Alokasi

Arsitektur Sistem Berkas Berlapis (Layered File System)

Sistem berkas modern diorganisir dalam lapisan-lapisan untuk memisahkan fungsionalitas dan mengurangi kompleksitas. Setiap lapisan menggunakan layanan dari lapisan di bawahnya.

Urutan Lapisan

  1. Program Aplikasi: Pengguna berinteraksi melalui program.
  2. Sistem Berkas Logis: Mengelola metadata, seperti struktur direktori dan File Control Block (FCB)/inode. Ini adalah pandangan pengguna terhadap sistem berkas.
  3. Modul Organisasi Berkas: Bertanggung jawab untuk memetakan blok logis berkas ke blok fisik di disk. Juga mengelola alokasi ruang kosong.
  4. Sistem Berkas Dasar: Mengirimkan perintah generik (misalnya, “baca blok X”) ke device driver yang sesuai. Mengelola caching dan buffering.
  5. Kontrol I/O: Berisi device driver spesifik perangkat dan interrupt handler yang berkomunikasi langsung dengan perangkat keras.
  6. Perangkat: Perangkat keras penyimpanan fisik (HDD, NVM/SSD).

Struktur ini mempermudah pengembangan (kode tidak duplikatif) tetapi dapat menambah overhead kinerja karena setiap permintaan harus melewati beberapa lapisan.

Struktur Data Filesystem

Sistem berkas memerlukan struktur data baik di penyimpanan permanen (disk) maupun di memori utama (RAM) untuk dapat beroperasi.

Struktur di Disk (On-Storage):

  • Boot Control Block: Blok pertama volume, berisi informasi untuk mem-boot sistem operasi dari volume tersebut.
  • Volume Control Block (Superblock): Berisi detail volume seperti total jumlah blok, ukuran blok, dan jumlah blok kosong.
  • Struktur Direktori: Mengorganisir berkas dengan memetakan nama ke pengenal (misalnya, nomor inode).
  • File Control Block (FCB): Satu FCB per berkas, berisi semua atribut berkas seperti izin, ukuran, dan lokasi blok data.

Struktur di Memori (In-Memory):

  • Ini adalah salinan atau cache dari struktur di disk untuk mempercepat akses.
  • Mount Table: Melacak semua volume sistem berkas yang sedang terpasang (di-mount).
  • Directory-Structure Cache: Menyimpan informasi direktori yang baru diakses untuk mempercepat pencarian berkas.
  • System-Wide Open-File Table: Berisi salinan FCB dari setiap berkas yang sedang dibuka di seluruh sistem.
  • Per-Process Open-File Table: Melacak berkas yang dibuka oleh setiap proses individu.
  • Buffers: Menampung blok data yang sedang ditransfer dari atau ke disk.

Virtual Filesystem (VFS)

Tujuan: Sebuah lapisan abstraksi yang memungkinkan sistem operasi mendukung berbagai jenis sistem berkas (misalnya, ext4, NTFS, NFS) secara bersamaan melalui antarmuka tunggal. Analogi: VFS berfungsi seperti adaptor universal. Program aplikasi cukup melakukan panggilan sistem standar (seperti open(), read()), dan VFS akan menerjemahkan panggilan tersebut ke operasi spesifik yang sesuai dengan sistem berkas target (lokal, jaringan, dll.). Ini memisahkan operasi generik dari implementasi konkretnya, membuat sistem menjadi sangat modular dan dapat diperluas.

Implementasi Direktori

Metode untuk menyimpan pemetaan nama berkas ke datanya. Pilihan metode ini sangat mempengaruhi kinerja.

Linear List: Cara paling sederhana, berupa daftar nama berkas dan penunjuk ke datanya.

  • Kelebihan: Mudah diprogram.
  • Kekurangan: Lambat. Untuk menemukan berkas, sistem harus melakukan pencarian linier dari awal daftar.

Hash Table: Menggunakan fungsi hash pada nama berkas untuk langsung menunjuk ke entri di dalam daftar.

  • Kelebihan: Pencarian sangat cepat (hampir instan).
  • Kekurangan: Perlu penanganan collision (dua nama menghasilkan hash yang sama) dan ukuran tabel yang biasanya tetap.

Alokasi Berkas

Contiguous Allocation:

  • Konsep: Setiap berkas menempati satu blok blok yang berurutan (berdampingan) di disk.
  • Direktori: Hanya perlu menyimpan alamat blok awal dan panjang berkas.
  • Kelebihan: Sangat cepat untuk akses sekuensial dan acak (kepala disk bergerak minimal).
  • Kekurangan:
    • Fragmentasi Eksternal: Muncul celah-celah kosong yang tidak terpakai di antara berkas. Celah ini mungkin terlalu kecil untuk berkas baru, sehingga ruang terbuang.
    • Sulit bagi berkas untuk tumbuh setelah dibuat.

Linked Allocation

  • Konsep: Setiap berkas adalah rantai (linked list) dari blok-blok disk yang bisa tersebar di mana saja. Setiap blok berisi penunjuk ke alamat blok berikutnya.
  • Direktori: Hanya menyimpan alamat blok pertama.
  • Kelebihan: Tidak ada fragmentasi eksternal, dan berkas dapat tumbuh dengan mudah.
  • Kekurangan:
    • Sangat lambat untuk akses acak. Untuk mencapai blok ke-N, harus membaca N-1 blok sebelumnya.
    • Overhead ruang untuk menyimpan penunjuk di setiap blok.
    • Tidak andal: Satu penunjuk yang rusak dapat menyebabkan seluruh sisa berkas hilang.
    • Variasi: FAT (File-Allocation Table) memindahkan semua penunjuk ke satu tabel terpusat di awal volume, mengatasi masalah akses acak.

Indexed Allocation

  • Konsep: Mengumpulkan semua penunjuk ke blok data sebuah berkas ke dalam satu blok khusus yang disebut blok indeks.
  • Direktori: Menyimpan alamat dari blok indeks ini.
  • Kelebihan: Mendukung akses acak yang cepat (cukup baca blok indeks untuk menemukan blok data mana pun) dan tidak memiliki fragmentasi eksternal.
  • Kekurangan:
    • Overhead ruang: Boros jika berkas sangat kecil, karena tetap membutuhkan satu blok indeks penuh.
    • Batasan Ukuran Berkas: Bagaimana jika berkas sangat besar sehingga penunjuknya tidak muat dalam satu blok indeks? Solusinya adalah skema gabungan (seperti pada inode UNIX) yang menggunakan penunjuk langsung, tidak langsung, ganda, dan tiga kali lipat.

Perbandingan Kinerja Alokasi:

  • Contiguous: Memerlukan satu akses per blok (jika alamat awal di memori).
  • Linked: Memerlukan satu akses untuk berurutan tetapi i akses untuk acak ke blok ke-i.
  • Indexed: Memerlukan satu akses jika blok indeks di memori, atau lebih banyak jika tidak. Beberapa sistem memilih metode berdasarkan jenis akses yang dideklarasikan berkas. Penggunaan cluster meningkatkan throughput HDD dan mengurangi overhead manajemen blok, tetapi meningkatkan internal fragmentation. Perangkat NVM memiliki karakteristik kinerja yang berbeda (tidak ada seek head).**

Summary

Implementasi sistem berkas mengandalkan arsitektur berlapis untuk memisahkan logika dari detail fisik, memanfaatkan struktur data di disk (untuk persistensi) dan di memori (untuk kecepatan), serta diabstraksi oleh Virtual File System (VFS) agar dapat mendukung berbagai tipe FS secara seragam. Kinerja dan efisiensi sistem sangat ditentukan oleh pilihan metode implementasi direktori (seperti linear list vs. hash table) dan terutama oleh metode alokasi blok disk untuk berkas (yaitu contiguous, linked, atau indexed), di mana masing-masing metode menawarkan trade-off yang berbeda antara kecepatan akses, fragmentasi ruang, dan overhead manajemen.