Pengantar Sistem Operasi Komputer part IV


5.9.3. Algoritma Least Recently Used (LRU)
Algoritma LRU akan mengganti halaman yang telah tidak digunakan dalam jangka waktu terlama.
Pertimbangannya yaitu berdasarkan observasi bahwa halaman yang telah sering diakses kemungkinan besar
akan diakses kembali. Kelebihan dari algoritma LRU sama halnya seperti pada algoritma optimal, yaitu tidak
akan mengalami anomali Belady.
Pengimplementasiannya dapat dilakukan dengan dua cara, yaitu dengan menggunakan:
• Pencacah
Cara ini dilakukan dengan menggunakan clock. Setiap halaman memiliki nilai yang pada awalnya
diinisialisasi dengan 0. Ketika mengakses ke suatu halaman baru, nilai pada clock di halaman tersebut akan
ditambah 1. Halaman yang diganti adalah halaman yang memiliki nilai terkecil.
• Stack
Penggunaan implementasi ini dilakukan dengan menggunakan stack yang menandakan halaman-halaman
yang berada di memori. Setiap kali suatu halaman diakses, akan diletakkan di bagian paling atas stack.
Apabila ada halaman yang perlu diganti, maka halaman yang berada di bagian paling bawah stack akan
186Bab 5. Managemen Memori
diganti,sehingga setiap kali halaman baru diakses tidak perlu mencari kembali halaman yang akan diganti.
Akan tetapi cara ini lebih mahal implementasinya dibandingkan dengan menggunakan pencacah.
Gambar 5-19. Contoh Algoritma LRU
Gambar di atas terinspirasi dari buku Applied Operating System, Silberchatz, Galvin, Gagne, edisi VI tahun
2002.
5.9.4. Algoritma Perkiraan LRU
Pada dasarnya algoritma perkiraan LRU memiliki prinsip yang sama dengan algoritma LRU, yaitu halaman yang
diganti adalah halaman yang tidak digunakan dalam jangka waktu terlama, hanya saja dilakukan modifikasi pada
algoritma ini untuk mendapatkan hasil yang lebih baik. Perbedaannya dengan algoritma LRU terletak pada
penggunaan bit acuan. Setiap halaman yang berbeda memiliki bit acuan. Pada awalnya bit acuan diinisialisasikan
oleh perangkat keras dengan nilai 0. Nilainya akan berubah menjadi 1 bila dilakukan akses ke halaman tersebut.
Ada beberapa cara untuk mengimplementasikan algoritma ini, yaitu:
• Algoritma NFU (Not Frequently Used)
Setiap halaman akan memiliki bit acuan yang terdiri dari 8 bit byte sebagai penanda. Pada awalnya semua bit
nilainya 0, contohnya: 00000000. Setiap selang beberapa waktu, pencatat waktu melakukan interupsi kepada
sistem operasi, kemudian sistem operasi menggeser 1 bit ke kanan dengan bit yang paling kiri adalah nilai dari
187Bab 5. Managemen Memori
bit acuan, yaitu bila halaman tersebut diakses nilainya 1 dan bila tidak diakses nilainya 0. Jadi halaman yang
selalu digunakan pada setiap periode akan memiliki nilai 11111111. Halaman yang diganti adalah halaman
yang memiliki nilai terkecil.
• Algoritma Second-Chance
Pengimplementasian algoritma ini dilakukan dengan menyimpan halaman pada sebuah linked-list dan
halaman-halaman tersebut diurutkan berdasarkan waktu ketika halaman tersebut tiba di memori yang berarti
menggunakan juga prinsip algoritma FIFO disamping menggunakan algoritma LRU. Apabila nilai bit
acuan-nya 0, halaman dapat diganti. Dan apabila nilai bit acuan-nya 1, halaman tidak diganti tetapi bit acuan
diubah menjadi 0 dan dilakukan pencarian kembali.
• Algoritma Clock
Meskipun algoritma second-chance sudah cukup baik, namun pada kenyataannya penggunaan algortima
tersebut tidak efisien. Algoritma clock adalah penyempurnaan dari algoritma tersebut. Pada prinsipnya kedua
algoritma tersebut sama, hanya terletak perbedaan pada pengimplementasiannya saja. Algortima ini
menggunakan antrian melingkar yang berbentuk seperti jam dengan sebuah penunjuk yang akan berjalan
melingkar mencari halaman untuk diganti.
• Algoritma NRU (Not Recently Used)
Algoritma NRU mudah untuk dimengerti, efisien, dan memiliki kinerja yang cukup baik. Algoritma ini
mempertimbangkan dua hal sekaligus, yaitu bit acuan dan bit modifikasi. Ketika terjadi kesalahan halaman,
sistem operasi memeriksa semua halaman dan membagi halaman-halaman tersebut ke dalam empat kelas:
• Kelas 1: Tidak digunakan dan tidak dimodifikasi, bit terbaik untuk dipindahkan.
• Kelas 2: Tidak digunakan tapi dimodifikasi, tidak terlalu baik untuk dipindahkan karena halaman ini perlu
ditulis sebelum dipindahkan.
• Kelas 3: Digunakan tapi tidak dimodifikasi, ada kemungkinan halaman ini akan segera digunakan lagi.
• Kelas 4: Digunakan dan dimodifikasi, halaman ini mungkin akan segera digunakan lagi dan halaman ini
perlu ditulis ke disk sebelum dipindahkan.
5.9.5. Algoritma Counting
Dilakukan dengan menyimpan pencacah dari nomor acuan yang sudah dibuat untuk masing-masing halaman.
Penggunaan algoritma ini memiliki kekurangan yaitu lebih mahal. Algoritma Counting dapat dikembangkan
menjadi dua skema dibawah ini:
• Algoritma Least Frequently Used (LFU)
Halaman yang diganti adalah halaman yang paling sedikit dipakai (nilai pencacah terkecil) dengan alasan
bahwa halaman yang digunakan secara aktif akan memiliki nilai acuan yang besar.
• Algoritma Most Frequently Used (MFU)
188Bab 5. Managemen Memori
Halaman yang diganti adalah halaman yang paling sering dipakai (nilai pencacah terbesar) dengan alasan
bahwa halaman dengan nilai terkecil mungkin baru saja dimasukkan dan baru digunakan
5.9.6. Algoritma Page Buffering
Sistem menyimpan pool dari frame yang kosong. Prosedur ini memungkinkan suatu proses mengulang dari awal
secepat mungkin, tanpa perlu menunggu halaman yang akan dipindahkan untuk ditulis ke disk karena frame-nya
telah ditambahkan ke dalam pool frame kosong. Teknik seperti ini digunakan dalam sistem VAX/VMS.
5.10. Strategi Alokasi Frame
5.10.1. Alokasi Frame
Hal yang mendasari strategi alokasi frame yang menyangkut memori virtual adalah bagaimana membagi memori
yang bebas untuk beberapa proses yang sedang dikerjakan.
Dapat kita ambil satu contoh yang mudah pada sistem satu pemakai. Misalnya sebuah sistem mempunyai seratus
frame bebas untuk proses user. Untuk permintaan halaman murni, keseratus frame tersebut akan ditaruh pada
daftar frame bebas. Ketika sebuah user mulai dijalankan, akan terjadi sederetan kesalahan halaman. Sebanyak
seratus kesalahan halaman pertama akan mendapatkan frame dari daftar frame bebas. Saat frame bebas sudah
habis, sebuah algoritma pergantian halaman akan digunakan untuk memilih salah satu dari seratus halaman di
memori yang diganti dengan yang ke seratus satu, dan seterusnya. Ketika proses selesai atau diterminasi, seratus
frame tersebut akan disimpan lagi pada daftar frame bebas.
Ada beberapa variasi untuk strategi sederhana ini antara lain kita bisa meminta sistem operasi untuk
mengalokasikan seluruh buffer dan ruang tabelnya dari daftar frame bebas. Saat ruang ini tidak digunakan oleh
sistem operasi, ruang ini bisa digunakan untuk mendukung permintaan halaman dari user. Kita juga dapat
menyimpan tiga frame bebas dari daftar frame bebas, sehingga ketika terjadi kesalahan halaman, ada frame
bebas yang dapat digunakan untuk permintaan halaman. Saat penggantian halaman terjadi, penggantinya dapat
dipilih, kemudian ditulis ke disk, sementara proses user tetap berjalan.
Pada dasarnya yaitu proses pengguna diberikan frame bebas yang mana saja. Masalah yang muncul ketika
penggantian halaman dikombinasikan dengan multiprogramming. Hal ini terjadi karena multiprogramming
menaruh dua (atau lebih) proses di memori pada waktu yang bersamaan.
Jumlah Frame Minimum
Ada suatu batasan dalam mengalokasikan frame, kita tidak dapat mengalokasikan frame lebih dari jumlah frame
yang ada. Hal yang utama adalah berapa minimum frame yang harus dialokasikan agar jika sebuah instruksi
dijalankan, semua informasinya ada dalam memori. Jika terjadi kesalahan halaman sebelum eksekusi selesai,
instruksi tersebut harus diulang. Sehingga kita harus mempunyai jumlah frame yang cukup untuk menampung
semua halaman yang dibutuhkan oleh sebuah instruksi.
Jumlah frame mimimum yang bisa dialokasikan ditentukan oleh arsitektur komputer. Sebagai contoh, instruksi
move pada PDP-11 adalah lebih dari satu kata untuk beberapa modus pengalamatan, sehingga instruksi tersebut
bisa membutuhkan dua halaman. Sebagai tambahan, tiap operannya mungkin merujuk tidak langsung, sehingga
total ada enam frame. Kasus terburuk untuk IBM 370 adalah instruksi MVC. Karena instruksi tersebut adalah
189Bab 5. Managemen Memori
instruksi perpindahan dari penyimpanan ke penyimpanan, instruksi ini butuh 6 bit dan dapat memakai dua
halaman. Satu blok karakter yang akan dipindahkan dan daerah tujuan perpindahan juga dapat memakai dua
halaman, sehingga situasi ini membutuhkan enam frame.
Algoritma Alokasi
Algoritma pertama yaitu equal allocation. Algoritma ini memberikan bagian yang sama, sebanyak m/n frame
untuk tiap proses. Sebagai contoh ada 100 frame tersisa dan 5 proses, maka tiap proses akan mendapatkan 20
frame. Frame yang tersisa, sebanyak 3 buah dapat digunakan sebagai frame bebas cadangan.
Sebuah alternatif yaitu pengertian bahwa berbagai proses akan membutuhkan jumlah memori yang berbeda. Jika
ada sebuah proses sebesar 10K dan sebuah proses basis data 127K dan hanya kedua proses ini yang berjalan
pada sistem, maka ketika ada 62 frame bebas, tidak masuk akal jika kita memberikan masing-masing proses 31
frame. Proses pertama hanya butuh 10 frame, 21 frame lain akan terbuang percuma. Untuk menyelesaikan
masalah ini, kita menggunakan algoritma kedua yaitu proportional allocation. Kita mengalokasikan memori
yang tersedia kepada setiap proses tergantung pada ukurannya.
Ukuran memori virtual untuk proses pi = si, dan S = si.
Lalu, jika jumlah total dari frame yang tersedia adalah m, kita mengalokasikan proses ai ke proses pi, dimana ai
mendekati:
ai = si / S x m
Dalam kedua strategi ini, tentu saja, alokasi untuk setiap proses bisa bervariasi berdasarkan multiprogramming
level-nya. Jika multiprogramming level-nya meningkat, setiap proses akan kehilangan beberapa frame guna
menyediakan memori yang dibutuhkan untuk proses yang baru. Di sisi lain, jika multiprogramming level-nya
menurun, frame yang sudah dialokasikan pada bagian proses sekarang bisa disebar ke proses-proses yang masih
tersisa.
Mengingat hal itu, dengan equal allocation ataupun proportional allocation, proses yang berprioritas tinggi
diperlakukan sama dengan proses yang berprioritas rendah. Berdasarkan definisi tersebut, bagaimanapun juga,
kita ingin memberi memori yang lebih pada proses yang berprioritas tinggi untuk mempercepat eksekusi-nya.
Satu pendekatan adalah menggunakan skema proportional allocation dimana perbandingan frame-nya tidak
tergantung pada ukuran relatif dari proses, melainkan lebih pada prioritas proses, atau tergantung kombinasi dari
ukuran dan prioritas. Algoritma ini dinamakan alokasi prioritas.
Alokasi Global lawan Lokal
Hal penting lainnya dalam pengalokasian frame adalah pergantian halaman. Proses-proses bersaing
mendapatkan frame, maka dari itu kita dapat mengklasifikasikan algoritma penggantian halaman kedalam dua
kategori; Penggantian Global dan Penggantian Lokal. Pergantian global memperbolehkan sebuah proses mencari
frame pengganti dari semua frame-frame yang ada, walaupun frame tersebut sedang dialokasikan untuk proses
yang lain. Hal ini memang efisien. tetapi ada kemungkinan proses lain tidak mendapatkan frame karena
framenya terambil oleh proses lain. Penggantian lokal memberi aturan bahwa setiap proses hanya boleh memilih
frame pengganti dari frame-frame yang memang dialokasikan untuk proses itu sendiri.
Sebagai contoh, misalkan ada sebuah skema alokasi yang memperbolehkan proses berprioritas tinggi untuk
mencari frame pengganti dari proses yang berprioritas rendah. Proses berprioritas tinggi ini dapat mancari frame
pengganti dari frame-frame yang telah dialokasikan untuknya atau dari frame-frame yang dialokasikan untuk
proses berprioritas lebih rendah.
Dalam penggantian lokal, jumlah frame yang teralokasi tidak berubah. Dengan Penggantian Global, ada
kemungkinan sebuah proses hanya menyeleksi frame-frame yang teralokasi pada proses lain, sehingga
190Bab 5. Managemen Memori
meningkatkan jumlah frame yang teralokasi pada proses itu sendiri (asumsi bahwa proses lain tidak memilih
frame proses tersebut untuk penggantian.
Masalah pada algoritma Penggantian Global adalah bahwa sebuah proses tidak bisa mengontrol kasalahan
halaman-nya sendiri. Halaman-halaman dalam memori untuk sebuah proses tergantung tidak hanya pada prilaku
penghalamanan dari proses tersebut, tetapi juga pada prilaku penghalamanan dari proses lain. Karena itu, proses
yang sama dapat tampil berbeda (memerlukan 0,5 detik untuk satu eksekusi dan 10,3 detik untuk eksekusi
berikutnya). Dalam Penggantian Lokal, halaman-halaman dalam memori untuk sebuah proses hanya dipengaruhi
prilaku penghalamanan proses itu sendiri. Penggantian Lokal dapat menyembunyikan sebuah proses dengan
membuatnya tidak tersedia bagi proses lain, menggunakan halaman yang lebih sedikit pada memori. Jadi, secara
umum Penggantian Global menghasilkan sistem throughput yang lebih bagus, maka itu artinya metode yang
paling sering digunakan.
5.10.2. Thrashing
Thrashing adalah keadaan dimana terdapat aktifitas yang tinggi dari penghalamanan. Aktifitas penghalamanan
yang tinggi ini maksudnya adalah pada saat sistem sibuk melakukan swap-in dan swap-out dikarenakan banyak
kasalahan halaman yang terjadi. Suatu proses dapat mengurangi jumlah frame yang digunakan dengan alokasi
yang minimum. Tetapi jika sebuah proses tidak memiliki frame yang cukup, tetap ada halaman dalam jumlah
besar yang memiliki kondisi aktif digunakan. Maka hal ini mengakibatkan kasalahan halaman. Untuk seterusnya
sistem harus mengganti beberapa halaman menjadi halaman yang akan dibutuhkan. Karena semua halamannya
aktif digunakan, maka halaman yang diganti adalah halaman yang dalam waktu dekat berkemungkinan akan
digunakan kembali. Hal ini mengakibatkan kesalahan halaman yang terus-menerus
Penyebab Thrashing
Utilitas dari CPU selalu diharapkan tinggi hingga mendekati 100%. Jika proses yang dikerjakan CPU hanya
sedikit, maka kita tidak bisa menjaga agar CPU sibuk. Utilitas dari CPU bisa ditingkatkan dengan meningkatkan
jumlah proses. Jika Utilitas CPU rendah, maka sistem akan menambah derajat dari multiprogramming yang
berarti menambah jumlah proses yang sedang berjalan. Pada titik tertentu, menambah jumlah proses justru akan
menyebabkan utilitas CPU turun drastis dikarenakan proses-proses yang baru tidak mempunya memori yang
cukup untuk berjalan secara efisien. Pada titik ini terjadi aktifitas penghalamanan yang tinggi yang akan
menyebabkan thrashing.
Ketika sistem mendeteksi bahwa utilitas CPU menurun dengan bertambahnya proses, maka sistem
meningkatkan lagi derajat dari multiprogramming. Proses-proses yang baru berusaha merebut frame-frame yang
telah dialokasikan untuk proses yang sedang berjalan. Hal ini mengakibatkan kesalahan halaman meningkat
tajam. Utilitas CPU akan menurun dengan sangat drastis diakibatkan oleh sistem yang terus menerus menambah
derajat multiprogramming.
Pada gambar di bawah ini tergambar grafik dimana utilitas dari CPU akan terus meningkat seiiring dengan
meningkatnya derajat dari multiprogramming hingga sampai pada suatu titik saat utilitas CPU menurun drastis.
Pada titik ini, untuk menghentikan thrashing, derajat dari multiprogramming harus diturunkan.
191Bab 5. Managemen Memori
Gambar 5-20. Derajat dari Multiprogramming
Membatasi Efek Thrashing
Efek dari thrashing dapat dibatasi dengan algoritma pergantian lokal atau prioritas. Dengan pergantian lokal, jika
satu proses mulai thrashing, proses tersebut dapat mengambil frame dari proses yang lain dan menyebabkan
proses itu tidak langsung thrashing. Jika proses mulai thrashing, proses itu akan berada pada antrian untuk
melakukan penghalamanan yang mana hal ini memakan banyak waktu. Rata-rata waktu layanan untuk kesalahan
halaman akan bertambah seiring dengan makin panjangnya rata-rata antrian untuk melakukan penghalamanan.
Maka, waktu akses efektif akan bertambah walau pun untuk suatu proses yang tidak thrashing.
Salah satu cara untuk menghindari thrashing, kita harus menyediakan sebanyak mungkin frame sesuai dengan
kebutuhan suatu proses. Cara untuk mengetahui berapa frame yang dibutuhkan salah satunya adalah dengan
strategi Working Set.
Selama satu proses di eksekusi, model lokalitas berpindah dari satu lokalitas satu ke lokalitas lainnnya.
Lokalotas adalah kumpuulan halaman yang aktif digunakan bersama. Suatu program pada umumnya dibuat pada
beberapa lokalitas sehingga ada kemungkinan terjadi overlap. Thrashing dapat muncul bila ukuran lokalitas
lebih besar dari ukuran memori total.
Model Working Set
Strategi Working set dimulai dengan melihat berapa banyak frame yang sesungguhnya digunakan oleh suatu
proses. Working set model mengatakan bahwa sistem hanya akan berjalan secara efisien jika masing-masing
proses diberikan jumlah halaman frame yang cukup. Jika jumlah frame tidak cukup untuk menampung semua
proses yang ada, maka akan lebih baik untuk menghentikan satu proses dan memberikan halamannya untuk
192Bab 5. Managemen Memori
proses yang lain.
Working set model merupakan model lokalitas dari suatu eksekusi proses. Model ini menggunakan parameter
(delta) untuk mendefinisikan working set window. Untuk menentukan halaman yang dituju, yang paling
sering muncul. Kumpulan dari halaman dengan halaman yang dituju yang paling sering muncul disebut
working set. Working set adalah pendekatan dari program lokalitas.
Contoh:
Keakuratan working set tergantung pada pemilihan .
1. Jika terlalu kecil, tidak akan dapat mewakilkan keseluruhan dari lokalitas.
2. Jika terlalu besar, akan menyebabkan overlap beberapa lokalitas.
3. Jika tidak terbatas, working set adalah kumpulan page sepanjang eksekusi program.
Jika kita menghitung ukuran dari Working Set, WWSi, untuk setiap proses pada sistem, kita hitung dengan D =
WSSi, dimana D merupakan total demand untuk frame.
Jika total perminataan lebih dari total banyaknya frame yang tersedia (D > m), thrashing dapat terjadi karena
beberapa proses akan tidak memiliki frame yang cukup. Jika hal tersebut terjadi, dilakukan satu pengeblokan
dari proses-proses yang sedang berjalan.
Strategi Working Set menangani thrashing dengan tetap mempertahankan derajat dari multiprogramming
setinggi mungkin.
Contoh: = 1000 referensi, Penghitung interupsi setiap 5000 referensi.
Ketika kita mendapat interupsi, kita menyalin dan menghapus nilai bit referensi dari setiap halaman. Jika
kesalahan halaman muncul, kita dapat menentukan bit referensi sekarang dan 2 pada bit memori untuk
memutuskan apakah halaman itu digunakan dengan 10000 ke 15000 referensi terakhir.
Jika digunakan, paling sedikit satu dari bit-bit ini akan aktif. Jika tidak digunakan, bit ini akan menjadi tidak
aktif.
Halaman yang memiliki paling sedikit 1 bit aktif, akan berada di working-set.
Hal ini tidaklah sepenuhnya akurat karena kita tidak dapat memberitahukan dimana pada interval 5000 tersebut,
referensi muncul. Kita dapat mengurangi ketidakpastian dengan menambahkan sejarah bit kita dan frekuensi dari
interupsi.
Contoh: 20 bit dan interupsi setiap 1500 referensi.
Frekuensi Kesalahan Halaman
Working-set dapat berguna untuk prepaging, tetapi kurang dapat mengontrol thrashing. Strategi menggunakan
frekuensi kesalahan halaman mengambil pendekatan yang lebih langsung.
Thrashing memiliki kecepatan kasalahan halaman yang tinggi. Kita ingin mengontrolnya. Ketika terlalu tinggi,
kita mengetahui bahwa proses membutuhkan frame lebih. Sama juga, jika terlalu rendah, maka proses mungkin
memiliki terlalu banyak frame. Kita dapat menentukan batas atas dan bawah pada kecepatan kesalahan halaman
seperti terlihat pada gambar berikut ini.
193Bab 5. Managemen Memori
Gambar 5-21. Kecepatan page-fault
Jika kecepatan kasalahan halaman yang sesungguhnya melampaui batas atas, kita mengalokasikan frame lain ke
proses tersebut, sedangkan jika kecepatan kasalahan halaman di bawah batas bawah, kita pindahkan frame dari
proses tersebut. Maka kita dapat secara langsung mengukur dan mengontrol kecepatan kasalahan halaman untuk
mencegah thrashing.
5.11. Pertimbangan Lain
Pemilihan algoritma penggantian dan aturan alokasi adalah keputusan-keputusan utama yang kita buat untuk
sistem pemberian halaman. Selain itu, masih banyak pertimbangan lain.
5.11.1. Prepaging
Sebuah ciri dari sistem permintaan pemberian halaman murni adalah banyaknya kesalahan halaman yang terjadi
saat proses dimulai. Situasi ini merupakan hasil dari percobaan untuk mendapatkan tempat pada awalnya. Situasi
yang sama mungkin muncul di lain waktu. Misalnya saat proses swapped-out dimulai kembali, seluruh halaman
ada di cakram dan setiap halaman harus dibawa ke dalam memori yang akan mengakibatkan banyaknya
kesalahan halaman. Prepaging mencoba untuk mencegah pemberian halaman awal tingkat tinggi ini. Strateginya
adalah untuk membawa seluruh halaman yang akan dibutuhkan pada satu waktu ke memori
Sebagai contoh, pada sistem yang menggunakan model working set, untuk setiap proses terdapat daftar dari
semua halaman yang ada pada working set nya. Jika kita harus menunda sebuah proses (karena menunggu I/O
atau kekurangan frame bebas), daftar working set untuk proses tersebut disimpan. Saat proses itu akan
194Bab 5. Managemen Memori
dilanjutkan kembali (permintaan I/O telah terpenuhi atau frame bebas yang cukup), secara otomatis seluruh
working set-nya akan dibawa ke dalam memori sebelum memulai kembali proses tersebut.
Prepaging dapat berguna pada beberapa kasus. Yang harus dipertimbangkan adalah apakah biaya menggunakan
prepaging lebih sedikit dari biaya menangani kesalahan halaman yang terjadi bila tidak memakai prepaging. Jika
biaya prepaging lebih sedikit (karena hampir seluruh halaman yang di prepage digunakan) maka prepaging akan
berguna. Sebaliknya, jika biaya prepaging lebih besar (karena hanya sedikit halaman dari yang di-prepage
digunakan) maka prepaging akan merugikan.
5.11.2. Ukuran halaman
Para perancang sistem operasi untuk mesin yang sudah ada jarang memiliki pilihan terhadap ukuran halaman.
Akan tetapi, saat merancang sebuah mesin baru, harus dipertimbangkan berapa ukuran halaman yang terbaik.
Pada dasarnya tidak ada ukuran halaman yang paling baik, karena banyaknya faktor-faktor yang
mempengaruhinya.
Salah satu faktor adalah ukuran tabel halaman. Untuk sebuah memori virtual dengan ukuran 4 megabytes (2^22),
akan ada 4.096 halaman berukuran 1.024 bytes, tapi hanya 512 halaman jika ukuran halaman 8.192 bytes. Setiap
proses yang aktif harus memiliki salinan dari tabel halaman-nya, jadi lebih masuk akal jika dipilih ukuran
halaman yang besar.
Di sisi lain, pemanfaatan memori lebih baik dengan halaman yang lebih kecil. Jika sebuah proses dialokasikan di
memori, mengambil semua halaman yang dibutuhkannya, mungkin proses tersebut tidak akan berakhir pada
batas dari halaman terakhir. Jadi, ada bagian dari halaman terakhir yang tidak digunakan walaupun telah
dialokasikan. Asumsikan rata-rata setengah dari halaman terakhir tidak digunakan, maka untuk halaman dengan
ukuran 256 bytes hanya akan ada 128 bytes yang terbuang, bandingkan dengan halaman berukuran 8192 bytes,
akan ada 4096 bytes yang terbuang. Untuk meminimalkan pemborosan ini, kita membutuhkan ukuran halaman
yang kecil.
Masalah lain adalah waktu yang dibutuhkan untuk membaca atau menulis halaman. Waktu I/O terdiri dari waktu
pencarian, latency dan transfer. Waktu transfer sebanding dengan jumlah yang dipindahkan (yaitu, ukuran
halaman). Sedangkan waktu pencarian dan latency biasanya jauh lebih besar dari waktu transfer. Untuk laju
pemindahan 2 MB/s, hanya dihabiskan 0.25 millidetik untuk memindahkan 512 bytes. Waktu latency mungkin
sekitar 8 millidetik dan waktu pencarian 20 millidetik. Total waktu I/O 28.25 milidetik. Waktu transfer
sebenarnya tidak sampai 1%. Sebagai perbandingan, untuk mentransfer 1024 bytes, dengan ukuran halaman
1024 bytes akan dihabiskan waktu 28.5 milidetik (waktu transfer 0.5 milidetik). Namun dengan halaman
berukuran 512 bytes akan terjadi 2 kali transfer 512 bytes dengan masing-masing transfer menghabiskan waktu
28.25 milidetik sehingga total waktu yang dibutuhkan 56.5 milidetik. Kesimpulannya, untuk meminimalisasi
waktu I/O dibutuhkan ukuran halaman yang lebih besar.
Masalah terakhir yang akan dibahas disini adalah mengenai kesalahan halaman. Misalkan ukuran halaman
adalah 1 byte. Sebuah proses sebesar 100 KB, dimana hanya setengahnya yang menggunakan memori, akan
menghasilkan kesalahan halaman sebanyak 51200. Sedangkan bila ukuran halaman sebesar 200 KB maka hanya
akan terjadi 1 kali kesalahan halaman. Jadi untuk mengurangi jumlah kesalahan halaman dibutuhkan ukuran
halaman yang besar.
Masih ada faktor lain yang harus dipertimbangkan (misalnya hubungan antara ukuran halaman dengan ukuran
sektor pada peranti pemberian halaman). Tidak ada jawaban yang pasti berapa ukuran halaman yang paling baik.
Sebagai acuan, pada 1990, ukuran halaman yang paling banyak dipakai adalah 4096 bytes. Sedangkan sistem
modern saat ini menggunakan ukuran halaman yang jauh lebih besar dari itu.
195Bab 5. Managemen Memori
5.11.3. Jangkauan TLB
Hit ratio dari TLB adalah persentasi alamat virtual yang diselesaikan dalam TLB daripada di tabel halaman. Hit
ratio sendiri berhubungan dengan jumlah masukan dalam TLB dan cara untuk meningkatkan hit ratio adalah
dengan menambah jumlah masukan dari TLB. Tetapi ini tidaklah murah karena memori yang dipakai untuk
membuat TLB mahal dan haus akan tenaga.
Ada suatu ukuran lain yang mirip dengan hit ratio yaitu jangkauan TLB. Jangkauan TLB adalah jumlah memori
yang dapat diakses dari TLB, jumlah tersebut merupakan perkalian dari jumlah masukan dengan ukuran
halaman. Idealnya, working set dari sebuah proses disimpan dalam TLB. Jika tidak, maka proses akan
menghabiskan waktu yang cukup banyak mengatasi referensi memori di dalam tabel halaman daripada di TLB.
Jika jumlah masukan dari TLB dilipatgandakan, maka jangkauan TLB juga akan bertambah menjadi dua kali
lipat. Tetapi untuk beberapa aplikasi hal ini masih belum cukup untuk menyimpan working set.
Cara lain untuk meningkatkan jangkauan TLB adalah dengan menambah ukuran halaman. Bila ukuran halaman
dijadikan empat kali lipat dari ukuran awalnya (misalnya dari 32 KB menjadi 128 KB), maka jangkauan TLB
juga akan menjadi empat kali lipatnya. Namun ini akan meningkatkan fragmentasi untuk aplikasi-aplikasi yang
tidak membutuhkan ukuran halaman sebesar itu. Sebagai alternatif, OS dapat menyediakan ukuran halaman yang
bervariasi. Sebagai contoh, UltraSparc II menyediakan halaman berukuran 8 KB, 64 KB, 512 KB, dan 4 MB.
Sedangkan Solaris 2 hanya menggunakan halaman ukuran 8 KB dan 4 MB.
5.11.4. Tabel Halaman yang Dibalik
Kegunaan dari tabel halaman yang dibalik adalah untuk mengurangi jumlah memori fisik yang dibutuhkan untuk
melacak penerjemahan alamat virtual-ke-fisik. Metode penghematan ini dilakukan dengan membuat tabel yang
memiliki hanya satu masukan tiap halaman memori fisik, terdaftar oleh pasangan (proses-id, nomor-halaman).
Karena menyimpan informasi tentang halaman memori virtual yang mana yang disimpan di setiap frame fisik,
tabel halaman yang dibalik mengurangi jumlah fisik memori yang dibutuhkan untuk menyimpan informasi ini.
Bagaimana pun, tabel halaman yang dibalik tidak lagi mengandung informasi yang lengkap tentang ruang alamat
logis dari sebuah proses, dan informasi itu dibutuhkan jika halaman yang direferensikan tidak sedang berada di
memori. Demand paging membutuhkan informasi ini untuk memproses kesalahan halaman. Agar informasi ini
tersedia, sebuah tabel halaman eksternal (satu tiap proses) harus tetap disimpan. Setiap tabel tampak seperti tabel
halaman per proses tradisional, mengandung informasi dimana setiap halaman virtual berada.
Tetapi, apakah tabel halaman eksternal menegasikan kegunaan tabel halaman yang dibalik? Karena tabel-tabel
ini direferensikan hanya saat kesalahan halaman terjadi, mereka tidak perlu tersedia secara cepat. Namun,
mereka dimasukkan atau dikeluarkan dari memori sesuai kebutuhan. Sayangnya, sekarang kesalahan halaman
mungkin terjadi pada manager memori virtual, menyebabkan kesalahan halaman lain karena pada saat
mem-page in tabel halaman eksternal, ia harus mencari halaman virtual pada backing store. Kasus spesial ini
membutuhkan penanganan di kernel dan penundaan pada proses page-lookup.
5.11.5. Struktur Program
Pemilihan struktur data dan struktur pemograman secara cermat dapat meningkatkan locality dan karenanya
menurunkan tingkat kesalahan halaman dan jumlah halaman di working set. Sebuah stack memiliki locality yang
baik, karena akses selalu dari atas. Sebuah hash table, di sisi lain, didesain untuk menyebar referensi-referensi,
menghasilkan locality yang buruk. Tentunya, referensi akan locality hanyalah satu ukuran dari efisiensi
penggunaan struktur data. Faktor-faktor lain yang berbobot berat termasuk kecepatan pencarian, jumlah total
dari referensi dan jumlah total dari halaman yang disentuh.
196Bab 5. Managemen Memori
5.11.6. I/O Interlock
Saat demand paging digunakan, kita terkadang harus mengizinkan beberapa halaman untuk dikunci di memori.
Salah satu situasi muncul saat I/O dilakukan ke atau dari memori pengguna (virtual). I/O sering
diimplementasikan oleh prosesor I/O yang terpisah. Sebagai contoh, sebuah pengendali pita magnetik pada
umumnya diberikan jumlah bytes yang akan dipindahkan dan alamat memori untuk buffer. Saat pemindahan
selesai, CPU diinterupsi.
Harus diperhatikan agar urutan dari kejadian-kejadian berikut tidak muncul: Sebuah proses mengeluarkan
permintaan I/O, dan diletakkan di antrian untuk I/O tersebut. Sementara itu, CPU diberikan ke proses- proses
lain. Proses-proses ini menimbulkan kesalahan halaman, dan, menggunakan algoritma penggantian global, salah
satu dari mereka menggantikan halaman yang mengandung memori buffer untuk proses yang menunggu tadi.
Halaman-halaman untuk proses tersebut dikeluarkan. Kadang-kadang kemudian, saat permintaan I/O bergerak
maju menuju ujung dari antrian peranti, I/O terjadi ke alamat yang telah ditetapkan. Bagaimana pun, frame ini
sekarang sedang digunakan untuk halaman berbeda milik proses lain.
Ada dua solusi untuk masalah ini. Salah satunya adalah jangan pernah menjalankan I/O kepada memori
pengguna. Sedangkan solusi lainnya adalah dengan mengizinkan halaman untuk dikunci dalam memori.
5.11.7. Pemrosesan Waktu Nyata
Diskusi-diskusi di bab ini telah dikonsentrasikan dalam menyediakan penggunaan yang terbaik secara
menyeluruh dari sistem komputer dengan meningkatkan penggunaan memori. Dengan menggunakan memori
untuk data yang aktif, dan memindahkan data yang tidak aktif ke cakram, kita meningkatkan throughput.
Bagaimana pun, proses individual dapat menderita sebagai hasilnya, sebab mereka sekarang mendapatkan
kesalahan halaman tambahan selama eksekusi.
Pertimbangkan sebuah proses atau thread waktu-nyata. Proses tersebut berharap untuk memperoleh kendali
CPU, dan untuk menjalankan penyelesaian dengan penundaan yang minimum. Memori virtual adalah kebalikan
dari komputasi waktu nyata, sebab dapat menyebabkan penundaan jangka panjang yang tidak diharapkan pada
eksekusi sebuah proses saat halaman dibawa ke memori. Untuk itulah, sistem-sistem waktu nyata hampir tidak
memiliki memori virtual.
5.11.8. Windows NT
Pada bagian-bagian berikut ini akan dibahas bagaimana Windows NT, Solaris 2, dan Linux mengimplementasi
memori virtual.
Windows NT mengimplementasikan memori virtual dengan menggunakan permintaan halaman melalui
clustering. Clustering menanganani kesalahan halaman dengan menambahkan tidak hanya halaman yang terkena
kesalahan, tetapi juga halaman-halaman yang berada disekitarnya. Saat proses pertama dibuat, dia diberikan
working set minimum yaitu jumlah minimum halaman yang dijamin akan dimiliki oleh proses tersebut dalam
memori. Jika memori yang cukup tersedia, proses dapat diberikan halaman sampai sebanyak working set
maximum. Manager memori virtual akan menyimpan daftar dari halaman frame yang bebas. Terdapat juga
sebuah nilai batasan yang diasosiasikan dengan daftar ini untuk mengindikasikan apakah memori yang tersedia
masih mencukupi. Jika proses tersebut sudah sampai pada working set maximum-nya dan terjadi kesalahan
halaman, maka dia harus memilih halaman pengganti dengan aturan penggantian halaman lokal.
Saat jumlah memori bebas jatuh di bawah nilai batasan, manager memori virtual menggunakan sebuah taktik
yang dikenal sebagai automatic working set trimming untuk mengembalikan nilai tersebut di atas batasan. Hal
ini bekerja dengan mengevaluasi jumlah halaman yang dialokasikan kepada proses. Jika proses telah mendapat
alokasi halaman lebih besar daripada working set minimum-nya, manager memori virtual akan mengurangi
197Bab 5. Managemen Memori
jumlah halamannya sampai working-setminimum. Jika memori bebas sudah tersedia, proses yang bekerja pada
working set minimum dapat mendapatkan halaman tambahan.
5.11.9. Solaris 2
Dalam sistem operasi Solaris 2, jika sebuah proses menyebabkan terjadi kesalahan halaman, kernel akan
memberikan halaman kepada proses tersebut dari daftar halaman bebas yang disimpan. Akibat dari hal ini
adalah, kernel harus menyimpan sejumlah memori bebas. Terhadap daftar ini ada dua parameter yg disimpan
yaitu minfree dan lotsfree, yaitu batasan minimum dan maksimum dari memori bebas yang tersedia. Empat kali
dalam tiap detiknya, kernel memeriksa jumlah memori yang bebas. Jika jumlah tersebut jatuh di bawah minfree,
maka sebuah proses pageout akan dilakukan, dengan pekerjaan sebagai berikut. Pertama clock akan memeriksa
semua halaman dalam memori dan mengeset bit referensi menjadi 0. Saat berikutnya, clock kedua akan
memeriksa bit referensi halaman dalam memori, dan mengembalikan bit yang masih di set ke 0 ke daftar
memori bebas. Hal ini dilakukan sampai jumlah memori bebas melampaui parameter lotsfree. Lebih lanjut,
proses ini dinamis, dapat mengatur kecepatan jika memori terlalu sedikit. Jika proses ini tidak bisa
membebaskan memori , maka kernel memulai pergantian proses untuk membebaskan halaman yang
dialokasikan ke proses-proses tersebut.
Gambar 5-22. Solar Page Scanner
sumber: Silberschatz, "Operating Systems: -- Fourth Edition", Prentice Hall, 2001
198Bab 5. Managemen Memori
5.11.10. Linux
Seperti pada Solaris 2, Linux juga menggunakan variasi dari algoritma clock. Thread dari kernel linux (kswapd)
akan dijalankan secara periodik (atau dipanggil ketika penggunaan memori sudah berlebihan). Jika jumlah
halaman yang bebas lebih sedikit dari batas atas halaman bebas, maka thread tersebut akan berusaha untuk
membebaskan tiga halaman. Jika lebih sedikit dari batas bawah halaman bebas, thread tersebut akan berusaha
untuk membebaskan enam halaman dan tidur untuk beberapa saat sebelum berjalan lagi. Saat dia berjalan, akan
memeriksa mem_map, daftar dari semua halaman yang terdapat di memori. Setiap halaman mempunyai byte
umur yang diinisialisasikan ke tiga. Setiap kali halaman ini diakses, maka umur ini akan ditambahkan (hingga
maksimum 20), setiap kali kswapd memeriksa halaman ini, maka umur akan dikurangi. Jika umur dari sebuah
halaman sudah mencapai 0 maka dia bisa ditukar. Ketika kswapd berusaha membebaskan halaman, dia pertama
akan membebaskan halaman dari cache, jika gagal dia akan mengurangi cache sistem berkas, dan jika semua
cara sudah gagal, maka dia akan menghentikan sebuah proses. Alokasi memori pada linux menggunakan dua
buah alokasi yang utama, yaitu algoritma buddy dan slab. Untuk algoritma buddy, setiap rutin pelaksanaan
alokasi ini dipanggil, dia memeriksa blok memori berikutnya, jika ditemukan dia dialokasikan, jika tidak maka
daftar tingkat berikutnya akan diperiksa. Jika ada blok bebas, maka akan dibagi jadi dua, yang satu dialokasikan
dan yang lain dipindahkan ke daftar yang di bawahnya.
5.12. Rangkuman
Memori adalah pusat kegiatan pada sebuah komputer, karena setiap proses yang akan dijalankan harus memlalui
memori terlebih dahulu. CPU mengambil instruksi dari memori sesuai dengan yang ada pada program counter.
Tugas sistem operasi adalah mengatur peletakan banyak proses pada suatu memori.
Sebelum masuk ke memori, suatu proses harus menunggu di sebuah input queue, setelah itu barulah mereka
akan diberikan alamat pada memori. Pemberian alamat dapat dilakukan pada waktu compile, waktu
pemanggilan, dan waktu eksekusi. Alamat logika (virtual) adalah alamat yang dibentuk di CPU, sedangkan
alamat fisik adalah alamat yang terlihat oleh memori. Seluruh proses dan data berada dalam memori ketika
dieksekusi. Berhubung ukuran dari memori fisik terbatas, kita harus melakukan pemanggilan dinamis untuk
mendapatkan utilisasi ruang memori yang baik.
Sebuah proses dapat di-swap sementara keluar memori ke sebuah backing store untuk kemudian dibawa masuk
lagi ke memori untuk melanjutkan pengeksekusian. Salah satu proses yang memanfaatkan metode ini adalah roll
out, roll in, yang pada intinya adalah proses swapping berdasarkan prioritas.
Agar main memory dapat melayani sistem operasi dan proses dengan baik, dibutuhkan pembagian memori
seefisien mungkin. Salah satunya adalah dengan contiguous memory allocation. Artinya alamat memori
diberikan kepada OS secara berurutan dari kecil ke besar. Ruang memori yang masih kosong dan dapat
dialokasikan untuk proses disebut hole. Metode pencarian hole ada beberapa, diantaranya adalah first fit, next fit,
best fit, worst fit. Masalah yang sering muncul dalam pengalamatan memori adalah fragmentasi (baik intern
maupun ekstern), yaitu munculnya hole-hole yang tidak cukup besar untuk menampung permintaan dari proses.
Paging adalah suatu metode yang memungkinkan suatu alamat fisik memori yang tersedia dapat tidak berurutan.
Prinsipnya adalah memecah memori fisik dan memori logika menjadi blok-blok dengan ukuran sama (disebut
page). Setelah itu kita membuat page table yang akan menerjemahkan memori logika menjadi memori fisik
dengan perantara Memory Management Unit (MMU), dan pengeksekusian proses akan mencari memori
berdasarkan tabel tersebut.
Segmentasi adalah skema managemen memori dengan cara membagi memori menjadi segmen-segmen. Berbeda
dengan page, ukuran tiap segmen tidak harus sama dan memiliki ciri tertentu, yaitu nama dan panjang segmen.
Memori virtual adalah suatu teknik yang memisahkan antara memori logika dan memori fisiknya.
Keuntungannya adalah memori virtual dapat menampung program dalam skala besar, menurunnya lalu lintas
199Bab 5. Managemen Memori
I/O, ruang memori menjadi lebih leluasa, meningkatnya respon, dan bertambahnya jumlah user yang dapat
dilayani. Demand paging adalah salah satu implementasi memori virtual yang umum digunakan, yakni mengatur
agar page tidak akan dibawa ke memori fisik sampai benar-benar dibutuhkan. Mengukur kinerja demand paging
adalah dengan mengukur Effective Access Time-nya. Beberapa teknik yang disediakan memori virtual untuk
meningkatkan kinerja pembuatan dan pengeksekusian suatu proses antara lain adalah copy-on-write dan
memory-mapped files.
Konsep page replacement adalah jika tidak ada frame yang kosong, carilah frame yang tidak sedang digunakan,
lalu dikosongkan dengan swapping dan ubah semua tabelnya sebagai indikasi bahwa page tersebut tidak akan
lama berada di dalam memori. Beberapa algoritma page replacement: First-in-First-Out (FIFO), Optimal,
Counting, LRU, dan Perkiraan LRU.
Masalah yang penting dari alokasi frame dengan penggunaan memori virtual adalah bagaimana membagi
memori dengan bebas untuk beberapa proses yang sedang dikerjakan. Contoh algoritma yang lazim digunakan
adalah equal allocation dan proportional allocation.
Algoritma page replacement dapat diklasifikasikan dalam 2 kategori, yaitu penggantian global dan penggantian
lokal. Perbedaan antara keduanya terletak pada boleh tidaknya setiap proses memilih frame pengganti dari
semua frame yang ada.
Utilitas dari CPU dapat menyebabkan trashing, dimana sistem sibuk melakukan swapping dikarenakan
banyaknya page-fault yang terjadi. Efek dari trashing dapat dibatasi dengan algoritma penggantian lokal atau
prioritas. Cara untuk mengetahui berapa banyak proses yang dibutuhkan suatu proses salah satunya adalah
dengan strategi working set.
Pemilihan algoritma penggantian dan aturan alokasi adalah keputusan-keputusan utama yang kita buat untuk
sistem paging. Selain itu, ada beberapa pertimbangan lain, antara lain prepaging, TLB reach, ukuran page,
struktur program, I/O interlock, dan lain sebagainya. Beberapa contoh sistem operasi yang
mengimplementasikan virtual memori adalah Windows NT, Solaris 2 dan Linux.
5.13. Latihan
1. Coba jelaskan tahapan-tahapan agar suatu proses bisa masuk ke dalam memori!
2. Jelaskan apa yang dimaksud dengan alamat logika dan alamat fisik!
3. Jelaskan apa yang dimaksud dengan pemanggilan dinamis beserta kegunaannya!
4. Apakah kegunaan dari overlays?
5. Sebutkan faktor-faktor yang mempengaruhi proses swapping!
6. Sebutkan keuntungan menggunakan contiguous memory allocation dibandingkan dengan non-contiguous
memory allocation!
7. Apakah yang dimaksud dengan permasalahan storage-allocation dinamis , dan sebutkan serta jelaskan
solusi untuk mengatasi permasalahan tersebut!
8. Jelaskan perbedaan mengenai fragmentasi intern dengan fragmentasi ekstern!
9. Apakah yang dimaksud dengan metode "Pemberian Halaman" ? Jelaskan pula keuntungan dan kerugian
penggunaan metode ini?
10. Jelaskan cara kerja unit managemen memori (MMU)!
11. Apakah yang dimaksud dengan Segmentasi? Jelaskan pula bagaimana arsitektur segmentasi!
12. Apakah yang dimaksud dengan copy-on-write?
200Bab 5. Managemen Memori
13. Apakah fungsi dari skema bit valid-invalid ?
14. Sebutkan persamaan dan/atau perbedaan demand paging dan demand segmentation!
15. Bagaimanakah konsep dasar dari page replacement ? Jelaskan secara singkat!
16. Sebutkan persamaan dan/atau perbedaan algoritma LFU dan algoritma MFU!
17. Apabila diberikan reference string 3, 1, 5, 1, 1, 2, 4, 3, 5, 3, 1 dan dilakukan page replacement algoritma
optimal dengan 3 frame. Berapakah page-fault yang terjadi?
18. Apakah penyebab terjadinya thrasing? Jelaskan!
19. Sebutkan perbedaan dan/atau persamaan alokasi global dan alokasi lokal!
20. Bagaimanakah perbedaan dan/atau persamaan Windows NT, Solaris 2, dan Linux dalam
mengimplementasikan virtual memory?
5.14. Rujukan
Buku Sistem Operasi (Bahan Kuliah IKI-20230), Gabungan Kelompok Kerja 21-28 Semester Genap 2002/2003
Avi Silberschatz, Peter Galvin, dan Greg Gagne, 2000, Applied Operating Systems: First Edition, John Wiley &
Sons.
Silberschatz, Galvin, Gagne. 2002. Operating System Concepts: 6th ed. John Wiley & Sons
Tanenbaum,Andrew S. Woodhull, Albert S. 1997. Operating Systems Design and Implementation: Second
Edition. Prentice Hall.
http://css.uni.edu
allan.ultra.nyu.edu/~gottlieb/courses/1999-00-spring/os/lecture-11.html
http://www.cs.wisc.edu/~solomon/cs537/paging.html
http://www.cs.princeton.edu/courses/archive/spring02/cs217/lectures/paging.pdf
http://cwx.prenhall.com/bookbind/pubbooks/tanenbaum/chapter0/deluxe.html
http://www.cs.jhu.edu/~yairamir/cs418/os5/
201Bab 6. Sistem Berkas
6.1. Sistem Berkas
Semua aplikasi komputer butuh menyimpan dan mengambil informasi. Ketika sebuah proses sedang berjalan,
proses tersebut menyimpan sejumlah informasi yang terbatas, dibatasi oleh ukuran alamat virtual. Untuk
beberapa aplikasi, ukuran ini cukup, namun untuk lainnya terlalu kecil.
Masalah berikutnya adalah apabila proses tersebut berhenti maka informasinya hilang. Padahal ada beberapa
informasi yang penting dan harus bertahan beberapa waktu bahkan selamanya.
Adapun masalah ketiga yaitu sangatlah perlu terkadang untuk lebih dari satu proses mengakses informasi secara
berbarengan. Untuk memecahkan masalah ini, informasi tersebut harus dapat berdiri sendiri tanpa tergantung
dengan sebuah proses.
Pada akhirnya kita memiliki masalah-masalah yang cukup signifikan dan penting untuk dicari solusinya.
Pertama kita harus dapat menyimpan informasi dengan ukuran yang besar. Kedua, informasi harus tetap ketika
proses berhenti. Ketiga, informasi harus dapat diakses oleh lebih dari satu proses secara bersamaan. Solusi dari
ketiga masalah diatas adalah sesuatu yang disebut berkas.
Berkas adalah sebuah unit tempat menyimpan informasi. Berkas ini dapat diakses lebih dari satu proses, dapat
dibaca, dan bahkan menulis yang baru. Informasi yang disimpan dalam berkas harus persisten, dalam artian
tidak hilang sewaktu proses berhenti. Berkas-berkas ini diatur oleh sistem operasi, bagaimana strukturnya,
namanya, aksesnya, penggunaannya, perlindungannya, dan implementasinya. Bagian dari sistem operasi yang
mengatur masalah-masalah ini disebut sistem berkas.
Untuk kebanyakan pengguna, sistem berkas adalah aspek yang paling terlihat dari sebuah sistem operasi. Dia
menyediakan mekanisme untuk penyimpanan online dan akses ke data dan program. Sistem berkas terbagi
menjadi dua bagian yang jelas; koleksi berkas (masing-masing menyimpan data yang berkaitan) dan struktur
direktori (mengatur dan menyediakan informasi mengenai semua berkas yang berada di sistem). Sekarang
marilah kita memperdalam konsep dari berkas tersebut.
6.1.1. Konsep Berkas
Berkas adalah sebuah koleksi informasi berkaitan yang diberi nama dan disimpan di dalam secondary storage.
Biasanya sebuah berkas merepresentasikan data atau program. Adapun jenis-jenis dari berkas:
• Text file: yaitu urutan dari karakter-karakter yang diatur menjadi barisan dan mungkin halaman.
• Source file: yaitu urutan dari berbagai subroutine dan fungsi yang masing-masing kemudian diatur sebagai
deklarasi-deklarasi diikuti oleh pernyataan-pernyataan yang dapat diexecute.
• Object file: yaitu urutan dari byte-byte yang diatur menjadi blok-blok yang dapat dipahami oleh penghubung
system.
• Executable file: adalah kumpulan dari bagian-bagian kode yang dapat dibawa ke memori dan dijalankan oleh
loader.
6.1.2. Atribut berkas
Selain nama dan data, sebuah berkas dikaitkan dengan informasi-informasi tertentu yang juga penting untuk
dilihat pengguna, seperti kapan berkas itu dibuat, ukuran berkas, dan lain-lain. Kita akan sebut
202Bab 6. Sistem Berkas
informasi-informasi ekstra ini atribut. Setiap sistem mempunyai sistem atribusi yang berbeda-beda, namun pada
dasarnya memiliki atribut-atribut dasar seperti berikut ini:
• Nama: nama berkas simbolik ini adalah informasi satu-satunya yang disimpan dalam format yang dapat
dibaca oleh pengguna.
• Identifier: tanda unik ini yang biasanya merupakan sebuah angka, mengenali berkas didalam sebuah sistem
berkas; tidak dapat dibaca oleh pengguna.
• Jenis: informasi ini diperlukan untuk sistem-sistem yang mendukung jenis berkas yang berbeda.
• Lokasi: informasi ini adalah sebuah penunjuk pada sebuah device dan pada lokasi berkas pada device tersebut.
• Ukuran: ukuran dari sebuah berkas (dalam bytes, words, atau blocks) dan mungkin ukuran maksimum
dimasukkan dalam atribut ini juga.
• Proteksi: informasi yang menentukan siapa yang dapat melakukan read, write, execute, dan lainnya.
• Waktu dan identifikasi pengguna: informasi ini dapat disimpan untuk pembuatan berkas, modifikasi terakhir,
dan penggunaan terakhir. Data-data ini dapat berguna untuk proteksi, keamanan, dan monitoring penggunaan.
6.1.3. Jenis Berkas
Salah satu atribut dari sebuah berkas yang cukup penting adalah jenis berkas. Saat kita mendesain sebuah sistem
berkas, kita perlu mempertimbangkan bagaimana operating sistem akan mengenali berkas-berkas dengan jenis
yang berbeda. Apabila sistem operasi dapat mengenali, maka menjalankan berkas tersebut bukan suatu masalah.
Seperti contohnya, apabila kita hendak mengeprint bentuk binary-object dari sebuah program, yang didapat
biasanya adalah sampah, namun hal ini dapat dihindari apabila sistem operasi telah diberitahu akan adanya jenis
berkas tersebut.
Cara yang paling umum untuk mengimplementasikan jenis berkas tersebut adalah dengan memasukkan jenis
berkas tersebut ke dalam nama berkas. Nama berkas dibagi menjadi dua bagian. Bagian pertama adalah nama
dari berkas tersebut, dan yang kedua, atau biasa disebut extention adalah jenis dari berkas tersebut. Kedua nama
ini biasanya dipisahkan dengan tanda ’.’, contoh: berkas.txt.
6.1.4. Operasi Berkas
Fungsi dari berkas adalah untuk menyimpan data dan mengizinkan kita membacanya. Dalam proses ini ada
beberapa operasi yang dapat dilakukan berkas. Adapun operasi-operasi dasar yang dilakukan berkas, yaitu:
• Membuat Berkas (Create):
Kita perlu dua langkah untuk membuat suatu berkas. Pertama, kita harus temukan tempat didalam sistem
berkas. Kedua, sebuah entri untuk berkas yang baru harus dibuat dalam direktori. Entri dalam direktori
tersebut merekam nama dari berkas dan lokasinya dalam sistem berkas.
• Menulis sebuah berkas (Write):
Untuk menulis sebuah berkas, kita membuat sebuah system call yang menyebutkan nama berkas dan informasi
yang akan di-nulis kedalam berkas.
• Membaca Sebuah berkas (Read):
203Bab 6. Sistem Berkas
Untuk membaca sebuah berkas menggunakan sebuah system call yang menyebut nama berkas yang dimana
dalam blok memori berikutnya dari sebuah berkas harus diposisikan.
• Memposisikan Sebuah Berkas (Reposition):
Direktori dicari untuk entri yang sesuai dan current-file-position diberi sebuah nilai. Operasi ini di dalam
berkas tidak perlu melibatkan I/O, selain itu juga diketahui sebagai file seek.
• Menghapus Berkas (Delete):
Untuk menghapus sebuah berkas kita mencari dalam direktori untuk nama berkas tersebut. Setelah ditemukan,
kita melepaskan semua spasi berkas sehingga dapat digunakan kembali oleh berkas-berkas lainnya dan
menghapus entry direktori.
• Menghapus Sebagian Isi Berkas (Truncate):
User mungkin mau menghapus isi dari sebuah berkas, namun menyimpan atributnya. Daripada memaksa
pengguna untuk menghapus berkas tersebut dan membuatnya kembali, fungsi ini tidak akan mengganti
atribut, kecuali panjang berkas dan mendefinisikan ulang panjang berkas tersebut menjadi nol.
Keenam operasi diatas merupakan operasi-operasi dasar dari sebuah berkas yang nantinya dapat dikombinasikan
untuk membentuk operasi-operasi baru lainnya. Contohnya apabila kita ingin menyalin sebuah berkas, maka kita
memakai operasi create untuk membuat berkas baru, read untuk membaca berkas yang lama, dan write untuk
menulisnya pada berkas yang baru.
6.1.5. Struktur Berkas
Berkas dapat di struktur 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 berikutnya, adalah dengan record sequence. Dalam model ini, sebuah berkas adalah sebuah urutan dari
rekaman-rekaman yang telah ditentukan panjangnya, masing-masing dengan beberapa struktur internal. Artinya
adalah bahwa sebuah operasi read membalikan sebuah rekaman dan operasi write menimpa atau menambahkan
suatu rekaman.
Struktur berkas 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 ditetapkan dalam rekaman tersebut. Tree ini disort dalam field key dan
mengizinkan pencarian yang cepat untuk sebuah key tertentu.
6.1.6. Metode Akses
Berkas menyimpan informasi. Apabila sedang digunakan informasi ini harus diakses dan dibaca melalui memori
komputer. Informasi dalam berkas dapat diakses dengan beberapa cara. Berikut adalah beberapa caranya:
• Akses Sekuensial
204Bab 6. Sistem Berkas
Akses ini merupakan yang paling sederhana dan paling umum digunakan. Informasi di dalam berkas diproses
secara berurutan. Sebagai contoh, editor dan kompilator biasanya mengakses berkas dengan cara ini.
• Akses Langsung
Metode berikutnya adalah akses langsung atau dapat disebut 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.
6.2. Struktur Direktori
Beberapa sistem komputer menyimpan banyak sekali berkas-berkas dalam disk, sehingga diperlukan suatu
struktur pengorganisasian data-data agar lebih mudah diatur.
6.2.1. Operasi Direktori
Silberschatz, Galvin dan Gagne mengkategorikan operasi-operasi terhadap direktori sebagai berikut:
• Mencari Berkas
Mencari lewat struktur direktori untuk dapat menemukan entri untuk suatu berkas tertentu. berkas-berkas
dengan nama yang simbolik dan mirip, mengindikasikan adanya keterkaitan diantara berkas-berkas tersebut.
Oleh karena itu, tentunya perlu suatu cara untuk menemukan semua berkas yang benar-benar memenuhi
kriteria khusus yang diminta.
• Membuat berkas
berkas-berkas baru perlu untuk dibuat dan ditambahkan ke dalam direktori.
• Menghapus berkas
Saat suatu berkas tidak diperlukan lagi, berkas tsb perlu dihapus dari direktori.
• Menampillkan isi direktori
Menampilkan daftar berkas-berkas yang ada di direktori, dan semua isi direktori dari berkas-berkas dalam
daftar tsb.
• Mengubah nama berkas
Nama berkas mencerminkan isi berkas terhadap pengguna. Oleh karena itu, nama berkas harus dapat
diubah-ubah ketika isi dan kegunaannya sudah berubah atau tidak sesuai lagi. Mengubah nama berkas
memungkinkan posisinya berpindah dalam struktur direktori.
• Akses Sistem berkas
205Bab 6. Sistem Berkas
Mengakses tiap direktori dan tiap berkas dalam struktur direktori. Sangatlah dianjurkan untuk menyimpan isi
dan stuktur dari keseluruhan sistem berkas setiap jangka waktu tertentu. Menyimpan juga dapat berarti
menyalin seluruh berkas ke pita magnetik. Teknik ini membuat suatu cadangan salinan dari berkas tersebut
jika terjadi kegagalan sistem atau jika berkas itu tidak diperlukan lagi.
Sedangkan Tanenbaum juga menambahkan hal-hal berikut sebagai operasi yang dapat dilakukan terhadap
direktori tersebut:
• Membuka direktori
• Menutup direktori
• Menambah direktori
• Mengubah nama direktori
• Menghubungkan berkas-berkas di direktori berbeda
• Menghapus hubungan berkas-berkas di direktori berbeda
6.2.2. Direktori Satu Tingkat (Single Level Directory)
Struktur Direktori ini merupakan struktur direktori yang paling sederhana. Semua berkas disimpan dalam
direktori yang sama.
Gambar 6-1. Single Level Directory
Direktori satu tingkat memiliki keterbatasan, yaitu bila berkas bertambah banyak atau bila sistem memiliki lebih
dari satu pengguna. Hal ini disebabkan karena tiap berkas harus memiliki nama yang unik.
6.2.3. Direktori Dua Tingkat (Two Level Directory)
Membuat direktori yang terpisah untuk tiap pengguna, yang disebut User File Directory (UFD). Ketika
pengguna login, master directory berkas dipanggil. MFD memiliki indeks berdasarkan nama pengguna dan
setiap entri menunjuk pada UFD pengguna tersebut. Maka, pengguna boleh memiliki nama berkas yang sama
dengan berkas lain.
Gambar 6-2. Two Level Directory
206Bab 6. Sistem Berkas
Meskipun begitu, struktur ini masih memiliki kerugian, terutama bila beberapa pengguna ingin mengerjakan
tugas secara kerjasama dan ingin mengakses berkas dari salah satu pengguna lain. Beberapa sistem secara
sederhana tidak mengizinkan berkas seorang pengguna diakses oleh pengguna lain.
6.2.4. Direktori dengan Struktur Tree (Tree-Structured Directory)
Dalam struktur ini, setiap pengguna dapat membuat subdirektori sendiri dan mengorganisasikan
berkas-berkasnya. Dalam penggunaan normal, tiap pengguna memiliki apa yang disebut direktori saat ini.
Direktori saat ini mengandung berkas-berkas yang baru-baru ini digunakan oleh pengguna.
Gambar 6-3. Tree-Structured Directory
Terdapat dua istilah, path (lintasan) relatif dan lintasan mutlak. Lintasan relatif adalah lintasan yang dimulai dari
direktori saat ini, sedangkan lintasan mutlak adalah path yang dimulai dari root directory.
6.2.5. Direktori dengan Struktur Graf Asiklik (Acyclic-Structured
Directory)
Direktori dengan struktur tree melarang pembagian berkas/direktori. Oleh karena itu, struktur graf asiklik
memperbolehkan direktori untuk berbagi berkas atau subdirektori. Jika ada berkas yang ingin diakses oleh dua
pengguna atau lebih, maka struktur ini menyediakan fasilitas sharing.
Gambar 6-4. Acyclic-Structured Directory
6.2.6. Direktori dengan Struktur Graf Umum
Masalah yang timbul dalam penggunaan struktur graf asiklik adalah meyakinkan apakah tidak ada siklus. Bila
kita mulai dengan struktur direktori tingkat dua dan memperbolehkan pengguna untuk membuat subdirektori,
maka kita akan mendapatkan struktur direktori tree. Sangatlah mudah untuk mempertahankan sifat pohon, akan
tetapi, bila kita tambahkan sambungan pada direktori dengan struktur pohon, maka sifat pohon akan musnah dan
menghasilkan struktur graf sederhana.
207Bab 6. Sistem Berkas
Gambar 6-5. General Graph Directory
Bila siklus diperbolehkan dalam direktori, tentunya kita tidak ingin mencari sebuah berkas 2 kali. Algoritma
yang tidak baik akan menghasilkan infinite loop dan tidak pernah berakhir. Oleh karena itu diperlukan skema
pengumpulan sampah (garbage-collection scheme).
Skema ini menyangkut memeriksa seluruh sistem berkas dengan menandai tiap berkas yang dapat diakses.
Kemudian mengumpulkan apa pun yang tidak ditandai pada tempat yang kosong. Hal ini tentunya dapat
menghabiskan banyak waktu.
6.3. Konsep Mounting, Sharing, dan Proteksi
6.3.1. Mounting
Mounting adalah proses mengkaitkan sebuah sistem berkas yang baru ditemukan pada sebuah piranti ke struktur
direktori utama yang sedang dipakai. Piranti-piranti yang akan di-mount dapat berupa cd-rom, disket atau sebuah
zip-drive. Tiap-tiap sistem berkas yang akan di-mount akan diberikan sebuah mount point, atau sebuah direktori
dalam pohon direktori sistem Anda, yang sedang diakses.
Sistem berkas yang dideskripsikan di /etc/fstab (fstab adalah singkatan dari filesystem tables) biasanya akan
di-mount saat komputer baru mulai dinyalakan, tapi dapat juga me-mount sistem berkas tambahan dengan
menggunakan perintah:
mount [nama piranti]
atau dapat juga dengan menambahkan secara manual mount point ke berkas /etc/fstab. Daftar sistem berkas yang
di-mount dapat dilihat kapan saja dengan menggunakan perintah mount. Karena izinnya hanya diatur read-only
di berkas fstab, maka tidak perlu khawatir pengguna lain akan mencoba mengubah dan menulis mount point
yang baru.
Seperti biasa saat ingin mengutak-atik berkas konfigurasi seperti mengubah isi berkas fstab, pastikan untuk
membuat berkas cadangan untuk mencegah terjadinya kesalahan teknis yang dapat menyebabkan suatu
kekacauan. Kita dapat melakukannya dengan cara menyediakan sebuah disket atau recovery-disk dan
mem-back-up berkas fstab tersebut sebelum membukanya di editor teks untuk diutak-atik.
Red Hat Linux dan sistem operasi lainnya yang mirip dengan UNIX mengakses berkas dengan cara yang
berbeda dari MS-DOS, Windows dan Macintosh. Di linux, segalanya disimpan di dalam sebuah lokasi yang
dapat ditentukan dalam sebuah struktur data. Linux bahkan menyimpan perintah-perintah sebagai berkas. Seperti
sistem operasi modern lainnya, Linux memiliki struktur tree, hirarki, dan organisasi direktori yang disebut sistem
berkas.
Semua ruang kosong yang tersedia di disk diatur dalam sebuah pohon direktori tunggal. Dasar sistem ini adalah
direktori root yang dinyatakan dengan sebuah garis miring ("/"). Pada linux, isi sebuah sistem berkas dibuat
nyata tersedia dengan menggabungkan sistem berkas ke dalam sebuah sistem direktori melalui sebuah proses
yang disebut mounting.
208Bab 6. Sistem Berkas
Sistem berkas dapat di-mount maupun di-umount yang berarti sistem berkas tersebut dapat tersambung atau
tidak dengan struktur pohon direktori. Perbedaannya adalah sistem berkas tersebut akan selalu di-mount ke
direktori root ketika sistem sedang berjalan dan tidak dapat di-mount. Sistem berkas yang lain di-mount
seperlunya, contohnya yang berisi hard drive berbeda dengan floppy disk atau CD-ROM.
Mounting Overview
Mounting membuat sistem berkas, direktori, piranti dan berkas lainnya menjadi dapat digunakan di lokasi-lokasi
tertentu, sehingga memungkinkan direktori itu menjadi dapat diakses. Perintah mount menginstruksikan sistem
operasi untuk mengkaitkan sebuah sistem berkas ke sebuah direktori khusus.
Memahami Mount Point
Mount point adalah sebuah direktori dimana berkas baru menjadi dapat diakses. Untuk me-mount suatu sistem
berkas atau direktori, titik mount-nya harus berupa direktori, dan untuk me-mount sebuah berkas, mount
point-nya juga harus berupa sebuah berkas.
Biasanya, sebuah sistem berkas, direktori, atau sebuah berkas di-mount ke sebuah mount point yang kosong, tapi
biasanya hal tersebut tidak diperlukan. Jika sebuah berkas atau direktori yang akan menjadi mount point berisi
data, data tersebut tidak akan dapat diakses selama direktori/berkas tersebut sedang dijadikan mount point oleh
berkas atau direktori lain. Sebagai akibatnya, berkas yang di-mount akan menimpa apa yang sebelumnya ada di
direktori/berkas tersebut. Data asli dari direktori itu dapat diakses kembali bila proses mounting sudah selesai.
Gambar 6-6. Mount Point
Saat sebuah sistem berkas di-mount ke sebuah direktori, izin direktori root dari berkas yang di-mount akan
mengambil alih izin dari mount point. Pengecualiannya adalah pada direktori induk akan memiliki atribut ..
(double dot). Agar sistem operasi dapat mengakses sistem berkas yang baru, direktori induk dari mount point
harus tersedia.
Untuk segala perintah yang membutuhkan informasi direktori induk, pengguna harus mengubah izin dari
direktori mounted-over. Kegagalan direktori mounted-over untuk mengabulkan izin dapat menyebabkan hasil
yang tidak terduga, terutama karena izin dari direktori mounted-over tidak dapat terlihat. Kegagalan umum
terjadi pada perintah pwd. Tanpa mengubah izin direktori mounted-over, akan timbul pesan error seperti ini:
pwd: permission denied
209Bab 6. Sistem Berkas
Masalah ini dapat diatasi dengan mengatur agar izin setidaknya di-set dengan 111.
Mounting Sistem Berkas, Direktori, dan Berkas
Ada dua jenis mounting: remote mounting dan mounting lokal. Remote mounting dilakukan dengan sistem
remote dimana data dikirimkan melalui jalur telekomunikasi. Remote sistem berkas seperti Network File Systems
(NFS), mengharuskan agar file diekspor dulu sebelum di-mount. mounting lokal dilakukan di sistem lokal.
Tiap-tiap sistem berkas berhubungan dengan piranti yang berbeda. Sebelum kita menggunakan sebuah sistem
berkas, sistem berkas tersebut harus dihubungkan dengan struktur direktori yang ada (dapat root atau berkas
yang lain yang sudah tersambung).
Sebagai contoh, kita dapat me-mount dari /home/server/database ke mount point yang dispesifikasikan sebagai
/home/user1, /home/user2, and /home/user3:
• /home/server/database /home/user1
• /home/server/database /home/user2
• /home/server/database /home/user3
6.3.2. Sharing
Kita dapat berbagi berkas dengan pengguna lainnya yang teregistrasi. Hal pertama yang harus kita lakukan
adalah menentukan dengan siapa berkas tersebut akan dibagi dan akses seperti apa yang akan diberikan kepada
mereka. Berbagi bekas berguna bagi pengguna yang ingin bergabung dengan pengguna lain dan mengurangi
usaha untuk mencapai sebuah hasil akhir.
Banyak Pengguna
Saat sebuah sistem operasi dibuat untuk multiple user, masalah berbagi berkas, penamaan berkas dan proteksi
berkas menjadi sangat penting. Oleh karena itu, sistem operasi harus dapat mengakomodasikan/mengatur
pembagian berkas dengan memberikan suatu struktur direktori yang membiarkan pengguna untuk saling berbagi.
Berkaitan dengan permasalahan akses berkas, kita dapat mengijinkan pengguna lain untuk melihat, mengedit
atau menghapus suatu berkas. Proses mengedit berkas yang menggunakan web-file system berbeda dengan
menggunakan aplikasi seperti Windows Explorer. Untuk mengedit sebuah file dengan web-file system, kita harus
menduplikasi berkas tersebut dahulu dari web-file system ke komputer lokal, mengeditnya di komputer lokal, dan
mengirim file tersebut kembali ke sistem dengan menggunakan nama berkas yang sama.
Sebagai contoh, kita dapat mengizinkan semua pengguna yang terdaftar untuk melihat berkas-berkas yang ada di
direktori (tetapi mereka tidak dapat mengedit atau menghapus berkas tersebut). Contoh lainnya, kita dapat
mengijinkan satu pengguna saja untuk melakukan apapun terhadap sebuah direktori dan segala isinya (ijin untuk
melihat semua berkas, mengeditnya, menambah berkas bahkan menghapus isi berkas). Kita juga dapat
memberikan kesempatan bagi pengguna untuk mengubah izin dan kontrol akses dari sebuah isi direktori, namun
hal tersebut biasanya di luar kebiasaan, sebab seharusnya satu-satunya pengguna yang berhak mengubah izin
adalah kita sendiri.
Sistem berkas web memungkinkan kita untuk menspesifikasikan suatu akses dalam tingkatan berkas. Jadi, kita
dapat mengijinkan seluruh orang untuk melihat isi dari sebuah direktori atau mengijinkan sebagian kecil
pengguna saja untuk mengakses suatu direktori. Bahkan, dalam kenyataannya, kita dapat menspesifikasikan
jenis akses yang berbeda dengan jumlah pengguna yang berbeda pula.
210Bab 6. Sistem Berkas
Kebanyakan pada sistem banyak pengguna menerapkan konsep direktor berkas owner/user dan group.
• Owner: pengguna yang dapat mengubah atribut, memberikan akses, dan memiliki sebagian besar kontrol di
dalam sebuah berkas atau direktori.
• Group: sebagian pengguna yang sedang berbagi berkas.
Remote File System
Jaringan menyebabkan berbagi data terjadi di seluruh dunia. Dalam metode implementasi pertama, yang
digunakan untuk berbagi data adalah program FTP (File Transfer Protocol). Yang kedua terbesar adalah DFS
(Disributed File System) yang memungkinkan remote direktori terlihat dari mesin lokal. Metode yang ketiga
adalah WWW (World Wide Web)
FTP digunakan untuk akses anonim (mentransfer file tanpa memiliki account di sistem remote) dan akses
autentik (membutuhkan ijin). WWW biasanya menggunakan akses anonim, dan DFS menggunakan akses
autentik.
Cient-Server Model
• server: mesin yang berisi berkas
• klien: mesin yang mengakses berkas
Server dapat melayani banyak pengguna dan klien dapat menggunakan banyak server. Proses identifikasi klien
biasanya sulit, dan cara yang biasa digunakan adalah melacak alamat IP, namun karena alamat IP dapat
dipalsukan, cara ini menjadi kurang efektif. Ada juga yang menggunakan proses kunci terenkripsi, namun hal ini
lebih rumit lagi, sebab klien-server harus menggunakan algoritma enkripsi yang sama dan pertukaran kunci yang
aman.
6.3.3. Proteksi
Dalam pembahasan mengenai proteksi berkas, kita akan berbicara lebih mengenai sisi keamanan dan mekanisme
bagaimana menjaga keutuhan suatu berkas dari gangguan akses luar yang tidak dikehendaki. Sebagai contoh
bayangkan saja Anda berada di suatu kelompok kerja dimana masing-masing staf kerja disediakan komputer dan
mereka saling terhubung membentuk suatu jaringan; sehingga setiap pekerjaan/dokumen/ berkas dapat
dibagi-bagikan ke semua pengguna dalam jaringan tersebut. Misalkan lagi Anda harus menyerahkan berkas
RAHASIA.txt ke atasan Anda, dalam hal ini Anda harus menjamin bahwa isi berkas tersebut tidak boleh
diketahui oleh staf kerja lain apalagi sampai dimodifikasi oleh orang yang tidak berwenang. Suatu mekanisme
pengamanan berkas mutlak diperlukan dengan memberikan batasan akses ke setiap pengguna terhadap berkas
tertentu.
Tipe Akses
Proteksi berkaitan dengan kemampuan akses langsung ke berkas tertentu. Panjangnya, apabila suatu sistem telah
menentukan secara pasti akses berkas tersebut selalu ditutup atau selalu dibebaskan ke setiap pengguna lain
maka sistem tersebut tidak memerlukan suatu mekanisme proteksi. Tetapi tampaknya pengimplementasian
211Bab 6. Sistem Berkas
seperti ini terlalu ekstrim dan bukan pendekatan yang baik. Kita perlu membagi akses langsung ini menjadi
beberapa jenis-jenis tertentu yang dapat kita atur dan ditentukan (akses yang terkontrol).
Dalam pendekatan ini, kita mendapatkan suatu mekanisme proteksi yang dilakukan dengan cara membatasi jenis
akses ke suatu berkas. Beberapa jenis akses tersebut antara lain:
• Read/Baca: membaca berkas
• Write/Tulis: menulis berkas
• Execute/Eksekusi: memasukkan berkas ke memori dan dieksekusi
• Append/Sisip: menulis informasi baru pada baris akhir berkas
• Delete/Hapus: menghapus berkas
• List/Daftar: mendaftar nama dan atribut berkas
Operasi lain seperti rename, copying, atau editing yang mungkin terdapat di beberapa sistem merupakan
gabungan dari beberapa jenis kontrol akses diatas. Sebagai contoh, menyalin sebuah berkas dikerjakan sebagai
runtutan permintaan baca dari pengguna. Sehingga dalam hal ini, seorang pengguna yang memiliki kontrol akses
read dapat pula meng-copy, mencetak dan sebagainya.
Kontrol Akses
Pendekatan yang paling umum dipakai dalam mengatasi masalah proteksi berkas adalah dengan membiarkan
akses ke berkas ditentukan langsung oleh pengguna (dalam hal ini pemilik/pembuat berkas itu). Sang pemilik
bebas menentukan jenis akses apa yang diperbolehkan untuk pengguna lain. Hal ini dapat dilakukan dengan
menghubungkan setiap berkas atau direktori dengan suatu daftar kontrol-akses (Access-Control Lists/ACL) yang
berisi nama pengguna dan jenis akses apa yang diberikan kepada pengguna tersebut.
Sebagai contoh dalam suatu sistem VMS, untuk melihat daftar direktori berikut daftar kontrol-akses, ketik
perintah "DIR/SECURITY", atau "DIR/SEC". Salah satu keluaran perintah itu adalah daftar seperti berikut ini:
WWW-HOME.DIR;1 [HMC2000,WWART] (RW,RWED„E)
(IDENTIFIER=WWW_SERVER_ACCESS,OPTIONS=DEFAULT,ACCESS=READ)
(IDENTIFIER=WWW_SERVER_ACCESS,ACCESS=READ)
Baris pertama menunjukkan nama berkas tersebut WWW-HOME.DIR kemudian disebelahnya nama grup
pemilik HMC2000 dan nama pengguna WWART diikuti dengan sekelompok jenis akses RW, RWED„E
(R=Baca, W=Tulis, E=Eksekusi, D=Hapus). Dua baris dibawahnya itulah yang disebut daftar konrol-akses.
Satu-satu baris disebut sebagai masukan kontrol-akses (Access Control Entry/ACE) dan terdiri dari 3 bagian.
Bagian pertama disebut sebagai IDENTIFIER/Identifikasi, menyatakan nama grup atau nama pengguna (seperti
[HMC2000, WWART]) atau akses khusus (seperti WWW_SERVER_ACCESS). Bagian kedua merupakan
daftar OPTIONS/Plihan-pilihan. Dan terakhir adalah daftar ijin ACCESS/akses, seperti read atau execute, yang
diberikan kepada siapa saja yang mengacu pada bagian Identifikasi.
Cara kerjanya: apabila seorang pengguna meminta akses ke suatu berkas/direktori, sistem operasi akan
memeriksa ke daftar kontrol-akses apakah nama pengguna itu tercantum dalam daftar tersebut. Apabila benar
terdaftar, permintaan akses akan diberikan dan sebaliknya bila tidak, permintaan akses akan ditolak.
Pendekatan ini memiliki keuntungan karena penggunaan metodologi akses yang kompleks sehingga sulit
ditembus sembarangan. Masalah utamanya adalah ukuran dari daftar akses tersebut. Bayangkan apabila kita
mengijinkan semua orang boleh membaca berkas tersebut, kita harus mendaftar semua nama pengguna disertai
ijin akses baca mereka. Lebih jauh lagi, tehnik ini memiliki dua konsekuensi yang tidak diinginkan:
212Bab 6. Sistem Berkas
• Pembuatan daftar semacam itu merupakan pekerjaan yang melelahkan dan tidak efektif.
• Entri direktori yang sebelumnya memiliki ukuran tetap, menjadi ukuran yang dapat berubah-ubah,
mengakibatkan lebih rumitnya manajemen ruang kosong.
Masalah ini dapat diselesaikan dengan penggunaan daftar akses yang telah disederhanakan.
Untuk menyederhanakan ukuran daftar kontrol akses, banyak sistem menggunakan tiga klasifikasi pengguna
sebagai berikut:
• Owner: pengguna yang telah membuat berkas tersebut.
• Group: sekelompok pengguna yang saling berbagi berkas dan membutuhkan akses yang sama.
• Universe: keseluruhan pengguna.
Pendekatan yang dipakai belum lama ini adalah dengan mengkombinasikan daftar kontrol-akses dengan konsep
kontrol- akses pemilik, grup dan semesta yang telah dijabarkan diatas. Sebagai contoh, Solaris 2.6 dan versi
berikutnya menggunakan tiga klasifikasi kontrol-akses sebagai pilihan umum, tetapi juga menambahkan secara
khusus daftar kontrol-akses terhadap berkas/direktori tertentu sehingga semakin baik sistem proteksi berkasnya.
Contoh lain yaitu sistem UNIX dimana konrol-aksesnya dinyatakan dalam 3 bagian. Masing-masing bagian
merupakan klasifikasi pengguna (yi.pemilik, grup dan semesta). Setiap bagian kemudian dibagi lagi menjadi 3
bit jenis akses -rwx, dimana r mengontrol akses baca, w mengontrol akses tulis dan x mengontrol eksekusi.
Dalam pendekatan ini, 9 bit diperlukan untuk merekam seluruh informasi proteksi berkas.
Berikut adalah keluaran dari perintah "ls -al" di sistem UNIX:
-rwxr-x--- 1 david karyawan 12210 Nov 14 20:12 laporan.txt
Baris di atas menyatakan bahwa berkas laporan.txt memiliki akses penuh terhadap pemilik berkas (yi.david),
grupnya hanya dapat membaca dan mengeksekusi, sedang lainnya tidak memiliki akses sama sekali.
Pendekatan Pengamanan Lainnya
Salah satu pendekatan lain terhadap masalah proteksi adalah dengan memberikan sebuah kata kunci (password)
ke setiap berkas. Jika kata-kata kunci tersebut dipilih secara acak dan sering diganti, pendekatan ini sangatlah
efektif sebab membatasi akses ke suatu berkas hanya diperuntukkan bagi pengguina yang mengetahui kata kunci
tersebut.
Meskipun demikian, pendekatan ini memiliki beberapa kekurangan, diantaranya:
• Kata kunci yang perlu diingat oleh pengguna akan semakin banyak, sehingga membuatnya menjadi tidak
praktis.
• Jika hanya satu kata kunci yang digunakan di semua berkas, maka jika sekali kata kunci itu diketahui oleh
orang lain, orang tersebut dapat dengan mudah mengakses semua berkas lainnya. Beberapa sistem (contoh:
TOPS-20) memungkinkan seorang pengguna untuk memasukkaan sebuah kata kunci dengan suatu
subdirektori untuk menghadapi masalah ini, bukan dengan satu berkas tertentu.
• Umumnya, hanya satu kata kunci yang diasosiasikan dengan semua berkas lain. Sehingga, pengamanan hanya
menjadi semua-atau-tidak sama sekali. Untuk mendukung pengamanan pada tingkat yang lebih mendetail,
kita harus menggunakan banyak kata kunci.
213Bab 6. Sistem Berkas
6.4. Implementasi Sistem Berkas
6.4.1. Struktur Sistem Berkas
Disk yang merupakan tempat terdapatnya sistem berkas menyediakan sebagian besar tempat penyimpanan
dimana sistem berkas akan dikelola. Disk memiliki dua karakteristik penting yang menjadikan disk sebagai
media yang tepat untuk menyimpan berbagai macam berkas, yaitu:
• Data dapat ditulis ulang di disk tersebut, hal ini memungkinkan untuk membaca, memodifikasi, dan menulis di
disk tersebut.
• Dapat diakses langsung ke setiap blok di disk. Hal ini memudahkan untuk mengakses setiap berkas baik
secara berurut maupun tidak berurut, dan berpindah dari satu berkas ke berkas lain dengan hanya mengangkat
head disk dan menunggu disk berputar.
Gambar 6-7. Disk Organization
Untuk meningkatkan efisiensi I/O, pengiriman data antara memori dan disk dilakukan dalam setiap blok. Setiap
blok merupakan satu atau lebih sektor. Setiap disk memiliki ukuran yang berbeda-beda, biasanya berukuran 512
bytes.
214Bab 6. Sistem Berkas
Sistem operasi menyediakan sistem berkas agar data mudah disimpan, diletakkan dan diambil kembali dengan
mudah. Terdapat dua masalah desain dalam membangun suatu sistem berkas. Masalah pertama adalah definisi
dari sistem berkas. Hal ini mencakup definisi berkas dan atributnya, operasi ke berkas, dan struktur direktori
dalam mengorganisasikan berkas-berkas. Masalah kedua adalah membuat algoritma dan struktur data yang
memetakan struktur logikal sistem berkas ke tempat penyimpanan sekunder.
Sistem berkas dari sistem operasi yang sudah modern diimplementasikan dengan menggunakan struktur
berlapis. Keuntungan struktur berlapis ini adalah fleksibilitas yang dimilikinya. Penggunaan dari struktur
berlapis ini memungkinkan adanya implementasi yang lebih dari satu secara bersamaan, terutama pada I/O
Control dan tingkatan organisasi berkas. Hal ini memungkinkan untuk mendukung lebih dari satu implementasi
sistem berkas.
Gambar 6-8. Layered File System
Lapisan struktur sistem berkas menghubungkan antara perangkat keras dengan aplikasi program yang ada, yaitu
(dari yang terendah):
• I/O control, terdiri atas driver device dan interrupt handler. Driver device adalah perantara komunikasi antara
sistem operasi dengan perangkat keras. Input didalamnya berisikan perintah tingkat tinggi seperti "ambil blok
133", sedangkan output-nya adalah perintah tingkat rendah, instruksi spesifik perangkat keras yang digunakan
oleh controller perangkat keras.
• Basic file system, diperlukan untuk mengeluarkan perintah generic ke device driver untuk read dan write pada
suatu blok dalam disk.
• File-organization module, informasi tentang alamat logika dan alamat fisik dari berkas tersebut. Modul ini
juga mengatur sisa disk dengan melacak alamat yang belum dialokasikan dan menyediakan alamat tersebut
saat pengguna ingin menulis berkas ke dalam disk. Di dalam File-organization module juga terdapat freespace manager.
• Logical file-system, tingkat ini berisi informasi tentang simbol nama berkas, struktur dari direktori, dan
proteksi dan sekuriti dari berkas tersebut. Sebuah File Control Block (FCB) menyimpan informasi tentang
215Bab 6. Sistem Berkas
berkas, termasuk kepemilikan, izin dan lokasi isi berkas.
Di bawah ini merupakan contoh dari kerja struktur berlapis ini ketika suatu program mau membaca informasi
dari disk. Urutan langkahnya:
1. Application program memanggil sistem berkas dengan system call.
Contoh: read (fd, input, 1024) akan membaca section sebesar 1 Kb dari disk dan menempatkannya ke
variabel input.
2. Diteruskan ke system call interface.
System call merupakan software interrupt. Jadi, interrupt handler sistem operasi akan memeriksa apakah
system call yang menginterupsi. Interrupt handler ini akan memutuskan bagian dari sistem operasi yang
bertanggung jawab untuk menangani system call. Interrupt handler akan meneruskan system call.
3. Diteruskan ke logical file system.
Memasuki lapisan sistem berkas. Lapisan ini menyediakan system call, operasi yang akan dilakukan dan
jenis berkas. Yang perlu ditentukan selanjutnya adalah file organization module yang akan meneruskan
permintaan ini. File organization module yang akan digunakan tergantung dari jenis sistem berkas dari
berkas yang diminta.
Contoh: Misalkan kita menggunakan LINUX dan berkas yang diminta ada di Windows 95. Lapisan logical
file system akan meneruskan permintaan ke file organization module dari Windows 95.
4. Diteruskan ke file organization module.
File organization module yang mengetahui pengaturan (organisasi) direktori dan berkas pada disk. Sistem
berkas yang berbeda memiliki organisasi yang berbeda. Windows 95 menggunakan VFAT-32. Windows NT
menggunakan format NTFS. Linux menggunakan EXT2. Sistem operasi yang paling modern memiliki
beberapa file organization module sehingga dapat membaca format yang berbeda.
Pada contoh di atas, logical file system telah meneruskan permintaan ke file organization module VFAT32.
Modul ini menterjemahkan nama berkas yang ingin dibaca ke lokasi fisik yang biasanya terdiri dari disk
antarmuka, disk drive, surface, cylinder, track, sector.
5. Diteruskan ke basic file system.
Dengan adanya lokasi fisik, kita dapat memberikan perintah ke piranti keras yang dibutuhkan. Hal ini
merupakan tanggungjawab basic file system. Basic file system ini juga memiliki kemampuan tambahan
seperti buffering dan caching.
Contoh: Sektor tertentu yang dipakai untuk memenuhi permintaan mungkin saja berada dalam buffers atau
caches yang diatur oleh basic file system. Jika terjadi hal seperti ini, maka informasi akan didapatkan secara
otomatis tanpa perlu membaca lagi dari disk.
6. I/O Control
Tingkatan yang paling rendah ini yang memiliki cara untuk memerintah/memberitahu piranti keras yang
diperlukan.
216Bab 6. Sistem Berkas
6.4.2. Implementasi Sistem Berkas
Gambaran
Untuk mengimplementasikan suatu sistem berkas biasanya digunakan beberapa struktur on-disk dan in-memory.
Struktur ini bervariasi tergantung pada sistem operasi dan sistem berkas, tetapi beberapa prinsip dasar harus tetap
diterapkan. Pada struktur on-disk, sistem berkas mengandung informasi tentang bagaimana mem-boot sistem
operasi yang disimpan, jumlah blok, jumlah dan lokasi blok yang masih kosong, struktur direktori, dan berkas
individu.
Struktur on-disk:
• Boot Control Block
Informasi yang digunakan untuk menjalankan mesin mulai dari partisi yang diinginkan untuk menjalankan
mesin mulai dari partisi yang diinginkan. Dalam UPS disebut boot block. Dalam NTFS disebut partition boot
sector.
• Partition Block Control
Spesifikasi atau detil-detil dari partisi (jumlah blok dalam partisi, ukuran blok, ukuran blok, dsb). Dalam UPS
disebut superblock. Dalam NTFS disebut tabel master file.
• Struktur direktori
Mengatur berkas-berkas.
• File Control Block (FCB)
Detil-detil berkas yang spesifik. Di UPS disebut inode. Di NTFS, informasi ini disimpan di dalam tabel
Master File.
Struktur in-memory:
• Tabel Partisi in-memory
Informasi tentang partisi yang di-mount.
• Struktur Direktori in-memory
Menyimpan informasi direktori tentang direktori yang paling sering diakses.
• Tabel system-wide open-file
• menyimpan open count (informasi jumlah proses yang membuka berkas tsb)
217Bab 6. Sistem Berkas
• menyimpan atribut berkas (pemilik, proteksi, waktu akses, dsb), dan lokasi file blocks.
• Tabel ini digunakan bersama-sama oleh seluruh proses.
• Tabel per-process open-file
• menyimpan pointer ke entri yang benar dalam tabel open- file
• menyimpan posisi pointer pada saat itu dalam berkas.
• modus akses
Untuk membuat suatu berkas baru, program aplikasi memanggil logical file system. Logical file system
mengetahui format dari struktur direktori. Untuk membuat berkas baru, logical file system akan mengalokasikan
FCB, membaca direktori yang benar ke memori, memperbaharui dengan nama berkas dan FCB yang baru dan
menulisnya kembali ke dalam disk.
Beberapa sistem operasi, termasuk UNIX, memperlakukan berkas sebagai direktori. Sistem operasi Windows
NT mengimplementasi beberapa system calls untuk berkas dan direktori. Windows NT memperlakukan direktori
sebagai sebuah kesatuan yang berbeda dengan berkas. Logical file system dapat memanggil file-organization
module untuk memetakan direktori I/O ke disk-block numbers, yang dikirimkan ke sistem berkas dasar dan I/O
control system. File- organization module juga mengalokasikan blok untuk penyimpanan data-data berkas.
Setelah berkas selesai dibuat, mula-mula harus dibuka terlebih dahulu. Perintah open dikirim nama berkas ke
sistem berkas. Ketika sebuah berkas dibuka, struktur direktori mencari nama berkas yang diinginkan. Ketika
berkas ditemukan, FCD disalin ke ke tabel system-wide open-file pada memori. Tabel ini juga mempunyai entri
untuk jumlah proses yang membuka berkas tersebut.
Selanjutnya, entri dibuat di tabel per-process open-file dengan penunjuk ke entri di dalam tabel system-wide
open-file. Seluruh operasi pada berkas akan diarahkan melalui penunjuk ini.
Partisi dan Mounting
Setiap partisi dapat merupakan raw atau cooked. Raw adalah partisi yang tidak memiliki sistem berkas dan
cooked sebaliknya. Raw disk digunakan jika tidak ada sistem berkas yang tepat. Raw disk juga dapat menyimpan
informasi yang dibutuhkan oleh sistem disk RAID dan database kecil yang menyimpan informasi konfigurasi
RAID.
Informasi boot dapat disimpan di partisi yang berbeda. Semuanya mempunyai formatnya masing-masing karena
pada saat boot, sistem tidak punya sistem berkas dari perangkat keras dan tidak dapat memahami sistem berkas.
Root partition yang mengandung kernel sistem operasi dan sistem berkas yang lain, di-mount saat boot. Partisi
yang lain di-mount secara otomatis atau manual (tergantung sistem operasi). Sistem operasi menyimpan dalam
struktur tabel mount dimana sistem berkas di-mount dan jenis dari sistem berkas.
Pada UNIX, sistem berkas dapat di-mount di direktori manapun. Ini diimplementasikan dengan mengatur flag di
salinan in-memory dari jenis direktori itu. Flag itu mengindikasikan bahwa direktori adalah puncak mount.
Sistem Berkas Virtual
Suatu direktori biasanya menyimpan beberapa berkas dengan jenis-jenis yang berbeda. Sistem operasi harus
dapat menyatukan berkas-berkas berbeda itu di dalam suatu struktur direktori. Untuk menyatukan berkas-berkas
218Bab 6. Sistem Berkas
tersebut digunakan metode implementasi beberapa jenis sistem berkas dengan menulis di direktori dan file
routine untuk setiap jenis.
Sistem operasi pada umumnya, termasuk UNIX, menggunakan teknik berorientasi objek untuk menyederhakan,
mengorganisir dan mengelompokkannya sesuai dengan implementasinya. Penggunaan metode ini
memungkinkan berkas-berkas yang berbeda jenisnya diimplementasikan dalam struktur yang sama.
Implementasi spesifiknya menggunakan struktur data dan prosedur untuk mengisolasi fungsi dasar dari system
call.
Gambar 6-9. Schematic View of Virtual File System
Implementasi sistem berkas terdiri dari 3 lapisan utama:
• Interface sistem berkas: perintahopen, read, write, close dan file descriptor.
• Virtual File System(VFS)
Virtual file system adalah suatu lapisan perangkat lunak dalam kernel yang menyediakan antar muka sistem
berkas untuk program userspace. VFS juga menyediakan suatu abstraksi dalam kernel yang mengijinkan
implementasi sistem berkas yang berbeda untuk muncul.
VFS ini memiliki 2 fungsi yang penting yaitu:
• Memisahkan operasi berkas generic dari implementasinya dengan mendefinisikan VFS antar muka yang
masih baru.
• VFS didasarkan pada struktur file-representation yang dinamakan vnode, yang terdiri dari designator
numerik untuk berkas unik network-wide.
219Bab 6. Sistem Berkas
• Sistem berkas lokal dan sistem berkas remote untuk jaringan.
6.4.3. Implementasi Direktori
Sebelum sebuah berkas dapat dibaca, berkas tersebut harus dibuka terlebih dahulu. Saat berkas tersebut dibuka,
sistem operasi menggunakan path name yang dimasukkan oleh pengguna untuk mengalokasikan direktori entri
yang menyediakan informasi yang dibutuhkan untuk menemukan block disk tempat berkas itu berada.
Tergantung dari sistem tersebut, informasi ini dapat berupa alamat disk dari berkas yang bersangkutan
(contiguous allocation), nomor dari blok yang pertama (kedua skema linked list), atau nomor dari inode. Dalam
semua kasus, fungsi utama dari direktori entri adalah untuk memetakan nama ASCII dari berkas yang
bersangkutan kepada informasi yang dibutuhkan untuk mengalokasikan data.
Masalah berikutnya yang kemudian muncul adalah dimana atribut yang dimaksud akan disimpan. Kemungkinan
paling nyata adalah menyimpan secara langsung di dalam direktori entri, dimana kebanyakan sistem
menggunakannya. Untuk sistem yang menggunakan inodes, kemungkinan lain adalah menyimpan atribut ke
dalam inode, selain dari direktori entri. Cara yang terakhir ini mempunyai keuntungan lebih dibandingkan
menyimpan dalam direktori entri.
Cara pengalokasian direktori dan pengaturan direktori dapat meningkatkan efisiensi, performa dan kehandalan.
Ada beberapa macam algoritma yang dapat digunakan.
Algoritma Linear List
Metode paling sederhana. Menggunakan nama berkas dengan penunjuk ke data blok.
Proses:
• Mencari (tidak ada nama berkas yang sama).
• Menambah berkas baru pada akhir direktori.
• Menghapus (mencari berkas dalam direktori dan melepaskan tempat yang dialokasikan).
Penggunaan suatu berkas:
Memberi tanda atau menambahkan pada daftar direktori bebas.
Kelemahan:
Pencarian secara linier (linier search) untuk mencari sebuah berkas, sehingga implementasi sangat lambat saat
mengakses dan mengeksekusi berkas.
Solusi:
Linked list dan Software Cache
Algoritma Hash Table
Linear List menyimpan direktori entri, tetapi sruktur data hash juga digunakan.
220Bab 6. Sistem Berkas
Proses:
Hash table mengambil nilai yang dihitung dari nama berkas dan mengembalikan sebuah penunjuk ke nama
berkas yang ada di linier list.
Kelemahan:
• Ukuran tetap:
• Adanya ketergantungan fungsi hash dengan ukuran hash table
Alternatif:
Chained-overflow hash table yaitu setiap hash table mempunyai linked list dari nilai individual dan crash dapat
diatasi dengan menambah tempat pada linked list tersebut. Namun penambahan ini dapat memperlambat.
Direktori pada CP/M
Direktori pada CP/M merupakan direktori entri yang mencakup nomor block disk untuk setiap berkas. Contoh
direktori ini (Golden dan Pechura, 1986), berupa satu direktori saja. Jadi, Semua sistem berkas harus melihat
nama berkas dan mencari dalam direktori satu-satunya ini.
Direktori ini terdiri dari 3 bagian yaitu:
• User Code
Merupakan bagian yang menetapkan track dari user mana yang mempunyai berkas yang bersangkutan, saat
melakukan pencarian, hanya entri tersebut yang menuju kepada logged-in user yang bersangkutan. Dua
bagian berikutnya terdiri dari nama berkas dan ekstensi dari berkas.
• Extent
Bagian ini diperlukan oleh berkas karena berkas yang berukuran lebih dari 16 blok menempati direktori entri
yang banyak. Bagian ini digunakan untuk memberitahukan entri mana yang datang pertama, kedua, dan
seterusnya.
• Block Count
Bagian ini memberitahukan seberapa banyak dari ke-enambelas block disk potensial, sedang digunakan.
Enambelas bagian akhir berisi nomor block disk yang bersangkutan. Bagian blok yang terakhir dapat saja
penuh, jadi sistem tidak dapat menentukan kapasitas pasti dari berkas sampai ke byte yang terakhir.
Saat CP/M menemukan entri, CP/M juga memakai nomor block disk, saat berkas disimpan dalam direktori
entri, dan juga semua atributnya. Jika berkas menggunakan block disk lebih dari satu entri, berkas
dialokasikan dalam direktori yang ditambahkan.
Direktori pada MS-DOS
Merupakan sistem dengan tree hierarchy directory. Mempunyai panjang 32 bytes, yang mencakup nama berkas,
atribut, dan nomor dari block disk yang pertama. Nomor dari block disk yang pertama digunakan sebagai indeks
dari tabel MS-DOS direktori entri. Dengan sistem rantai, semua blok dapat ditemukan.
221Bab 6. Sistem Berkas
Dalam MS-DOS, direktori dapat berisi direktori lain, tergantung dari hirarki sistem berkas. Dalam MS-DOS,
program aplikasi yang berbeda dapat dimulai oleh setiap program dengan membuat direktori dalam direktori
root, dan menempatkan semua berkas yang bersangkutan di dalam sana. Jadi antar aplikasi yang berbeda tidak
dapat terjadi konflik.
Direktori pada UNIX
Struktur direktori yang digunakan dalam UNIX adalah struktur direktori tradisional. Seperti yang terdapat dalam
gambar direktori entri dalam UNIX, setiap entri berisi nama berkas dan nomor inode yang bersangkutan. Semua
informasi dari jenis, kapasitas, waktu dan kepemilikan, serta block disk yang berisi inode. Sistem UNIX
terkadang mempunyai penampakan yang berbeda,tetapi pada beberapa kasus, direktori entri biasanya hanya
string ASCII dan nomor inode.
Gambar 6-10. A UNIX directory entry
Saat berkas dibuka, sistem berkas harus mengambil nama berkas dan mengalokasikan block disk yang
bersangkutan, sebagai contoh, nama path /usr/ast/mbox dicari, dan kita menggunakan UNIX sebagai contoh,
tetapi algoritma yang digunakan secara dasar sama dengan semua hirarki sistem direktori sistem.
Pertama, sistem berkas mengalokasikan direktori root. Dalam UNIX inode yang bersangkutan ditempatkan
dalam tempat yang sudah tertentu dalam disk. Kemudian, UNIX melihat komponen pertama dari path, usr dalam
direktori root menemukan nomor inode dari direktori /usr. Mengalokasikan sebuah nomor inode adalah secara
straight-forward, sejak setiap inode mempunyai lokasi yang tetap dalam disk. Dari inode ini, sistem
mengalokasikan direktori untuk /usr dan melihat komponen berikutnya, dst. Saat dia menemukan entri untuk ast,
dia sudah mempunyai inode untuk direktori /ust/ast. Dari inode ini, dia dapat menemukan direktorinya dan
melihat mbox. Inode untuk berkas ini kemudian dibaca ke dalam memori dan disimpan disana sampai berkas
tersebut ditutup.
Nama path dilihat dengan cara yang relatif sama dengan yang absolut. Dimulai dari direktori yang bekerja
sebagai pengganti root directory. Setiap direktori mempunyai entri untuk. dan .. yang dimasukkan ke dalam saat
direktori dibuat. Entri. mempunyai nomor inode yang menunjuk ke direktori di atasnya/orangtua (parent), .
kemudian melihat ../dick/prog.c hanya melihat tanda .. dalam direktori yang bekerja, dengan menemukan nomor
inode dalam direktori di atasnya / parent dan mencari direktori disk. Tidak ada mekanisme spesial yang
dibutukan untuk mengatasi masalah nama ini. Sejauh masih di dalam sistem direktori, mereka hanya merupakan
ASCII string yang biasa.
6.5. Filesystem Hierarchy Standard
6.5.1. Pendahuluan
Filesystem Hierarchy Standard (FHS) adalah standar yang digunakan oleh perangkat lunak dan pengguna untuk
mengetahui lokasi dari berkas atau direktori yang berada pada komputer. Hal ini dilakukan dengan cara
222Bab 6. Sistem Berkas
menetapkan prinsip-prinsip dasar pada setiap daerah pada sistem berkas, menetapkan berkas dan direktori
minimum yang dibutuhkan, mengatur banyaknya pengecualian dan mengatur kasus yang sebelumnya pernah
mengalami konflik secara spesifik.
Dokumen FHS ini digunakan oleh pembuat perangkat lunak untuk menciptakan suatu aplikasi yang compliant
dengan FHS. Selain itu, dokumen ini juga digunakan oleh para pembuat sistem operasi untuk menyediakan
sistem yang compliant dengan FHS.
Komponen dari nama berkas yang dapat berubah-ubah, akan diapit oleh tanda < dan >, sedangkan komponen
yang bersifat pilihan, akan diapit oleh tanda "[" dan "]" dan dapat dikombinasi dengan ’<’ dan ’>’. Sebagai
contoh, jika nama berkas diperbolehkan untuk menggunakan atau tidak menggunakan ekstensi, akan ditulis
sebagai <nama berkas>[.<ekstensi>]. Sedangkan, variabel substring dari nama direktori atau nama berkas akan
ditulis sebagai "*".
6.5.2. Sistem Berkas
Terdapat dua perbedaan yang saling independen dalam berkas, yaitu shareable vs. unshareable dan variable vs.
static. Secara umum, berkas-berkas yang memiliki perbedaan seperti di atas sebaiknya diletakkan dalam
direktori yang berbeda. Hal ini mempermudah penyimpanan berkas dengan karakteristik yang berbeda dalam
sistem berkas yang berbeda.
Berkas shareable adalah berkas yang disimpan di satu komputer, namun masih dapat digunakan oleh komputer
lainnya. Sedangkan berkas unshareable tidak dapat digunakan bersama-sama antar komputer yang satu dan
lainnya.
Berkas static meliputi berkas biner, pustaka, dokumentasi dan berkas-berkas lain yang tidak dapat diubah tanpa
intervensi administrator sistem. Sedangkan, berkas variable adalah semua berkas yang bukan merupakan berkas
static.
6.5.3. Sistem Berkas Root
Tujuan dan Prasyarat
Isi dari sistem berkas root harus memadai untuk melakukan operasi boot, restore, recover, dan atau perbaikan
pada sistem.
Untuk melakukan operasi boot pada sistem, perlu dilakukan hal-hal untuk mounting sistem berkas lain. Hal ini
meliputi konfigurasi data, informasi boot loader dan keperluan-keperluan lain yang mengatur start-up data.
Untuk melakukan recovery dan atau perbaikan dari sistem, hal-hal yang dibutuhkan untuk mendiagnosa dan
memulihkan sistem yang rusak harus diletakkan dalam sistem berkas root.
Untuk restore suatu sistem, hal-hal yang dibutuhkan untuk back-up sistem, seperti floppy disk, tape, dsb, harus
berada dalam sistem berkas root.
Aplikasi pada komputer tidak diperbolehkan untuk membuat berkas atau subdirektori di dalam direktori root,
karena untuk meningkatkan performance dan keamanan, partisi root sebaiknya dibuat seminimum mungkin.
Selain itu, lokasi-lokasi lain dalam FHS menyediakan fleksibilitas yang lebih dari cukup untuk package
manapun.
Terdapat beberapa direktori yang merupakan persyaratan dari sistem berkas root. Setiap direktori akan dibahas
dalam sub-bagian di bawah. /usr dan /var akan dibahas lebih mendetail karena direktori tersebut sangat
kompleks.
223Bab 6. Sistem Berkas
Tabel 6-1. Direktori/link yang dibutuhkan dalam /.
Direktori Keterangan
bin Instruksi dasar biner
boot Berkas statik untuk me-load boot
dev Berkas peranti
etc Konfigurasi sistem host-specific
lib Pustaka dasar bersama dan modul kernel
media Mount point untuk media-media removable
mnt Mount point untuk mounting sistem berkas secara
temporer
opt Penambahan aplikasi package perangkat lunak
sbin Sistem biner dasar
srv Data untuk servis yang disediakan oleh sistem
tmp Berkas temporer
usr Hirarki sekunder
var Data variabel
Pilihan Spesifik
Tabel 6-2. Direktori/link yang dibutuhkan dalam /.
Direktori Keterangan
home Direktori home pengguna
lib<qual> Format alternatif dari pustaka dasar bersama
root Direktori home untuk root pengguna
/bin: Perintah biner dasar (untuk digunakan oleh
semua pengguna)
/bin berisi perintah-perintah yang dapat digunakan oleh administrator sistem dan pengguna, namun dibutuhkan
apabila tidak ada sistem berkas lain yang di-mount. /bin juga berisi perintah-perintah yang digunakan secara
tidak langsung oleh script.
/boot: Berkas statik untuk me-load boot
Dalam direktori ini, terdapat segala sesuatu yang dibutuhkan untuk melakukan bootproses. /boot menyimpan
data yang digunakan sebelum kernel mulai menjalankan program mode pengguna. Hal ini dapat meliputi sektor
master boot dan sektor berkas map.
224Bab 6. Sistem Berkas
/dev: Berkas peranti
Direktori /dev adalah lokasi dari berkas-berkas peranti. Direktori ini harus memiliki perintah bernama
"MAKEDEV" yang dapat digunakan untuk menciptakan peranti secara manual. Jika dibutuhkan, "MAKEDEV"
harus memiliki segala ketentuan untuk menciptakan peranti-peranti yang ditemukan dalam sistem, bukan hanya
implementasi partikular yang di-install.
/etc: Konfigurasi sistem host-specific
Direktori /etc mernyimpan berkas-berkas konfigurasi. Yang dimaksud berkas konfigurasi adalah berkas lokal
yang digunakan untuk mengatur operasi dari sebuah program. Berkas ini harus statik dan bukan merupakan biner
executable.
/home: Direktori home pengguna
/home adalah konsep standar sistem berkas yang site-specific, artinya setup dalam host yang satu dan yang
lainnya akan berbeda-beda. Maka, program sebaiknya tidak diletakkan dalam direktori ini.
/lib: Pustaka dasar bersama dan modul kernel
Direktori /lib meliputi gambar-gambar pustaka bersama yang dibutuhkan untuk boot sistem tersebut dan
menjalankan perintah dalam sistem berkas root, contohnya berkas biner di /bin dan /sbin.
/lib<qual>: Format alternatif dari pustaka dasar
bersama
Pada sistem yang mendukung lebih dari satu format biner, mungkin terdapat satu atau lebih perbedaan dari
direktori /lib. Jika direktori ini terdapat lebih dari satu, maka persyaratan dari isi tiap direktori adalah sama
dengan direktori /lib normalnya, namun /lib<qual>/cpp tidak dibutuhkan.
/media: Mount point media removable
Direktori ini berisi subdirektori yang digunakan sebagai mount point untuk media-media removable seperti
floppy disk, dll. cdrom, dll.
/mnt: Mount point untuk sistem berkas yang
di-mount secara temporer
Direktori ini disediakan agar administrator sistem dapat mount suatu sistem berkas yang dibutuhkan secara
temporer. Isi dari direktori ini adalah issue lokal, dan tidak mempengaruhi sifat-sifat dari program yang sedang
dijalankan.
225Bab 6. Sistem Berkas
/opt: Aplikasi tambahan untuk paket peringkat
lunak
/opt disediakan untuk aplikasi tambahan paket peringkat lunak. Paket yang di-install di /opt harus menemukan
berkas statiknya di direktori /opt/<package> atau /opt/<provider>, dengan <package> adalah nama yang
mendeskripsikan paket perangkat lunak tersebut, dan <provider> adalah nama dari provider yang bersangkutan.
/root: Direktori home untuk root pengguna
Direktori home root dapat ditentukan oleh pengembang atau pilihan-pilihan lokal, namun direktori ini adalah
lokasi default yang direkomendasikan.
/sbin: Sistem Biner
Kebutuhan yang digunakan oleh administrator sistem disimpan di /sbin, /usr/sbin, dan /usr/local/sbin. /sbin berisi
biner dasar untuk boot sistem, mengembalikan sistem, memperbaiki sistem sebagai tambahan untuk biner-biner
di /bin. Program yang dijalankan setelah /usr diketahui harus di-mount, diletakkan dalam /usr/bin. Sedangkan,
program-program milik administrator sistem yang di-install secara lokal sebaiknya diletakkan dalam
/usr/local/sbin.
/srv: Data untuk servis yang disediakan oleh sistem
/srv berisi data-data site-specific yang disediakan oleh sistem.
/tmp: Berkas-berkas temporer
Direktori /tmp harus tersedia untuk program-program yang membutuhkan berkas temporer.
6.5.4. Hirarki /usr
Tujuan
/usr adalah bagian utama yang kedua dari sistem berkas. /usr bersifat shareable dan read-only. Hal ini berarti
/usr bersifat shareable diantara bermacam-macam host FHS-compliant, dan tidak boleh di-write. Package
perangkat lunak yang besar tidak boleh membuat subdirektori langsung di bawah hirarki /usr ini.
Persyaratan
Tabel 6-3. Direktori/link yang dibutuhkan dalam /usr.
Direktori Keterangan
226Bab 6. Sistem Berkas
Direktori Keterangan
bin Sebagian besar perintah pengguna
include Berkas header yang termasuk dalam program-program
C
lib Pustaka
local Hirarki lokal (kosong sesudah instalasi main)
sbin Sistem biner non-vital
share Data arsitektur yang independen
Pilihan spesifik
Tabel 6-4. Direktori/link yang merupakan pilihan dalam /usr.
Direktori Keterangan
X11R6 Sistem X Window, Versi 11 Release 6
games Gamesdan educational biner
lib<qual> Format pustaka alternatif
src Kode source
Link-link simbolik seperti di bawah ini dapat terjadi, apabila terdapat kebutuhan untuk menjaga keharmonisan
dengan sistem yang lama, sampai semua implementasi dapat diasumsikan untuk menggunakan hirarki /var:
• /usr/spool --> /var/spool
• /usr/temp --> /var/tmp
• /usr/spool/locks --> /var/lock
Saat sistem tidak lagi membutuhkan link-link di atas, link tersebut dapat dihapus.
/usr/X11R6: Sistem X Window, Versi 11 Release 6
Hirarki ini disediakan untuk Sistem X Window, Versi 11 Release 6 dan berkas-berkas yang berhubungan. Untuk
menyederhanakan persoalan dan membuat XFree86 lebih kompatibel dengan Sistem X Window, link simbolik di
bawah ini harus ada jika terdapat direktori /usr/X11R6:
• /usr/bin/X11 --> /usr/X11R6/bin
• /usr/lib/X11 --> /usr/X11R6/lib/X11
• /usr/include/X11 --> /usr/X11R6/include/X11
Link-link di atas dikhususkan untuk kebutuhan dari pengguna saja, dan perangkat lunak tidak boleh di-install
atau diatur melalui link-link tersebut.
/usr/bin: Sebagian perintah pengguna
Direktori ini adalah direktori primer untuk perintah- perintah executable dalam sistem.
227Bab 6. Sistem Berkas
/usr/include: Direktori untuk include-files standar
Direktori ini berisi penggunaan umum berkas include oleh sistem, yang digunakan untuk bahasa pemrograman
C.
/usr/lib: Pustaka untuk pemrograman dan package
/usr/lib meliputi berkas objek, pustaka dan biner internal yang tidak dibuat untuk dieksekusi secara langsung
melalui pengguna atau shell script. Aplikasi-aplikasi dapat menggunakan subdirektori tunggal di bawah /usr/lib.
Jika aplikasi tersebut menggunakan subdirektori, semua data yang arsitektur-dependent yang digunakan oleh
aplikasi tersebut, harus diletakkan dalam subdirektori tersebut juga.
Untuk alasan historis, /usr/lib/sendmail harus merupakan link simbolik ke /usr/sbin/sendmail. Demikian juga,
jika /lib/X11 ada, maka /usr/lib/X11 harus merupakan link simbolik ke /lib/X11, atau ke manapun yang dituju
oleh link simbolik /lib/X11.
/usr/lib<qual>: Format pustaka alternatif
/usr/lib<qual> melakukan peranan yang sama seperti /usr/lib untuk format biner alternatif, namun tidak lagi
membutuhkan link simbolik seperti /usr/lib<qual>/sendmail dan /usr/lib<qual>/X11.
/usr/local/share
Direktori ini sama dengan /usr/share. Satu-satunya pembatas tambahan adalah bahwa direktori
/usr/local/share/man dan /usr/local/man harus synonomous (biasanya ini berarti salah satunya harus merupakan
link simbolik).
/usr/sbin: Sistem biner standar yang non-vital
Direktori ini berisi biner non-vital manapun yang digunakan secara eksklusif oleh administrator sistem. Program
administrator sistem yang diperlukan untuk perbaikan sistem, mounting /usr atau kegunaan penting lainnya harus
diletakkan di /sbin.
/usr/share: Data arsitektur independen
Hirarki /usr/share hanya untuk data-data arsitektur independen yang read-only. Hirarki ini ditujukan untuk dapat
di-share diantara semua arsitektur platform dari sistem operasi; sebagai contoh: sebuah site dengan platform
i386, Alpha dan PPC dapat me-maintain sebuah direktori /usr/share yang di-mount secara sentral.
Program atau paket manapun yang berisi dan memerlukan data yang tidak perlu dimodifikasi harus menyimpan
data tersebut di /usr/share (atau /usr/local/share, apabila di- install secara lokal). Sangat direkomendasikan
bahwa sebuah subdirektori digunakan dalam /usr/share untuk tujuan ini.
/usr/src: Kode source
Dalam direktori ini, dapat diletakkan kode-kode source, yang digunakan untuk tujuan referensi.
228Bab 6. Sistem Berkas
6.5.5. Hirarki /var
Tujuan
/var berisi berkas data variabel, meliputi berkas dan direktori spool, data administratif dan logging, serta berkas
transient dan temporer. Beberapa bagian dari /var tidak shareable diantara sistem yang berbeda, antara lain:
/var/log, /var/lock dan /var/run. Sedangkan, /var/mail, /var/cache/man, /var/cache/fonts dan /var/spool/news
dapat di-share antar sistem yang berbeda.
/var ditetapkan di ini untuk memungkinkan operasi mount /usr read-only. Segala sesuatu yang melewati /usr,
yang telah ditulis selama operasi sistem, harus berada di /var. Jika /var tidak dapat dibuatkan partisi yang
terpisah, biasanya /var dipindahkan ke luar dari partisi root dan dimasukkan ke dalam partisi /usr.
Bagaimanapun, /var tidak boleh di-link ke /usr, karena hal ini membuat pemisahan antara /usr dan /var semakin
sulit dan biasa menciptakan konflik dalam penamaan. Sebaliknya, buat link /var ke /usr/var.
Persyaratan
Tabel 6-5. Direktori/link yang dibutuhkan dalam /var.
Direktori Keterangan
cache Data cache aplikasi
lib Informasi status variabel
local Data variabel untuk /usr/local
lock Lock berkas
log Berkas dan direktori log
opt Data variabel untuk /opt
run Relevansi data untuk menjalankan proses
spool Aplikasi data spool
tmp Berkas temporer yang disimpan di dalam reboot sistem
Pilihan Spesifik
Direktori atau link simbol yang menuju ke direktori di bawah ini, dibutuhkan dalam /var, jika subsistem yang
berhubungan dengan direktori tersebut di-install:
Tabel 6-6. Direktori/link yang dibutuhkan di dalam /var
Direktori Keterangan
account Log accounting proses
crash System crash dumps
games Data variabel game
mail Berkas mailbox pengguna
yp Network Information Service (NIS) berkas database
229Bab 6. Sistem Berkas
/var/account: Log accountingproses
Direktori ini memegang log accounting dari proses yang sedang aktif dan gabungan dari penggunaan data.
/var/cache: Aplikasi data cache
/var/cache ditujukan untuk data cache dari aplikasi. Data tersebut diciptakan secara lokal sebagai
time-consuming I/O atau kalkulasi. Aplikasi ini harus dapat menciptakan atau mengembalikan data. Tidak
seperti /var/spool, berkas cache dapat dihapus tanpa kehilangan data.
Berkas yang ditempatkan di bawah /var/cache dapat expired oleh karena suatu sifat spesifik dalam aplikasi, oleh
administrator sistem, atau keduanya, maka aplikasi ini harus dapat recover dari penghapusan berkas secara
manual.
/var/crash: System crash dumps
Direktori ini mengatur system crash dumps. Saat ini, system crash dumps belum dapat di-support oleh Linux,
namun dapat di-support oleh sistem lain yang dapat memenuhi FHS.
/var/games: Data variabel game
Data variabel manapun yang berhubungan dengan games di /usr harus diletakkan di direktori ini. /var/games
harus meliputi data variabel yang ditemukan di /usr; data statik, seperti help text, deskripsi level, dll, harus
ditempatkan di lain direktori, seperti /usr/share/games.
/var/lib: Informasi status variabel
Hirarki ini berisi informasi status suatu aplikasi dari sistem. Yang dimaksud dengan informasi status adalah data
yang dimodifikasi program saat program sedang berjalan. Pengguna tidak diperbolehkan untuk memodifikasi
berkas di /var/lib untuk mengkonfigurasi operasi package. Informasi status ini digunakan untuk memantau
kondisi dari aplikasi, dan harus tetap valid setelah reboot, tidak berupa output logging ataupun data spool.
Sebuah aplikasi harus menggunakan subdirektory /var/lib untuk data-datanya. Terdapat satu subdirektori yang
dibutuhkan lagi, yaitu /var/lib/misc, yang digunakan untuk berkas-berkas status yang tidak membutuhkan
subdirektori.
/var/lock: Lock berkas
Lock berkas harus disimpan dalam struktur direktori /var/lock. Lock berkas untuk peranti dan sumber lain yang
di-share oleh banyak aplikasi, seperti lock berkas pada serial peranti yang ditemukan dalam /usr/spool/locks atau
/usr/spool/uucp, sekarang disimpan di dalam /var/lock.
Format yang digunakan untuk isi dari lock berkas ini harus berupa format lock berkas HDB UUCP. Format HDB
ini adalah untuk menyimpan pengidentifikasi proses (Process Identifier - PID) sebagai 10 byte angka desimal
ASCII, ditutup dengan baris baru. Sebagai contoh, apabila proses 1230 memegang lock berkas, maka HDO
formatnya akan berisi 11 karakter: spasi, spasi, spasi, spasi, spasi, spasi, satu, dua, tiga, nol dan baris baru.
230Bab 6. Sistem Berkas
/var/log: Berkas dan direktori log
Direktori ini berisi bermacam-macam berkas log. Sebagian besar log harus ditulis ke dalam direktori ini atau
subdirektori yang tepat.
/var/mail: Berkas mailboxpengguna
Mail spool harus dapat diakses melalui /var/mail dan berkas mail spool harus menggunakan form
<nama_pengguna>. Berkas mailbox pengguna dalam lokasi ini harus disimpan dengan format standar mailbox
UNIX.
/var/opt: Data variabel untuk /opt
Data variabel untuk paket di dalam /opt harus di-install dalam /var/opt/<subdir>, di mana <subdir> adalah nama
dari subtree dalam /opt tempat penyimpanan data statik dari package tambahan perangkat lunak.
/var/run: Data variabel run-time
Direktori ini berisi data informasi sistem yang mendeskripsikan sistem sejak di boot. Berkas di dalam direktori
ini harus dihapus dulu saat pertama memulai proses boot. Berkas pengidentifikasi proses (PID), yang
sebelumnya diletakkan di /etc, sekarang diletakkan di /var/run.
Program yang membaca berkas-berkas PID harus fleksibel terhadap berkas yang diterima, sebagai contoh:
program tersebut harus dapat mengabaikan ekstra spasi, baris-baris tambahan, angka nol yang diletakkan di
depan, dll.
/var/spool: Aplikasi data spool
/var/spool berisi data yang sedang menunggu suatu proses. Data di dalam /var/spool merepresentasikan
pekerjaan yang harus diselesaikan dalam waktu depan (oleh program, pengguna atau administrator); biasanya
data dihapus sesudah selesai diproses.
/var/tmp: Berkas temporer yang diletakkan di
dalam reboot sistem
Direktori /var/tmp tersedia untuk program yang membutuhkan berkas temporer atau direktori yang diletakkan
dalam reboot sistem. Karena itu, data yang disimpan di /var/tmp lebih bertahan daripada data di dalam /tmp.
Berkas dan direktori yang berada dalam /var/tmp tidak boleh dihapus saat sistem di-boot. Walaupun data-data ini
secara khusus dihapus dalam site-specific manner, tetap direkomendasikan bahwa penghapusan dilakukan tidak
sesering penghapusan di /tmp.
/var/yp: Berkas database Network Information


Komentar