Selasa, 26 Maret 2013

Virtual File System


Virtual File System

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.
Dentry atau Directory Entry merupakan suatu struktur data yang bertugas sebagai penerjemah dari suatu nama berkas ke inode-nya. Dentry disimpan dalam chace di VFS (dchace). Beberapa informasi yang disimpan dalam dentry adalah name, pointer to inode, pointer to parent dentry, list head of children, chains for lots of lists, dan use count. Beberapa operasi dalam VFS dentry antara lain D_compare, D_delete, dan D_release.
Inode abstraksi VFS untuk berkas. 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.
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 10-1.





Gambar 10-1 : Layersistem 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 10-2.

Gambar 10-2 : File control block

Gambar 10-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 10-4.

Gambar 10-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.



Salah satu mekanisme sistem file virtual pertama di Unix-seperti sistem diperkenalkan oleh Sun Microsystems di SunOS 2.0 pada tahun 1985. Ini memungkinkan sistem Unix untuk mengakses panggilan lokal UFS sistem file dan remote NFS file sistem transparan. Untuk alasan ini, vendor Unix yang berlisensi kode NFS dari Sun sering disalin desain VFS Sun. Sistem file lain bisa terhubung ke dalamnya juga: ada sebuah implementasi dari MS-DOS FAT file system yang dikembangkan di Sun yang dicolokkan ke VFS SunOS, meskipun tidak dikirim sebagai produk sampai SunOS 4.1. Pelaksanaan SunOS adalah dasar dari mekanisme VFS di Rilis V Sistem 4 .
John Heidemann mengembangkan VFS susun bawah SunOS 4.0 untuk eksperimen sistem file Ficus . Desain ini disediakan untuk penggunaan kembali kode antara jenis sistem file yang berbeda namun dengan semantik yang sama (misalnya, sebuah sistem file enkripsi dapat menggunakan kembali semua penamaan dan penyimpanan-manajemen kode sistem file non-enkripsi). Heidemann diadaptasi karya ini untuk digunakan dalam 4.4BSD sebagai bagian dari nya tesis penelitian, keturunan kode ini mendukung implementasi sistem file derivatif BSD modern termasuk Mac OS X .
Lainnya Unix file sistem virtual termasuk Switch File System di System V Release 3 , File System Generik di ULTRIX , dan VFS di Linux . Dalam OS / 2 dan Microsoft Windows , mekanisme sistem file virtual disebut File System Installable .
The Filesystem di Userspace (FUSE) mekanisme memungkinkan userland kode untuk plug ke mekanisme sistem file virtual di Linux, NetBSD , FreeBSD , OpenSolaris , dan Mac OS X.
Pada Microsoft Windows, sistem berkas virtual juga dapat diimplementasikan melalui userland ekstensi namespace Shell , namun, mereka tidak mendukung terendah-tingkat file sistem akses antarmuka pemrograman aplikasi di Windows, sehingga tidak semua aplikasi akan dapat mengakses sistem file yang diimplementasikan sebagai namespace ekstensi. KIO dan gvfs / GIO menyediakan mekanisme serupa di KDE dan GNOME lingkungan desktop (masing-masing), dengan keterbatasan yang sama, meskipun mereka dapat dibuat menggunakan teknik FUSE dan karena itu mengintegrasikan dengan lancar ke dalam sistem.
Single-file sistem file virtual
Terkadang Virtual File System merujuk ke file atau kelompok file (tidak harus di dalam sistem file beton) yang bertindak sebagai wadah dikelola yang harus menyediakan fungsionalitas dari sistem file beton melalui penggunaan perangkat lunak. Contoh kontainer tersebut SolFS atau sistem file tunggal-file virtual dalam emulator seperti PCTask atau disebut WinUAE , Oracle VirtualBox , Microsoft Virtual PC , VMware .
Manfaat utama untuk jenis sistem file adalah bahwa hal itu terpusat dan mudah untuk menghapus. Sebuah sistem file tunggal-file virtual dapat mencakup semua fitur dasar yang diharapkan dari setiap sistem file (virtual atau sebaliknya), tetapi akses ke struktur internal dari sistem file ini sering terbatas pada program-program khusus ditulis untuk memanfaatkan file-tunggal virtual file system (bukan pelaksanaan melalui sopir yang memungkinkan akses universal). Kelemahan lain utama adalah bahwa kinerja relatif rendah bila dibandingkan dengan sistem file virtual. Kinerja rendah sebagian besar karena biaya menyeret file virtual saat data ditulis atau dihapus dari sistem file virtual.
Implementasi tunggal-file filesystem maya
Contoh langsung dari file tunggal sistem file virtual termasuk emulator, seperti PCTask dan WinUAE, yang merangkum tidak hanya data filesystem tapi juga layout disk ditiru. Hal ini membuat mudah untuk mengobati instalasi OS seperti bagian lain dari software-mentransfer dengan removable media atau melalui jaringan.
PCTask



Jumat, 22 Maret 2013

Sistem Berkas


Sistem Berkas

Sistem Berkas

Berkas adalah kumpulan informasi berkait yang diberi nama dan direkam pada penyimpanan sekunder. Dari sudut pandang pengguna, berkas merupakan bagian terkecil dari penyimpanan logis, artinya data tidak dapat ditulis ke penyimpanan sekunder kecuali jika berada di dalam berkas. Biasanya berkas merepresentasikan program (baik source mau pun bentuk objek) dan data. Data dari berkas dapat bersifat numerik, alfabetik, alfanumerik, atau pun biner. Format berkas juga bisa bebas, misalnya berkas teks, atau dapat juga diformat pasti. Secara umum, berkas adalah urutan bit, byte, baris, atau catatan yang didefinisikan oleh pembuat berkas dan pengguna.

A.     Struktus Berkas
Pertimbangan utama dalam perancangan sistem berkas dan seluruh sistem operasi adalah apakah sistem operasi harus mengenali dan mendukung jenis berkas. Jika suatu sistem operasi mengenali jenis dari berkas, maka ia dapat mengoperasikan berkas tersebut.
Teknik yang umum digunakan dalam implementasi jenis berkas adalah dengan menambahkan jenis berkas dalam nama berkas. Nama dibagi dua, nama dan akhiran(ekstensi),yang biasanya dipisahkan dengan karakter titik. Sistem menggunakan akhiran tersebut untuk mengindikasikan jenis berkas dan jenis operasi yang dapat dilakukan pada berkas tersebut. Contoh, hanya berkas yang berakhiran .bat. .exe atau .com yang bisa dijalankan (eksekusi). Program aplikasi juga menggunakan akhiran tersebut untuk mengenali berkas yang dapat dioperasikannya. Beberapa sistem operasi menyertakan dukungan terhadap akhiran tetapi beberapa menyerahkan kepada aplikasi untuk mengatur akhiran berkas yang digunakan, sehingga jenis berkas dapat menjadi petunjuk aplikasi apa yang dapat mengoperasikannya.

Stuktur berkas pada Disk
         Sebuah disk sistem berkas adalah file system yang dirancang untuk menyimpan file pada perangkat penyimpanan data, paling sering sebuah disk drive, yang mungkin secara langsung atau tidak langsung terhubung ke komputer.
         Menempatkan batas dalam berkas dapat menjadi rumit bagi sistem operasi. Sistem disk biasanya memiliki ukuran blok yang sudah ditetapkan dari ukuran sektor. Semua I/O dari disk dilakukan dalam satuan blok dan semua blok (physical record) memiliki ukuran yang sama. Tetapi ukuran dari physical record tidak akan sama dengan ukuran logical record. Ukuran dari logical record bervariasi.
         Sebagai contoh, pada sistem operasi UNIX, semua berkas didefinisikan sebagai kumpulan byte. Setiap byte dialamatkan menurut batasnya dari awal berkas sampai akhir.
         Berkas juga dapat dianggap sebagai urutan dari beberapa blok pada disk.
         Konversi dari logical record ke physical record merupakan masalah perangkat lunak. Tempat pada disk selalu berada pada blok, sehingga beberapa bagian dari blok terakhir yang ditempati berkas dapat terbuang.

B.      Metode Akses Berkas
Berkas menyimpan informasi. Apabila sedang digunakan informasi ini harus diakses dan dibaca melalui memori komputer. Informasi dalam berkas dapat diakses dengan beberapa cara, yaitu:
  1. Akses sekuensial. Akses ini merupakan yang paling sederhana dan paling umum digunakan. Informasi dalam berkas diproses secara berurutan. Sebagai contoh, editor dan kompilator biasanya mengakses berkas dengan cara ini.
  2. Akses langsung (relative access) . Sebuah berkas dibuat dari rekaman-rekaman logical yang panjangnya sudah ditentukan, yang mengizinkan program untuk membaca dan menulis rekaman secara cepat tanpa urutan tertentu.

C.      Proteksi Berkas
Saat 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.

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 namedan 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.

D.     Operasi Berkas
Silberschatz, Galvin dan Gagne mengkategorikan operasi-operasi terhadap direktori sebagai berikut:
a.      Mencari berkas.
Bila pengguna atau sebuah aplikasi ingin melakukan suatu operasi terhadap suatu berkas, tentu berkas tersebut harus dibuka terlebih dahulu. Untuk itu, sebuah direktori harus mencari entri yang bersesuaian dengan file tersebut dengan menelusuri struktur dari direktori yang bersangkutan.
b.      Membuat berkas.
Saat sebuah berkas baru dibuat, maka sebuah entri akan ditambahkan ke direktori.
c.       Menghapus berkas. 
Ketika suatu berkas tidak dibutuhkan lagi, maka berkas tersebut bisa dihapus dari direktori.
d.      Menampilkan isi direktori. 
Menampilkan seluruh atau sebagian daftar berkas-berkas yang ada di direktori dan atribut dari berkas-berkas dalam direktori tersebut (misalnya, information access controltype dan usage information).
e.      Mengubah nama berkas. 
Nama suatu berkas merepresentasikan isi berkas terhadap pengguna. Oleh karena itu, nama berkas harus bisa diubah ketika isi dan kegunaannya sudah tidak sesuai lagi. Mengubah nama suatu berkas memungkinkan berpindahnya posisi berkas di dalam struktur direktori.
f.        Akses sistem berkas. 
Pengguna bisa mengakses setiap direktori dan setiap berkas yang berada dalam struktur direktori.
g.      Update direktori. 
Karena sebagian atribut dari berkas disimpan dalam direktori, maka perubahan yang terjadi terhadap suatu berkas akan berpengaruh terhadap atribut dari berkas yang bersangkutan di direktori tersebut.

Jadi, pada dasarnya ada beberapa informasi yang terkait dengan pembukaanberkas yaitu:

·         Penunjuk Berka: Pada sistem yang tidak mengikutkan batas berkassebagai bagian dari  system  call  baca  da tulis,  siste tersebut  harus mengikuti  posisi  dimana terakhir proses baca dan tulis sebagai penunjuk. Penunjuk ini unik untuk setiap operasi pada berkas, maka dari itu harusdisimpan terpisah dari atribut berkas yang ada pada disk.
·         Penghitung    berkas   yang    terbuk:    Setelah    berkas    ditutup,   sistem   harus mengosongkan kembali tabel berkas yang dibuka yangdigunakan 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 mengosongkantempatnya di tabel. Penghitung ini mencatat banyaknya  berkas  yang  telah dibuka  dan  ditutup,  dan  menjadi  nol  ketika  yang terakhir membaca berkasmenutup berkas tersebut barulah sistem dapat mengosongkan tempatnya di tabel.
·         Lokasi  berka pad dis:  Kebanyakan  operas pad berkas memerluka sistem untuk mengubah data yang ada pada berkas. Informasimengenai lokasi berkas pada disk disimpan di memori agar  menghindari  banyak  pembacaan pada disk untuk setiap operasi.

Beberapa sistem operasi menyediakan fasilitas untuk memetakan berkas kedalam memori pada sistem memori virtual. Hal tersebut mengizinkan bagiandari berkas ditempatkan pada suatu alamat di memori virtual. Operasi baca dantulis pada memori dengan alamat tersebut dianggap sebagai operasi baca dantulis pada berkas yang ada di alamat tersebut. Menutup berkas mengakibatkan semua data yang ada pada alamat memori  tersebut  dikembalika ke  disk  dan  dihilangkan  dari  memori  virtual  yang digunakan oleh proses.