Rabu, 27 Maret 2013

Virtual File System

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 16.5. Virtual File System Layer
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.

Kamis, 21 Maret 2013

Operasi Berkas


2Sebuah berkas adalah jenis data abstrak. Untuk mendefinisikan berkas secara tepat, kita perlu melihat operasi yang dapat dilakukan pada berkas tersebut. Sistem operasi menyediakan system calls untuk membuat, membaca, menulis, mencari, menghapus, dan sebagainya. Berikut dapat kita lihat apa yang harus dilakukan sistem operasi pada keenam operasi dasar pada berkas.
•    Membuat sebuah berkas: Ada dua cara dalam membuat berkas. Pertama, tempat baru di dalam sistem berkas harus di alokasikan untuk berkas yang akan dibuat. Kedua, sebuah direktori harus mempersiapkan tempat untuk berkas baru, kemudian direktori tersebut akan mencatat nama berkas dan lokasinya pada sistem berkas.
•    Menulis pada sebuah berkas: Untuk menulis pada berkas, kita menggunakan system call beserta nama berkas yang akan ditulisi dan informasi apa yang akan ditulis pada berkas.  Ketika diberi nama berkas, sistem mencari ke direktori untuk mendapatkan lokasi berkas. Sistem juga harus menyimpan penunjuk tulis pada berkas dimana penulisan berikut akan ditempatkan. Penunjuk tulis harus diperbaharui setiap terjadi penulisan pada berkas.
•    Membaca sebuah berkas: Untuk dapat membaca berkas, kita menggunakan system call beserta nama berkas dan di blok memori mana berkas berikutnya diletakkan. Sama seperti menulis, direktori mencari berkas yang akan dibaca, dan sistem menyimpan penunjuk baca pada berkas dimana pembacaan berikutnya akan terjadi. Ketika pembacaan dimulai, penunjuk baca harus diperbaharui.Sehingga secara umum, suatu berkas ketika sedang dibaca atau ditulis, kebanyakan sistem hanya mempunyai satu penunjuk, baca dan tulis menggunakan penunjuk yang sama, hal ini menghemat tempat dan mengurangi kompleksitas sistem.
•    Menempatkan kembali sebuah berkas: Direktori yang bertugas untuk mencari berkas yang bersesuaian, dan mengembalikan lokasi berkas pada saat itu. Menempatkan berkas tidak perlu melibatkan proses I/O. Operasi sering disebut pencarian berkas.
•    Menghapus sebuah berkas: Untuk menghapus berkas kita perlu mencari berkas tersebut  di  dalam  direktori.  Setelah  ditemukan  kita  membebaskan  tempat  yang dipakai   berkas   tersebut   (sehingga   dapat   digunakkan   oleh   berkas   lain)   dan menghapus tempatnya di direktori.
•    Memendekkan berkas: Ada suatu keadaan dimana pengguna menginginkan atribut dari berkas tetap sama tetapi ingin menghapus isi dari berkas tersebut. Fungsi ini mengizinkan semua atribut tetap sama tetapi panjang berkas menjadi nol, hal ini lebih baik dari pada memaksa pengguna untuk menghapus berkas dan membuatnya lagi.
Enam  operasi  dasar  ini  sudah  mencakup  operasi  minimum  yang  di  butuhkan. Operasi umum lainnya adalah menyambung informasi baru di akhir suatu berkas, mengubah nama suatu berkas, dan lain-lain.
Operasi dasar ini kemudian digabung untuk melakukan operasi lainnya. Sebagai contoh misalnya kita menginginkan salinan dari suatu berkas, atau menyalin berkas ke peralatan I/O lainnya seperti printer, dengan cara membuat berkas lalu membaca dari berkas lama dan menulis ke berkas yang baru.
Hampir semua operasi pada berkas melibatkan pencarian berkas pada direktori. Untuk menghindari pencarian yang lama, kebanyakan sistem akan membuka berkas apabila berkas tersebut digunakan secara aktif. Sistem operasi akan menyimpan tabel kecil  yang  berisi  informasi  semua  berkas  yang  dibuka  yang  disebut  ”tabel  berkas terbuka”. Ketika berkas sudah tidak digunakan lagi dan sudah ditutup oleh yang menggunakan, maka sistem operasi mengeluarkan berkas tersebut dari tabel berkas terbuka.
Beberapa sistem terkadang langsung membuka berkas ketika berkas tersebut digunakan dan otomatis menutup berkas tersebut jika program atau pemakainya dimatikan.  Tetapi  pada  sistem  lainnya  terkadang  membutuhkan  pembukaan  berkas secara tersurat dengan system call (open) sebelum berkas dapat digunakan.
Implementasi dari buka dan tutup berkas dalam lingkungan dengan banyak perngguna seperti UNIX, lebih rumit. Dalam sistem seperti itu pengguna yang membuka berkas mungkin lebih dari satu dan pada waktu yang hampir bersamaan. Umumnya sistem operasi menggunakan tabel internal dua level. Ada tabel yang mendata proses mana saja yang membuka berkas tersebut, kemudian tabel tersebut menunjuk ke tabel yang lebih besar yang berisi informasi yang berdiri sendiri seperti lokasi berkas pada disk,   tanggal akses dan ukuran berkas. Biasanya tabel tersebut juga memiliki data berapa banyak proses yang membuka berkas tersebut.
Jadi, pada dasarnya ada beberapa informasi yang terkait dengan pembukaan berkas yaitu:
•    Penunjuk Berkas: Pada sistem yang tidak mengikutkan batas berkas sebagai bagian dari  system  call  baca  dan  tulis,  sistem  tersebut  harus  mengikuti  posisi  dimana terakhir proses baca dan tulis sebagai penunjuk. Penunjuk ini unik untuk setiap operasi pada berkas, maka dari itu harus disimpan terpisah dari atribut berkas yang ada pada disk.
•    Penghitung    berkas   yang    terbuka:    Setelah    berkas    ditutup,    sistem   harus mengosongkan kembali tabel berkas yang dibuka yang digunakan oleh berkas tadi atau tempat di tabel akan habis. Karena mungkin ada beberapa proses yang membuka berkas secara bersamaan dan sistem harus menunggu sampai berkas tersebut ditutup sebelum mengosongkan tempatnya di tabel. Penghitung ini mencatat banyaknya  berkas  yang  telah  dibuka  dan  ditutup,  dan  menjadi  nol  ketika  yang terakhir membaca berkas menutup berkas tersebut barulah sistem dapat mengosongkan tempatnya di tabel.
•    Lokasi  berkas  pada  disk:  Kebanyakan  operasi  pada  berkas  memerlukan  sistem untuk mengubah data yang ada pada berkas. Informasi mengenai lokasi berkas pada disk disimpan di memori agar  menghindari  banyak  pembacaan pada disk untuk setiap operasi.
Beberapa sistem operasi menyediakan fasilitas untuk memetakan berkas ke dalam memori pada sistem memori virtual. Hal tersebut mengizinkan bagian dari berkas ditempatkan pada suatu alamat di memori virtual. Operasi baca dan tulis pada memori dengan alamat tersebut dianggap sebagai operasi baca dan tulis pada berkas yang ada di alamat tersebut. Menutup berkas mengakibatkan semua data yang ada pada alamat memori  tersebut  dikembalikan  ke  disk  dan  dihilangkan  dari  memori  virtual  yang digunakan oleh proses.
Penggunaan Berkas Secara Bersama-sama
Konsistensi semantik adalah parameter yang penting untuk evaluasi sistem berkas yang mendukung penggunaan berkas secara bersama. Hal ini juga merupakan karakterisasi dari sistem yang menspesifikasi semantik dari banyak pengguna yang mengakses berkas secara bersama-sama. Lebih khusus, semantik ini seharusnya dapat menspesifikasi kapan
suatu modifikasi suatu data oleh satu pengguna dapat diketahui oleh pengguna lain.
Terdapat  beberapa  macam  konsistensi  semantik.  Di  bawah  ini  akan  dijelaskan kriteria yang digunakan dalam UNIX.
Berkas sistem UNIX mengikuti konsistensi semantik:
•    Penulisan  ke  berkas  yang  dibuka  oleh  pengguna  dapat  dilihat  langsung  oleh pengguna lain yang sedang mengakses ke berkas yang sama.
•    Terdapat bentuk pembagian dimana pengguna membagi pointer lokasi ke berkas tersebut. Sehingga perubahan pointer satu pengguna akan mempengaruhi semua pengguna sharingnya

Proteksi Berkas


1Saat sebuah informasi disimpan di komputer, kita menginginkan agar informasi tersebut aman dari kerusakan fisik (ketahanan) dan akses yang tidak semestinya (proteksi).
Ketahanan biasanya disediakan dengan duplikasi dari berkas. Banyak komputer yang mempunyai program sistem yang secara otomatis menyalin berkas dari disk ke tape dalam interval tertentu (misalnya sekali dalam sehari, atau seminggu, atau sebulan) untuk menjaga copy -an berkas agar tidak rusak secara tidak disengaja. Sistem berkas dapat rusak karena masalah hardware (seperti error dalam membaca atau menulis), mati listrik, debu, suhu yang ekstrim, atau perusakan dengan sengaja. Bug dalam software sistem berkas juga dapat mengakibatkan isi dari dokumen hilang.
Ketika kita menyimpan informasi dalam sebuah sistem komputer, ada dua hal yang harus menjadi perhatian utama kita. Hal tersebut adalah:
1.   Reabilitas dari sebuah sistem
Maksud dari reabilitas sistem adalah kemampuan sebuah sistem untuk melindungi informasi yangtelah disimpan agar terhindar dari kerusakan, dalam hal ini adalah perlindungan  secara  fisik  pada  sebuah  berkas.  Reabilitas  sistem  dapat  dijaga dengan membuat cadangan dari setiap berkas secaramanual atau pun otomatis, sesuai dengan layanan yang dari sebuah sistem operasi. Reabilitas Sistemakan dibahas lebih lanjut pada Bagian 6.10.
2.   Proteksi (Perlindungan) terhadap sebuah berkas
Perlindungan terhadap berkas dapat dilakukan dengan berbagai macam cara. Pada bagian ini, kita akan membahas secara detil mekanisme yang diterapkan dalam melindungi sebuah berkas.
1. Tipe-tipe akses. Kebutuhan untuk mengamankan berkas berhubungan langsung dengan kemampuan untuk mengakses berkas. Kita bisa menyediakan proteksi secara menyeluruh dengan pelarangan akses. Kita juga dapat menyediakan akses bebas tanpa proteksi. Kedua pendekatan tersebut terlalu ekstrem untuk penggunaan umum, sehingga yang kita butuhkan adalah akses yang terkontrol.
Mekanisme proteksi menyediakan akses yang terkontrol dengan membatasi tipe dari akses terhadap berkas yang dapat dibuat. Akses diizinkan atau tidak tergantung pada beberapa faktor, salah satunya adalah tipe dari akses yang diminta. Beberapa tipe operasi yang bisa dikontrol:
  • Read. membaca dari berkas.
  • Write. menulis atau menulis ulang berkas.
  • Execute. me-load berkas ke memori dan mengeksekusinya..
  • Append. menulis informasi baru di akhir berkas.
  • Delete. menghapus berkas dan mengosongkan spacenya untuk kemungkinan digunakan kembali.
  • List. mendaftar nama dan atribut berkas.
2.  Kontrol akses.  Pendekatan paling umum dalam masalah proteksi adalah untuk membuat akses tergantung pada identitas pengguna. Pengguna yang bervariasi mungkin membutuhkan tipe akses yang berbeda atas suatu berkas atau direktori. Skema yang paling umum untuk mengimplementasikannya adalah dengan mengasosiasikan setiap berkas dan direktori pada sebuah list kontrol akses, yang menspesifikasikan user name dan tipe akses yang diperbolehkan untuk setiap user. Saat seorang pengguna meminta untuk mengakses suatu berkas, sistem operasi akan mengecek daftar akses yang berhubungan dengan berkas tersebut. Apabila pengguna tersebut ada di dalam daftar, maka akses tersebut diizinkan. Jika tidak, terjadi pelanggaran proteksi, dan pengguna tidak akan diizinkan untuk mengakses berkas tersebut.
Masalah utama dengan pendekatan ini adalah panjang dari daftar yang harus dibuat. Tapi dapat dipecahkan dengan cara menggunakan daftar dalam versi yang di- condense. Untuk itu, pengguna dapat diklasifikasikan ke dalam tiga kelas:
  • Owner. pengguna yang membuat berkas tersebut.
  • Group. sekelompok pengguna yang berbagi berkas dan memiliki akses yang sama.
  • Universe. semua pengguna yang lain.
3. Pendekatan lain.  Pendekatan lain dalam masalah proteksi adalah dengan memberikan kata kunci untuk setiap berkas.

Metode Akses

a.      Akses Secara Berurutan
3Ketika digunakan, informasi penyimpanan berkas harus dapat diakses dan dibaca ke dalam memori komputer. Beberapa sistem hanya menyediakan satu metode akses untuk berkas.
Pada sistem yang lain, contohnya IBM, terdapat banyak dukungan metode akses yang berbeda. Masalah pada sistem tersebut adalah memilih yang mana yang tepat untuk digunakan pada satu aplikasi tertentu.
Sequential Access merupakan metode yang paling sederhana. Informasi yang disimpan dalam berkas diproses berdasarkan urutan. Operasi dasar pada suatu berkas adalah tulis dan baca. Operasi baca membaca berkas dan meningkatkan pointer berkas selama di jalur lokasi I/O. Operasi tulis menambahkan ke akhir berkas dan meningkatkan ke akhir berkas yang baru. Metode ini didasarkan pada tape model sebuah berkas, dan dapat bekerja pada kedua jenis device akses (urut mau pun acak).
b.      Akses Langsung
Direct Access merupakan metode yang membiarkan program membaca dan menulis dengan cepat pada berkas yang dibuat dengan fixed-length logical order tanpa adanya urutan. Metode ini sangat berguna untuk mengakses informasi dalam jumlah besar. Biasanya database memerlukan hal seperti ini. Operasi berkas pada metode ini harus dimodifikasi untuk menambahkan nomor blok sebagai parameter.
Pengguna menyediakan nomor blok ke sistem operasi biasanya sebagai nomor blok relatif, yaitu indeks relatif terhadap awal berkas. Penggunaan nomor blok relatif bagi sistem operasi adalah untuk memutuskan lokasi berkas diletakkan dan membantu mencegah pengguna dari pengaksesan suatu bagian sistem berkas yang bukan bagian pengguna tersebut.
c.        Akses Dengan Menggunakan Indeks
Metode ini merupakan hasil dari pengembangan metode direct access. Metode ini memasukkan indeks untuk mengakses berkas. Jadi untuk mendapatkan suatu informasi suatu berkas, kita mencari dahulu di indeks, lalu menggunakan pointer untuk mengakses berkas dan mendapatkan informasi tersebut. Namun metode ini memiliki kekurangan, yaitu apabila berkas-berkas besar, maka indeks berkas tersebut akan semakin besar. Jadi solusinya adalah dengan membuat 2 indeks, indeks primer dan indeks sekunder.
Indeks primer memuat pointer ke indeks sekunder, lalu indeks sekunder menunjuk ke data yang dimaksud.

Struktur Berkas


4Disk 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.
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 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.
Berkas-berkas tertentu harus mempunyai struktur yang dimengerti oleh sistem operasi. Contohnya, sistem operasi mungkin mensyaratkan bahwa sebuah berkas executable harus mempunyai struktur yang spesifik sehingga dapat ditentukan dimana berkas tersebut dapat di-load dari memori dan dimana lokasi dari instruksi pertama. Berkas dapat distruktur dalam beberapa cara. Cara yang pertama adalah sebuah urutan bytes yang tidak terstruktur. Akibatnya sistem operasi tidak tahu atau peduli apa yang ada dalam berkas, yang dilihatnya hanya bytes. Ini menyediakan fleksibilitas yang maksimum. User dapat menaruh apapun yang mereka mau dalam berkas, dan sistem operasi tidak membantu, namun tidak juga menghalangi.
Cara yang kedua adalah dengan record sequence. Dalam model ini semua berkas adalah sebuah urutan dari rekaman-rekaman yang telah ditentukan panjangnya, masing-masing dengan beberapa struktur internal. Artinya bahwa sebuah operasi read membalikkan sebuah rekaman dan operasi write menimpa atau menambahkan suatu rekaman.
Cara yang ketiga, adalah menggunakan sebuah tree. Dalam struktur ini sebuah berkas terdiri dari sebuah tree dari rekaman-rekaman tidak perlu dalam panjang yang sama, tetapi masing-masing memiliki sebuah field key dalam posisi yang telah diterapkan dalam rekaman tersebut. Tree ini di-sort dalam field key dan mengizinkan pencarian yang cepat untuk sebuah key tertentu.
Kita juga dapat menggunakan jenis berkas untuk mengidentifikasi struktur dalam dari berkas. Berkas berupa source dan objek memiliki struktur yang cocok dengan harapan program yang membaca berkas tersebut. Suatu berkas harus memiliki struktur yang dikenali oleh sistem operasi. Sebagai contoh, sistem operasi menginginkan suatu berkas yang dapat dieksekusi memiliki struktur tertentu agar dapat diketahui dimana berkas tersebut  akan  ditempatkan  di  memori  dan  di  mana  letak  instruksi  pertama  berkas tersebut.   Beberapa sistem operasi mengembangkan ide ini sehingga mendukung beberapa struktur berkas, dengan beberapa operasi khusus untuk memanipulasi berkas dengan struktur tersebut.
Kelemahan memiliki dukungan terhadap beberapa struktur berkas adalah: Ukuran dari sistem operasi dapat menjadi besar, jika sistem operasi mendefinisikan lima struktur berkas yang berbeda maka ia perlu menampung kode untuk yang diperlukan untuk mendukung  semuanya.  Setiap  berkas  harus  dapat  menerapkan  salah  satu  struktur berkas  tersebut.  Masalah  akan  timbul  ketika  terdapat  aplikasi  yang  membutuhkan struktur informasi yang tidak didukung oleh sistem operasi tersebut.
Beberapa  sistem  operasi  menerapkan  dan  mendukung  struktur  berkas  sedikit struktur berkas. Pendekatan ini digunakan pada MS-DOS dan UNIX. UNIX menganggap setiap berkas sebagai urutan 8-bit byte, tidak ada interpretasi sistem operasi terhadap dari bit-bit  ini.  Skema tersebut  menawarkan  fleksibilitas  tinggi tetapi  dukungan  yang terbatas. Setiap aplikasi harus menambahkan sendiri kode untuk menerjemahkan berkas masukan ke dalam struktur yang sesuai. Walau bagaimana pun juga sebuah sistem operasi harus memiliki minimal satu struktur berkas yaitu untuk berkas yang dapat dieksekusi sehingga sistem dapat memuat berkas dalam memori dan menjalankannya.
Sangat berguna bagi sistem operasi untuk mendukung struktur berkas yang sering digunakan  karena  akan  menghemat  pekerjaan  pemrogram.  Terlalu  sedikit  struktur berkas yang didukung akan mempersulit pembuatan program, terlalu banyak akan membuat sistem operasi terlalu besar dan pemrogram akan bingung
Lukman Alfasiry © 2008. Design by :vio Templates Sponsored by: gold bola