Pengantar Sistem Operasi Komputer part V


Service (NIS)
Data variabel dalam Network Information Service (NIS) atau yang biasanya dikenal dengan Sun Yellow Pages
(YP) harus diletakkan dalam direktori ini.
6.6. Konsep Alokasi Blok Sistem Berkas
6.6.1. Metode Alokasi
Kegunaan penyimpanan sekunder yang utama adalah menyimpan berkas-berkas yang kita buat, karena sifat disk
akan mempertahankan berkas walaupun tidak ada arus listrik. Oleh karena itu, agar kita dapat mengakses
berkas-berkas dengan cepat dan memaksimalisasikan ruang yang ada di disk tersebut, maka lahirlah
metode-metode untuk mengalokasikan berkas ke disk. Metode-metode yang akan dibahas lebih lanjut dalam
buku ini adalah contiguous allocation, linked allocation, dan indexed allocation. Metode-metode tersebut
memiliki beberapa kelebihan dan juga kekurangan. Biasanya sistem operasi memilih satu dari metode diatas
untuk mengatur keseluruhan berkas.
Contiguous Allocation
Metode ini akan mengalokasikan satu berkas kedalam blok-blok disk yang berkesinambungan atau berurutan
secara linier dari disk, jadi sebuah berkas didenifinikan oleh alamat disk blok pertama dan panjangnya dengan
satuan blok atau berapa blok yang diperlukannya. Bila suatu berkas memerlukan n buah blok dan blok awalnya
adalah a, berarti berkas tersebut disimpan dalam blok dialamat a, a + 1, a + 2, a + 3, ..., a + n - 1. Direktori
mengindentifikasi setiap berkas hanya dengan alamat blok pertama berkas tersebut disimpan yang dalam contoh
di atas adalah a, dan banyaknya blok yang diperlukan untuk mengalokasikan berkas tersebut yang dalam contoh
di atas adalah n.
Berkas yang dialokasikan dengan metode ini akan mudah diakses, karena pengaksesan alamat a + 1 setelah
alamat a tidak diperlukan perpindahan head, jika diperlukan pemindahan head, maka head tersebut akan hanya
akan berpindah satu track. Hal tersebut menjadikan metode ini mendukung pengaksesan secara berurutan, tapi
metode ini juga mendukung pengaksesan secara langsung, karena bila ingin mengakses blok ke i berarti kita
akan mengakses blok a + i.
232Bab 6. Sistem Berkas
Gambar 6-11. Contiguous allocation
Metode contiguous allocation juga mempunyai beberapa masalah. Diantaranya adalah mencari ruang untuk
berkas baru, menentukan seberapa besar ruang yang diperlukan untuk sebuah berkas. Untuk masalah mencari
ruang untuk berkas baru, akan di implementasikan oleh manajemen ruang kosong.
Untuk penentuan ruang kita tidak boleh terlalu kecil atau terlalu besar, bila kita menentukannya terlalu kecil
maka ada saatnya berkas tersebut tidak dapat dikembangkan, tapi bila terlalu besar maka akan ada ruang yang
sia-sia bila berkas tersebut hanya memerlukan ruang yang kecil.
Metode ini dapat menimbulkan fragmentasi eksternal disaat ruang kosong yang ada diantara berkas-berkas yang
sudah terisi tidak cukup untuk mengisi berkas baru. Hal ini terjadi karena blok pertama dari suatu berkas itu
ditentukan oleh sistem operasi, bila berkas pertama blok pertamanya itu di 1 dan memerlukan 9 blok untuk
pengalokasiannya dan berkas kedua blok pertamanya di 11 dan memerlukan 5 blok untuk pengalokasiannya,
berarti ruang-kosong diantara berkas tersebut ada 1 blok, yaitu dialamat 10. Blok tersebut dapat untuk
menyimpan berkas, tetapi hanya berkas yang berukuran 1 blok yang dapat disimpan di blok tersebut.
Linked Allocation
Metode ini dapat mengatasi masalah yang terjadi pada metode contiguous allocation. Dalam metode ini setiap
berkas diidentifikasikan dengan linked list dari blok-blok, jadi blok-blok tersebut tidak harus berkesinambungan
dengan blok yang lain. Direktori hanya menyimpan alamat blok pertama dan alamat blok terakhir. Jika kita ingin
mengaksess blok kedua, maka harus melihat alamatnya di blok pertama dan begitu seterusnya. Oleh karena itu,
metode ini hanya mendukung pengaksesan secara berurutan.
233Bab 6. Sistem Berkas
Gambar 6-12. Linked allocation
Metode linked allocation memiliki beberapa kerugian, karena petunjuk ke blok berikutnya memerlukan ruang.
Bila ukuran petunjuknya 4 byte dari blok yang ukurannya 512 byte, berarti 0,78% dari ruang disk hanya
digunakan untuk petunjuk saja. Hal ini dapat diminimalisasikan dengan menggunakan cluster yang
menggabungkan 4 blok dalam satu cluster, jadi jumlah petunjuknya akan berkurang dari yang tidak memakai
cluster.
Paling penting dalam metode ini adalah menggunakan file-allocation table (FAT). Tabel tersebut menyimpan
setiap blok yang ada di disk dan diberi nomor sesuai dengan nomor blok. Jadi, direktori hanya menyimpan
alamat dari blok pertama saja, dan untuk selanjutnya dilihat dari tabel tersebut yang menunjukkan ke blok
berikutnya. Jika kita memakai metode ini, akan menyebabkan mudahnya untuk membuat berkas baru atau
mengembangkan berkas sebelumnya. Mencari tempat kosong untuk berkas baru lebih mudah, karena kita hanya
mencari angka 0 yang pertama dari isi tabel tersebut. Dan bila kita ingin mengembangkan berkas sebelumnya
carilah alamat terakhirnya yang memiliki ciri tertentu dan ubahlah isi dari tabel tersebut dengan alamat blok
penambahan. Alamat terakhir berisi hal yang unik, sebagai contoh ada yang menuliskan -1, tapi ada juga yang
menuliskannya EOF (End Of File).
Metode linked allocation yang menggunakan FAT akan mempersingkat waktu yang diperlukan untuk mencari
sebuah berkas. Karena bila tidak menggunakan FAT, berarti kita harus ke satu blok tertentu dahulu dan baru
diketahui alamat blok selanjutnya. Dengan menggunakan FAT kita dapat melihat alamat blok selanjutnya disaat
kita masih menuju blok yang dimaksud. Tetapi bagaimanapun ini belum dapat mendukung pengaksesan secara
langsung.
234Bab 6. Sistem Berkas
Indexed Allocation
Metode yang satu ini memecahkan masalah fragmentasi eksternal dari metode contiguous allocation dan ruang
yang cuma-cuma untuk petunjuk pada metode linked allocation, dengan cara menyatukan semua petunjuk
kedalam blok indeks yang dimiliki oleh setiap berkas. Jadi, direktori hanya menyimpan alamat dari blok indeks
tersebut, dan blok indeks tersebut yang menyimpan alamat dimana blok-blok berkas berada. Untuk berkas yang
baru dibuat, maka blok indeksnya di set dengan null.
Metode ini mendukung pengaksesan secara langsung, bila kita ingin mengakses blok ke-i, maka kita hanya
mencari isi dari blok indeks tersebut yang ke-i untuk dapatkan alamat blok tersebut.
Metode indexed allocation tidak menyia-nyiakan ruang disk untuk petunjuk, karena dibandingkan dengan
metode linked allocation, maka metode ini lebih efektif, kecuali bila satu berkas tersebut hanya memerlukan satu
atau dua blok saja.
Gambar 6-13. Indexed allocation
Metode ini juga memiliki masalah. Masalah itu timbul disaat berkas berkembang menjadi besar dan blok indeks
tidak dapat menampung petunjuk-petunjuknya itu dalam satu blok. Salah satu mekanisme dibawah ini dapat
dipakai untuk memecahkan masalah yang tersebut. Mekanisme-mekanisme itu adalah:
• Linked scheme: Untuk mengatasi petunjuk untuk berkas yang berukuran besar mekanisme ini menggunakan
tempat terakhir dari blok indeks untuk alamat ke blok indeks selanjutnya. Jadi, bila berkas kita masih
berukuran kecil, maka isi dari tempat yang terakhir dari blok indeks berkas tersebut adalah null. Namun, bila
berkas tersebut berkas besar, maka tempat terakhir itu berisikan alamat untuk ke blok indeks selanjutnya, dan
235Bab 6. Sistem Berkas
begitu seterusnya.
• Indeks bertingkat: Pada mekanisme ini blok indeks itu bertingkat-tingkat, blok indeks pada tingkat pertama
akan menunjukkan blok-blok indeks pada tingkat kedua, dan blok indeks pada tingkat kedua menunjukkan
alamat-alamat dari blok berkas, tapi bila dibutuhkan dapat dilanjutkan kelevel ketiga dan keempat tergantung
dengan ukuran berkas tersebut. Untuk blok indeks 2 level dengan ukuran blok 4.096 byte dan petunjuk yang
berukuran 4 byte, dapat mengalokasikan berkas hingga 4 GB, yaitu 1.048.576 blok berkas.
• Combined scheme: Mekanisme ini menggabungkan direct block dan indirect block. Direct block akan
langsung menunjukkan alamat dari blok berkas, tetapi pada indirect block akan menunjukkan blok indeks
terlebih dahulu seperti dalam mekanisme indeks bertingkat. Single indirect block akan menunjukkan ke blok
indeks yang akan menunjukkan alamat dari blok berkas, double indirect block akan menunjukkan suatu blok
yang bersifat sama dengan blok indeks 2 level, dan triple indirect block akan menunjukkan blok indeks 3
level. Dimisalkan ada 15 petunjuk dari mekanisme ini, 12 pertama dari petunjuk tersebut adalah direct block,
jadi bila ukuran blok 4 byte berarti berkas yang dapat diakses secara langsung didukung sampai ukurannya 48
KB. 3 petunjuk berikutnya adalah indirect block yang berurutan dari single indirect block sampai triple
indirect block. Yang hanya mendukung 32 bit petunjuk berkas berarti akan hanya mencapai 4 GB, namun
yang mendukung 64 bit petunjuk berkas dapat mengalokasikan berkas berukuran sampai satuan terabyte.
Kinerja Sistem Berkas
Keefisiensian penyimpanan dan waktu akses blok data adalah kriteria yang penting dalam memilih metode yang
cocok untuk sistem operasi untuk mengimplementasikan sesuatu. Sebelum memilih sebuah metode alokasi, kita
butuh untuk menentukan bagaimana sistem ini akan digunakan.
Untuk beberapa tipe akses, contiguous allocation membutuhkan hanya satu akses untuk mendapatkan sebuah
blok disk. Sejak kita dapat dengan mudah menyimpan alamat inisial dari sebuah berkas di memori, kita dapat
menghitung alamat disk dari blok ke-i (atau blok selanjutnya) dengan cepat dan membacanya dengan langsung.
Untuk linked allocation, kita juga dapat menyimpan alamat dari blok selanjutnya di memori dan membacanya
dengan langsung. Metode ini bagus untuk akses secara berurutan; untuk akses langsung, bagaimanapun, sebuah
akses menuju blok ke-i harus membutuhkan pembacaan disk ke-i. Masalah ini menunjukkan mengapa alokasi
yang berurutan tidak digunakan untuk aplikasi yang membutuhkan akses langsung.
Sebagai hasilnya, beberapa sistem mendukung berkas-barkas yang diakses langsung dengan menggunakan
contiguous allocation dan yang diakses berurutan dengan linked allocation. Di dalam kasus ini, sistem operasi
harus mempunyai struktur data yang tepat dan algoritma untuk mendukung kedua metode alokasi.
Indexed allocation lebih komplek. Jika blok indeks sudah ada dimemori, akses dapat dibuat secara langsung.
Bagaimanapun, menyimpan blok indeks tersebut di memori membutuhkan tempat yang dapat ditolerir. Dengan
begitu, kinerja dari indexed allocation tergantung dari struktur indeks, ukuran file, dan posisi dari blok yang
diinginkan.
Beberapa sistem menggabungkan contiguous allocation dengan indexed allocation dengan menggunakan
contiguous allocation untuk berkas-berkas yang kecil (diatas tiga atau empat berkas), dan secara otomatis
mengganti ke indexed allocation jika berkas bertambah besar.
6.6.2. Manajemen Ruang Kosong
Sejak ruang disk terbatas, kita butuh menggunakan lagi ruang tersebut dari berkas yang sudah dihapus menjadi
berkas yang baru, jika memungkinkan. Untuk menyimpan track dari ruang disk yang kosong, sistem membuat
236Bab 6. Sistem Berkas
daftar ruang-kosong. Daftar ruang-kosong tersebut merekam semua blok-blok disk yang kosong itu semua tidak
dialokasikan di beberapa berkas atau direktori.
Bit Vector
Seringkali, daftar ruang yang kosong diimplementasikan sebagai sebuah bit map atau bit vector. Setiap blok
direpresentasikan dengan 1 bit. Jika bloknya kosong, bitnya adalah 1; jika bloknya ditempati, bitnya adalah 0.
Sebagai contoh, mepertimbangkan sebuah disk dimana blok-blok 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 17, 18, 25, 26,
dan 27 kosong, dan sisa dari blok-blok tersebut ditempati. Bit map dari ruang-kosong yaitu
00111100111111000110000011100000...
Keuntungan utama dari pendekatan ini adalah relatif sederhana dan keefisiensian dalam menemukan blok
kosong yang pertama, atau blok-blok kosong n yang berurutan di dalam disk. Sayangnya, bit vectors tidak
efisien kecuali seluruh vektor disimpan di memori utama (dan ditulis ke disk secara rutin untuk kebutuhan
recovery. Menyimpan vektor tersebut di memori utama memungkinkan untuk disk-disk yang kecil, seperti pada
microcomputers, tetapi tidak untuk disk-disk yang besar.
Linked List
Pendekatan yang lainnya untuk managemen ruang-kosong adalah menghubungkan semua blok-blok disk
kosong, menyimpan sebuah penunjuk ke blok kosong yang pertama di lokasi yang khusus di disk dan
menyimpannya di memori. Blok pertama ini mengandung sebuah penunjuk ke blok disk kosong selanjutnya, dan
seterusnya. Sebagai contoh, kita akan menyimpan sebuah penunjuk ke blok 2, sebagai blok kosong pertama.
Blok 2 mengandung sebuah penunjuk ke blok 3, yang akan menunjuk ke blok4, yang akan menunjuk ke blok 5,
yang akan menunjuk ke blok 8, dan seterusnya.
237Bab 6. Sistem Berkas
Gambar 6-14. Ruang kosong linked list
Bagaimanapun, skema ini tidak efisien untuk mengakses daftar tersebut, kita harus membaca setiap blok, yang
membutuhkan tambahan waktu I/O. Untungnya, mengakses daftar kosong tersebut itu tidak eksekusi yang
teratur. Biasanya, sistem operasi tersebut membutuhkan sebuah blok kosong supaya sistem operasi dapat
mengalokasikan blok tersebut ke berkas, lalu blok yang pertama di daftar kosong digunakan.
Grouping
Sebuah modifikasi dari pendekatan daftar-kosong adalah menyimpan alamat-alamat dari n blok-blok kosong di
blok kosong yang pertama. n-1 pertama dari blok-blok ini sebenarnya kosong. Blok terakhir mengandung
alamat-alamat dari n blok kosong lainnya, dan seterusnya. Pentingnya implementasi ini adalah alamat-alamat
238Bab 6. Sistem Berkas
dari blok-blok kosong yang banyak dapat ditemukan secara cepat, tidak seperti di pendekatan linked-list yang
standard.
Counting
Daripada menyimpan daftar dari n alamat-alamat disk kosong, kita dapat menyimpan alamat dari blok kosong
yang pertama tersebut dan angka n dari blok contiguous kosong yang diikuti blok yang pertama. Setiap masukan
di daftar ruang-kosong lalu mengandung sebuah alamat disk dan sebuah jumlah. Meskipun setiap masukan
membutuhkan ruang lebih daripada alamat-alamat disk yang sederhana, daftar kesemuanya akan lebih pendek,
selama jumlahnya rata-rata lebih besar daripada 1.
6.7. Efisiensi dan Kinerja
Kita sekarang dapat mempertimbangkan mengenai efek dari alokasi blok dan manajeman direktori dalam kinerja
dan penggunanan disk yang efisien. Di bagian ini, kita mendiskusikan tentang bermacam-macam teknik yang
digunakan untuk mengembangkan efisiensi dan kinerja dari penyimpanan kedua.
Efisiensi
Penggunaan yang efisien dari ruang disk sangat tergantung pada alokasi disk dan algoritma direktori yang
digunakan. Sebagai contoh, UNIX mengembangakan kinerjanya dengan mencoba untuk menyimpan sebuah
blok data berkas dekat dengan blok inode berkas untuk mengurangi waktu pencarian.
Tipe dari data normalnya disimpan di masukan direktori berkas (atau inode) juga membutuhkan pertimbangan.
Biasanya, tanggal terakhir penulisan direkam untuk memberikan informasi kepada pengguna dan untuk
menentukan jika berkas ingin di back up. Beberapa sistem juga menyimpan sebiuah "last access date", supaya
seorang pengguna dapat menentukan kapan berkas terakhir dibaca. Hasil dari menyimpan informasi ini adalah
ketika berkas sedang dibaca, sebuah field di struktur direktori harus ditulisi. Prasyarat ini dapat tidak efisien
untuk pengaksesan berkas yang berkala. Umumnya setiap persatuan data yang berhubungan dengan berkas
membutuhkan untuk dipertimbangkan efeknya pada efisiensi dan kinerja.
Sebagai contoh, mempertimbangkan bagaimana efisiensi dipengaruhi oleh ukuran penunjuk-penunjuk yang
digunakan untuk mengakses data. Bagaimanapun, penunjuk-penunjuk membutuhkan ruang lebih untuk
disimpan, dan membuat metode alokasi dan manajemen ruang-kosong menggunakan ruang disk yang lebih. Satu
dari kesulitan memilih ukuran penunjuk, atau juga ukuran alokasi yang tetap diantara sistem operasi, adalah
rencana untuk efek dari teknologi yang berubah.
Kinerja
Sekali algoritma sistem berkas dipilih, kita tetap dapat mengembangkan kinerja dengan beberapa cara.
Kebanyakan dari disk controller mempunyai memori lokal untuk membuat on-board cache yang cukup besar
untuk menyimpan seluruh tracks dengan sekejap.
Beberapa sistem membuat seksi yang terpisah dari memori utama untuk digunakan sebagai disk cache, dimana
blok-blok disimpan dengan asumsi mereka akan digunakan lagi dengan secepatnya. Sistem lainnya menyimpan
data berkas menggunakan sebuah page cache. Page cache tersebut menggunakan teknik memori virtual untuk
menyimpan data berkas sebagai halaman-halaman daripada sebagai blok-blok file-system-oriented. Menyimpan
239Bab 6. Sistem Berkas
data berkas menggunakan alamat-alamat virtual jauh lebih efisien daripada menyimpannya melalui blok disk
fisik. Ini dikenal sebagai unified virtual memory.
Gambar 6-15. Tanpa unified buffer cache
Gambar 6-16. Menggunakan unified buffer cache
Sebagian sistem operasi menyediakan sebuah unified buffer cache. Tanpa sebuah unified buffer cache, kita
mempunyai situasi panggilan mapping memori butuh menggunakan dua cache, page cache dan buffer cache.
Karena sistem memori virtual tidak dapat menggunakan dengan buffer cache, isi dari berkas di dalam buffer
240Bab 6. Sistem Berkas
cache harus diduplikat ke page cache. Situasi ini dikenal dengan double caching dan membutuhkan menyimpan
data sistem-berkas dua kali. Tidak hanya membuang-buang memori, tetapi ini membuang CPU dan perputaran
I/O dikerenakan perubahan data ekstra diantara memori sistem. Juga dapat menyebabkan korupsi berkas. Sebuah
unified buffer cache mempunyai keuntungan menghindari double caching dan menunjuk sistem memori virtual
untuk mengatur data sistem berkas.
6.8. Recovery
Sejak berkas-berkas dan direktori-direktori dua-duanya disimpan di memori utama dan pada disk, perawatan
harus dilakukan untuk memastikan kegagalan sistem tidak terjadi di kehilangan data atau di tidakkonsistennya
data.
Pengecekan Rutin
Informasi di direktori di memori utama biasanya lebih baru daripada informasi yang ada di disk, karena
penulisan dari informasi direktori yang disimpan ke disk tidak terlalu dibutuhkan secepat terjadinya
pembaharuan. Mempertimbangkan efek yang memungkinkan terjadinya crash pada komputer. Secara berkala,
program khusus akan dijalankan pada saat waktu reboot untuk mengecek dan mengoreksi disk yang tidak
konsisten. Pemerikasaan rutin membandingkan data yang ada di struktur direktori dengan blok data pada disk,
dan mencoba untuk memperbaiki ketidakkonsistenan yang ditemukan.
Gambar 6-17. Macam-macam lokasi disk-caching
Backup dan Restore
Dikarenakan disk magnetik kadang-kadang gagal, perawatan harus dijalankan untuk memastikan data tidak
hilang selamanya. Oleh karena itu, program sistem dapat digunakan untuk back up data dari disk menuju ke
media penyimpanan yang lainnya, seperti sebuah floppy disk, tape magnetik, atau disk optikal. Recovery dari
kehilangan sebuah berkas individu, atau seluruh disk, mungkin menjadi masalah dari restoring data dari backup.
Untuk meminimalis kebutuhan untuk menduplikat, kita dapat menggunakan inforamsi dari, masing-masing
masukan direktori. Sebagai contoh, jika program backup mengetahui kapan backup terakhir dari berkas telah
selesai, dan tanggal terakhir berkas di direktori menunjukkan bahwa berkas tersebut tidak dirubah sejak tanggal
tersebut, lalu berkas tersebut tidak perlu diduplikat lagi.
241Bab 6. Sistem Berkas
Sebuah tipe jadual backup yaitu sebagai berikut:
• Day 1:
Menduplikat ke sebuah medium back up semua berkas ke disk. Ini disebut sebuah full backup.
• Day 2:
Menduplikat ke medium lainnya semua berkas yang dirubah sejak hari pertama. Ini adalah incremental
backup.
• Day 3:
Menduplikat ke medium lainnya semua berkas yang dirubah sejak hari ke-2.
• Day N:
Menduplikat ke medium lainnya semua berkas yang dirubah sejak hari ke N-1.
Perputaran baru dapat mempunyai backupnya ditulis ke semua set sebelumnya, atau ke set yang baru dari media
backup. N yang terbesar, tentu saja memerlukan tape atau disk yang lebih untuk dibaca untuk penyimpanan yang
lengkap. Keuntungan tambahan dari perputaran backup ini adalah kita dapat menyimpan berkas apa saja yang
tidak sengaja terhapus selama perputaran dengan mengakses berkas yang terhapus dari backup hari sebelumnya.
6.9. Log-Structured File System
Algoritma logging sudah dilakukan dengan sukses untuk manangani masalah dari pemeriksaan rutin. Hasil dari
implementasinya dikenal dengan log-based transaction-oriented (atau journaling sistem berkas.
Pemanggilan kembali yang mengenai struktur data sistem berkas pada disk--seperti struktur-struktur direktori,
penunjuk-penunjuk blok-kosong, penunjuk-penunjuk FCB kosong--dapat menjadi tidak konsisten dikarenakan
adanya system crash. Sebelum penggunaan dari teknik log-based di sisitem operasi, perubahan biasanya
dipakaikan pada struktur ini. Perubahan-perubahan tersebut dapat diinterupsi oleh crash, dengan hasil
strukturnya tidak konsisten.
Ada beberapa masalah dengan adanya pendekatan dari menunjuk struktur untuk memechkan dan
memperbaikinya pada recovery. Salah satunya adalah ketidakkonsistenan tidak dapat diperbaiki. Pemeriksaan
rutin mungkin tidak dapat untuk recover struktur tersebut, yang hasilnya kehilangan berkas dan mungkin seluruh
direktori.
Solusinya adalah memakai teknik log-based-recovery pada sistem berkas metadata yang terbaru. Pada dasarnya,
semua perubahan metadata ditulis secara berurutan di sebuah log. Masing-masing set dari operasi-operasi yang
manampilakan tugas yang spesifik adalah sebuah transaction. Jika sistemnya crashes, tidak akan ada atau ada
kelebihan transactions di berkas log. Transactions tersebut tidak akan pernah lengkap ke sistem berkas walaupun
dimasukkan oleh sistem operasi, jadi harus dilengkapi. Keuntungan yang lain adalah proses-proses pembaharuan
akan lebih cepat daripada saat dipakai langsung ke struktur data pada disk.
242Bab 6. Sistem Berkas
6.10. Rangkuman
Di dalam sebuah sistem operasi, salah satu hal yang paling penting adalah sistem berkas. Sistem berkas ini
muncul karena ada tiga masalah utama yang cukup signifikan: kebutuhan untuk menyimpan data dalam jumlah
yang besar, kebutuhan agar data tidak mudah hilang (non-volatile), dan informasi harus berdiri sendiri tidak
bergantung pada proses. Pada sistem berkas ini, diatur segala rupa macam yang berkaitan dengan sebuah berkas
mulai dari atribut, tipe, operasi, struktur, sampai metode akses berkas.
Beberapa sistem komputer menyimpan banyak sekali berkas-berkas dalam disk, sehingga diperlukan suatu
struktur pengorganisasian data-data sehingga data lebih mudah diatur. Dalam struktur direktori satu tingkat,
semua berkas diletakkan pada direktori yang sama, sehingga memiliki suatu keterbatasan karena nama berkas
harus unik. Struktur direktori dua tingkat mencoba mengatasi masalah tersebut dengan membuat direktori yang
terpisah untuk tiap pengguna yang disebut dengan user file directory (UFD). Sedangkan dalam struktur direktori
tree setiap pengguna dapat membuat subdirektori sendiri dan mengorganisasikan berkas-berkasnya. Direktori
dengan struktur tree melarang berbagi berkas atau direktori. Oleh karena itu, struktur dengan acyclic-graph
memperbolehkan direktori untuk berbagi berkas atau sub-direktori. Struktur Direktori general graph mengatasi
masalah yang timbul dalam struktur acyclic dengan metode Garbage Collection.
Mounting adalah proses mengaitkan sebuah sistem berkas yang baru ditemukan pada sebuah piranti ke struktur
direktori utama yang sedang dipakai. Mount point adalah sebuah direktori dimana berkas baru menjadi dapat
diakses.
Sebagai implementasi direktori yang merupakan implementasi dari Implementasi Sistem Berkas, implementasi
direktori memiliki algoritma seperti Linear List dan Hashtable. Direktori pada MS/Dos merupakan sistem
dengan direktori hirarki tree. Direktori pada UNIX merupakan struktur direktori tradisional.
Standar Hirarki Sistem Berkas (File Hierarchy Standard) adalah rekomendasi penulisan direktori dan
berkas-berkas yang diletakkan di dalamnya. FHS ini digunakan oleh perangkat lunak dan user untuk
menentukan lokasi dari berkas dan direktori.
Informasi yang disimpan di dalam suatu berkas harus disimpan ke dalam disk. Artinya, sistem operasi harus
memutuskan tempat informasi itu akan disimpan. Ada 3 method untuk menentukan bagaimana sistem operasi
menyimpan informasi ke disk yakni manajemen ruang kosong (mengetahui seberapa luang kapasitas disk yang
tersedia), efisiensi dan kinerja, dan recovery.
6.11. Latihan
1. Berikan gambaran umum mengenai sistem berkas!
2. Operasi apa saja yang dijalankan untuk melakukan operasi copy?
3. Sebutkan salah satu cara mengimplementasikan tipe berkas!
4. Sebutkan dan jelaskan tiga contoh struktur berkas!
5. Apa bedanya sequential access dan direct access?
6. Apa kelebihan struktur direktori Acyclic Graph dengan struktur direktori Tree?
7. Jelaskan yang dimaksud dengan Garbage Collection Scheme!
8. Struktur Direktori apa saja yang menyediakan fasilitas sharing?
9. Apa yang terjadi jika kita mengubah nama suatu berkas?
10. Pada sistem UNIX, apa yg terjadi saat kita ingin menghapus suatu direktori yang masih mengandung suatu
berkas?
243Bab 6. Sistem Berkas
11. Kemanakah sistem berkas akan selalu di-mount ketika sistem sedang berjalan?
12. Apakah yang dimaksud dengan pesan error berikut?
pwd: Permission denied
13. Apa perbedaan antara metode implementasi sharing antara FTP, DFS dan WWW?
14. Sebutkan pendekatan apa saja yang dipakai untuk mengatasi masalah proteksi berkas beserta keuntungan
dan kerugiannya?
15. Berikan sebuah contoh struktur direktori selain yang ada di buku dan jelaskan cara implementasi pada
direktori!
16. Sebutkan 2 sistem operasi yang implementasi sistem berkasnya menggunakan Layered File System!
17. Jelaskan cara membuat suatu berkas baru!
18. Apakah hubungan partisi dan mounting dengan implementasi sistem berkas?
19. Apa perbedaan algoritma Linear List dan Hash Table untuk implentasi direktori? Menurut anda manakah
yang lebih unggul? Jelaskan!
20. Apa yang Anda ketahui mengenai Filesystem Hierarchy Standard?
21. Jelaskan 3 tujuan dari sistem berkas root!
22. Jelaskan tujuan dan persyaratan dari hirarki /usr!
23. Jelaskan tujuan dan persyaratan dari hirarki /var!
24. Apakah kegunaan dari direktori di bawah ini:
• /boot
• /media
• /mnt
• /root
• /usr/lib
• /var/cache
25. Sebutkan 3 metode yang sering digunakan untuk mengalokasikan berkas?
26. Bandingkan masalah-masalah yang dapat terjadi di metode alokasi contiguous allocation
27. Bandingkan masalah-masalah yang dapat terjadi di metode alokasi contiguous allocation dan linked
allocation?
28. Sebutkan 3 contoh mekanisme dari Indexed Allocation?
29. Jelaskan dengan singkat mengenai Combined Scheme!
30. Sebutkan akses berkas yang didukung oleh sistem yang menggunakan metode alokasi contiguous allocation
dan linked allocation?
31. Jika ruang kosong di bit map sebagai berikut: 00111011101100010001110011 maka blok mana saja yang
kosong?
32. Sebutkan keuntungan dari I/O yang menggunakan unified buffer cache?
33. Jelaskan cara membuat backup data!
34. Solusi apa yang diberikan untuk memastikan adanya recovery setelah adanya system crash?
244Bab 6. Sistem Berkas
6.12. Rujukan
6.12.1. Rujukan Buku
Silberschatz, Galvin, Gagne. 2002. Operating System Concepts, 6th ed. John Wiley & Sons.
Tananbaum, Andrew S. 1992. Modern Operating System 2nd ed. Engrewood cliffs, New Jersey: Prentice Hall
Inc.
Stallings, Williem. 2000. Operating System 4th ed. Prentice Hall.
6.12.2. Rujukan Internet
http://infocom.cqu.edu.au/Courses/aut2001/85349/Resources/ Study_Guide/10.pdf
http://www.cs.utah.edu/classes/cs5460/lectures/lecture19- 2up.pdf
http://support.sitescape.com/forum/support/dispatch.cgi/
_help/showHelp/page/help/en/webfiles_tabs/share_files.html
>http://www.ncsa.uiuc.edu/UserInfo/Resources/Hardware/
IBMp690/IBM/usr/share/man/info/en_US/a_doc_lib/aixbman/admnconc/ mount_overview.htm
http://www.atnf.csiro.au/people/rgooch/linux/docs/vfs.txt
245Bab 7. I/O
7.1. Perangkat Keras I/O
Menurut Silberschatz et. al. [Silberschatz2002], salah satu tujuan utama dari suatu sistem operasi ialah mengatur
semua perangkat I/O (Input/Output) komputer. Sistem operasi harus dapat memberikan perintah ke
perangkat-perangkat itu, menangkap dan menangani interupsi, dan menangani error yang terjadi. Sistem operasi
juga harus menyediakan antarmuka antara sistem operasi itu sendiri dengan keseluruhan sistem itu yang
sederhana dan mudah digunakan. Antarmuka itu harus sama untuk semua perangkat (device independent), agar
dapat dikembangkan.
Secara umum, terdapat beberapa jenis perangkat I/O, seperti perangkat penyimpanan (disk, tape), perangkat
transmisi (network card, modem), dan perangkat antarmuka dengan pengguna (screen, keyboard, mouse).
Perangkat tersebut dikendalikan oleh instruksi I/O. Alamat-alamat yang dimiliki oleh perangkat akan digunakan
oleh direct I/O instruction dan memory-mapped I/O.
Beberapa konsep yang umum digunakan ialah port, bus (daisy chain/shared direct access), dan pengendali (host
adapter). Port ialah koneksi yang digunakan oleh perangkat untuk berkomunikasi dengan mesin. Bus ialah
koneksi yang menghubungkan beberapa perangkat menggunakan kabel-kabel. Pengendali ialah alat-alat
elektronik yang berfungsi untuk mengoperasikan port, bus, dan perangkat.
Langkah yang ditentukan untuk perangkat ialah command-ready, busy, dan error. Host mengeset
command-ready ketika perintah telah siap untuk dieksekusi oleh pengendali. Pengendali mengeset busy ketika
sedang mengerjakan sesuatu, dan men-clear busy ketika telah siap untuk menerima perintah selanjutnya. Error
diset ketika terjadi kesalahan.
7.1.1. Perangkat I/O
Pendapat orang-orang mengenai I/O berbeda-beda. Seorang insinyur mungkin akan memandang perangkat keras
I/O sebagai kumpulan chip-chip, kabel-kabel, catu daya, dan komponen fisik lainnya yang membangun
perangkat keras ini. Seorang programmer akan memandangnya sebagai antarmuka yang disediakan oleh
perangkat lunak -- perintah yang diterima perangkat keras, fungsi yang dikerjakannya, dan error yang
ditimbulkan.
Perangkat I/O dapat dibagi secara umum menjadi dua kategori, yaitu: perangkat blok (block devices), dan
perangkat karakter (character devices). Perangkat blok menyimpan informasi dalam sebuah blok yang
ukurannya tertentu, dan memiliki alamat masing-masing. Umumnya blok berukuran antara 512 bytes sampai
32.768 bytes. Keuntungan dari perangkat blok ini ialah mampu membaca atau menulis setiap blok secara
independen. Disk merupakan contoh perangkat blok yang paling banyak digunakan.
Tipe lain perangkat I/O ialah perangkat karakter. Perangkat karakter mengirim atau menerima sebarisan karakter,
tanpa menghiraukan struktur blok. Tipe ini tidak memiliki alamat, dan tidak memiliki kemampuan mencari
(seek). Printer dan antarmuka jaringan merupakan contoh perangkat jenis ini.
Pembagian ini tidaklah sempurna. Beberapa perangkat tidak memenuhi kriteria tersebut. Contohnya: clock yang
tidak memiliki alamat dan juga tidak mengirim dan menerima barisan karakter. Yang ia lakukan hanya
menimbulkan interupsi dalam jangka waktu tertentu.
7.1.2. Pengendali Perangkat
Unit I/O mengandung komponen mekanis dan elektronis. Komponen elektronis ini disebut pengendali perangkat
(device controllers) atau adapter. Pada komputer personal (PC), komponen ini biasanya berupa kartu sirkuit yang
246Bab 7. I/O
dapat dimasukkan ke dalam slot pada motherboard komputer. Perangkat mekanis berupa perangkat itu sendiri.
Kartu pengendali biasanya memiliki sebuah penghubung. Beberapa pengendali dapat menangani dua, empat,
atau bahkan delapan perangkat yang sejenis. Sistem operasi hampir selalu berhubungan dengan pengendali,
bukan dengan perangkat secara langsung. Sebagian besar komputer yang berukuran kecil menggunakan model
bus tunggal seperti pada Gambar 7-1 untuk berkomunikasi antara CPU dan pengendali. Sedangkan mainframe
yang berukuran besar umumnya menggunakan model yang berbeda, dengan bus yang banyak dan I/O channels.
Gambar 7-1. Model Bus Tunggal
Sebuah model untuk menghubungkan CPU, memori, pengendali, dan perangkat I/O.
7.1.3. Polling
Busy-waiting/polling ialah ketika host mengalami looping yaitu membaca status register secara terus-menerus
sampai status busy di-clear. Pada dasarnya polling dapat dikatakan efisien. Akan tetapi polling menjadi tidak
efisien ketika setelah berulang-ulang melakukan looping, hanya menemukan sedikit perangkat yang siap untuk
menservis, karena CPU processing yang tersisa belum selesai.
Gambar 7-2. Proses Polling
Contoh proses polling yang tipikal.
247Bab 7. I/O
7.1.4. Interupsi
Mekanisme Dasar Interupsi
Ketika CPU mendeteksi bahwa sebuah pengendali telah mengirimkan sebuah sinyal ke interrupt request line
(membangkitkan sebuah interupsi), CPU kemudian menjawab interupsi tersebut (juga disebut menangkap
interupsi) dengan menyimpan beberapa informasi mengenai keadaan terkini CPU--contohnya nilai instruksi
pointer, dan memanggil interrupt handler agar handler tersebut dapat melayani pengendali atau alat yang
mengirim interupsi tersebut.
Fitur Tambahan pada Komputer Modern
Pada arsitektur komputer modern, tiga fitur disediakan oleh CPU dan pengendali interupsi (pada perangkat
keras) untuk dapat menangani interrupsi dengan lebih bagus. Fitur-fitur ini antara lain ialah kemampuan
menghambat sebuah proses penanganan interupsi selama proses berada dalam critical state, efisiensi
penanganan interupsi sehingga tidak perlu dilakukan polling untuk mencari perangkat yang mengirimkan
interupsi, dan fitur yang ketiga ialah adanya sebuah konsep interupsi multilevel sedemikian rupa sehingga
terdapat prioritas dalam penanganan interupsi (diimplementasikan dengan interrupt priority level system).
Interrupt Request Line
Pada peranti keras CPU terdapat kabel yang disebut interrupt request line, kebanyakan CPU memiliki dua
macam interrupt request line, yaitu nonmaskable interrupt dan maskable interrupt. Maskable interrupt dapat
dimatikan/dihentikan oleh CPU sebelum pengeksekusian deretan critical instruction (critical instruction
sequence) yang tidak boleh diinterupsi. Biasanya, interrupt jenis ini digunakan oleh pengendali perangkat untuk
meminta pelayanan CPU.
Interrupt Vector dan Interrupt Chaining
Sebuah mekanisme interupsi akan menerima alamat interrupt handling routine yang spesifik dari sebuah set,
pada kebanyakan arsitektur komputer yang ada sekarang ini, alamat ini biasanya berupa sekumpulan bilangan
yang menyatakan offset pada sebuah tabel (biasa disebut vektor interupsi). Tabel ini menyimpan alamat-alamat
interrupt handler spesifik di dalam memori. Keuntungan dari pemakaian vektor ialah untuk mengurangi
kebutuhan akan sebuah interrupt handler yang harus mencari semua kemungkinan sumber interupsi untuk
menemukan pengirim interupsi. Akan tetapi, vektor interupsi memiliki hambatan karena pada kenyataannya,
komputer yang ada memiliki perangkat (dan interrupt handler) yang lebih banyak dibandingkan dengan jumlah
alamat pada vektor interupsi. Karena itulah, digunakan teknik interrupt chaining setiap elemen dari vektor
interupsi menunjuk pada elemen pertama dari sebuah daftar interrupt handler. Dengan teknik ini, overhead yang
dihasilkan oleh besarnya ukuran tabel dan inefisiensi dari penggunaan sebuah interrupt handler (fitur pada CPU
yang telah disebutkan sebelumnya) dapat dikurangi, sehingga keduanya menjadi kurang lebih seimbang.
Penyebab Interupsi
Interupsi dapat disebabkan berbagai hal, antara lain exception, page fault, interupsi yang dikirimkan oleh
pengendali perangkat, dan system call. Exception ialah suatu kondisi dimana terjadi sesuatu, atau dari sebuah
operasi didapat hasil tertentu yang dianggap khusus sehingga harus mendapat perhatian lebih, contohnya
248Bab 7. I/O
pembagian dengan 0 (nol), pengaksesan alamat memori yang restricted atau bahkan tidak valid, dan lain-lain.
System call ialah sebuah fungsi pada aplikasi (perangkat lunak) yang dapat mengeksekusikan instruksi khusus
berupa interupsi perangkat lunak atau trap.
7.1.5. Direct Memory Access (DMA)
DMA ialah sebuah prosesor khusus (special purpose processor) yang berguna untuk menghindari pembebanan
CPU utama oleh program I/O (PIO).
Untuk memulai sebuah transfer DMA, host akan menuliskan sebuah DMA command block yang berisi pointer
yang menunjuk ke sumber transfer, pointer yang menunjuk ke tujuan transfer, dan jumlah byte yang ditransfer,
ke memori. CPU kemudian menuliskan alamat command block ini ke pengendali DMA, sehingga pengendali
DMA dapat kemudian mengoperasikan bus memori secara langsung dengan menempatkan alamat-alamat pada
bus tersebut untuk melakukan transfer tanpa bantuan CPU.
Tiga langkah dalam transfer DMA:
1. Prosesor menyiapkan DMA transfer dengan menyedia kan data-data dari perangkat, operasi yang akan
ditampilkan, alamat memori yang menjadi sumber dan tujuan data, dan banyaknya byte yang ditransfer.
2. Pengendali DMA memulai operasi (menyiapkan bus, menyediakan alamat, menulis dan membaca data),
sampai seluruh blok sudah di transfer.
3. Pengendali DMA meng-interupsi prosesor, dimana selanjutnya akan ditentukan tindakan berikutnya.
Pada dasarnya, DMA mempunyai dua metode yang berbeda dalam mentransfer data. Metode yang pertama ialah
metode yang sangat baku dan sederhana disebut HALT, atau Burst Mode DMA, karena pengendali DMA
memegang kontrol dari sistem bus dan mentransfer semua blok data ke atau dari memori pada single burst.
Selagi transfer masih dalam prosres, sistem mikroprosessor di-set idle, tidak melakukan instruksi operasi untuk
menjaga internal register. Tipe operasi DMA seperti ini ada pada kebanyakan komputer.
Metode yang kedua, mengikut-sertakan pengendali DMA untuk memegang kontrol dari sistem bus untuk jangka
waktu yang lebih pendek pada periode dimana mikroprosessor sibuk dengan operasi internal dan tidak
membutuhkan akses ke sistem bus. Metode DMA ini disebut cycle stealing mode. Cycle stealing DMA lebih
kompleks untuk diimplementasikan dibandingkan HALT DMA, karena pengendali DMA harus mempunyai
kepintaran untuk merasakan waktu pada saat sistem bus terbuka.
Handshaking
Proses handshaking antara pengendali DMA dan pengendali perangkat dilakukan melalui sepasang kabel yang
disebut DMA-request dan DMA-acknowledge. Pengendali perangkat mengirimkan sinyal melalui DMA-request
ketika akan mentransfer data sebanyak satu word. Hal ini kemudian akan mengakibatkan pengendali DMA
memasukkan alamat-alamat yang dinginkan ke kabel alamat memori, dan mengirimkan sinyal melalui kabel
DMA-acknowledge. Setelah sinyal melalui kabel DMA-acknowledge diterima, pengendali perangkat
mengirimkan data yang dimaksud dan mematikan sinyal pada DMA-request.
Hal ini berlangsung berulang-ulang sehingga disebut handshaking. Pada saat pengendali DMA mengambil alih
memori, CPU sementara tidak dapat mengakses memori (dihalangi), walau pun masih dapat mengaksees data
pada cache primer dan sekunder. Hal ini disebut cycle stealing, yang walau pun memperlambat komputasi CPU,
tidak menurunkan kinerja karena memindahkan pekerjaan data transfer ke pengendali DMA meningkatkan
performa sistem secara keseluruhan.
249Bab 7. I/O
Cara-cara Implementasi DMA
Dalam pelaksanaannya, beberapa komputer menggunakan memori fisik untuk proses DMA , sedangkan jenis
komputer lain menggunakan alamat virtual dengan melalui tahap "penerjemahan" dari alamat memori virtual
menjadi alamat memori fisik, hal ini disebut Direct Virtual-Memory Address atau DVMA. Keuntungan dari
DVMA ialah dapat mendukung transfer antara dua memori mapped device tanpa intervensi CPU.
7.2. Aplikasi Antarmuka I/O; Subsistem Kernel; Operasi
Perangkat Keras
7.2.1. Aplikasi Antarmuka I/O
Bagian ini akan membahas bagaimana teknik dan struktur antarmuka yang memungkinkan I/O diperlakukan
secara seragam. Salah satu contohnya adalah ketika suatu aplikasi ingin membuka data yang ada dalam suatu
disk tanpa mengetahui jenis disk apa yang akan diaksesnya. Untuk mempermudah pengaksesan, sistem operasi
melakukan standarisasi pengaksesan pada perangkat I/O. Pendekatan inilah yang dinamakan aplikasi
antarmuka I/O.
Seperti layaknya permasalahan dari software-engineering yang rumit lainnya, aplikasi antarmuka I/O melibatkan
abstraksi, enkapsulasi, dan software layering. Abstraksi dilakukan dengan membagi-bagi detail
perangkat-perangkat I/O ke dalam kelas-kelas yang lebih umum. Dengan adanya kelas-kelas yang umum ini,
maka akan lebih mudah bagi fungsi-fungsi standar (antarmuka) untuk mengaksesnya. Selanjutnya, keberadaan
device driver pada masing-masing peralatan I/O akan berfungsi meng-enkapsulasi perbedaan-perbedaan yang
ada dari setiap anggota kelas-kelas yang umum tadi.
Tujuan dari adanya lapisan device driver ini adalah untuk menyembunyikan perbedaan-perbedaan yang ada pada
pengendali perangkat dari subsistem I/O yang terdapat dalam kernel. Dengan demikian, subsistem I/O dapat
bersifat mandiri dari perangkat keras. Hal ini sangat menguntungkan dari segi pengembangan perangkat keras,
karena tidak perlu menunggu vendor sistem operasi untuk mengeluarkan support code untuk
perangkat-perangkat keras baru yang akan dikeluarkan oleh para vendor perangkat keras tersebut.
Gambar 7-3. Struktur Kernel
Gambar ini diadaptasi dari [Silberschatz2002, halaman 467].
250Bab 7. I/O
Sayangnya untuk manufaktur perangkat keras, masing-masing sistem operasi memiliki standarnya sendiri untuk
device driver antarmukanya. Karakteristik dari perangkat-perangkat tersebut sangat bervariasi, beberapa yang
dapat membedakannya adalah dari segi:
1. Character-stream atau block: Sebuah stream karakter memindahkan per satu bytes, sedangkan blok
memindahkan sekumpulan bytes dalam 1 unit.
2. Sequential atau Random-access: Sebuah perangkat yang sekuensial memindahkan data dalam susunan
yang sudah pasti seperti yang ditentukan oleh perangkat, sedangkan pengguna akses random dapat meminta
perangkat untuk mencari ke seluruh lokasi penyimpanan data yang tersedia.
3. Synchronous atau asynchronous: perangkat yang synchronous menampilkan data-data transfer dengan
waktu reaksi yang dapat diduga, sedangkan perangkat yang asynchronous menampilkan waktu reaksi yang
tidak dapat diduga.
4. Sharable atau dedicated: perangkat yang dapat dibagi dapat digunakan secara bersamaan oleh beberapa
prosesor atau thread, sedangkan perangkat yang dedicatedtidak dapat.
5. Speed of operation: Rentangan kecepatan perangkat dari beberapa bytes per detik sampai beberapa
gigabytes per detik.
6. Read-write, read only, atau write only: Beberapa perangkat memungkinkan baik input-output dua arah, tapi
beberapa lainnya hanya menunjang data satu arah.
Pada umumnya sistem operasi juga memiliki sebuah "escape" atau "pintu belakang" yang secara terbuka
mengirim perintah yang arbitrary dari sebuah aplikasi ke device driver. Dalam UNIX, ada ioctl() yang
memungkinkan aplikasi mengakses seluruh fungsi yang tersedia di device driver tanpa perlu membuat sebuah
sistem call yang baru.
ioctl() ini mempunyai tiga argumen, yang pertama adalah sebuah pendeskripsi berkas yang menghubungkan
aplikasi ke driver dengan menunjuk perangkat keras yang diatur oleh driver tersebut. Kedua, adalah sebuah
integer yang memilih satu perintah yang terimplementasi di dalam driver. Ketiga, sebuah pointer ke struktur data
arbitrary di memori, yang memungkinkan aplikasi dan driver berkomunikasi dengan data dan mengendalikan
informasi data.
Peralatan Blok dan Karakter
Peralatan blok diharapkan dapat memenuhi kebutuhan akses pada berbagai macam disk drive dan juga peralatan
blok lainnya, memenuhi/mengerti perintah baca, tulis dan juga perintah pencarian data pada peralatan yang
memiliki sifat random-access.
Keyboard adalah salah satu contoh alat yang dapat mengakses stream-karakter. System call dasar dari antarmuka
ini dapat membuat sebuah aplikasi mengerti tentang bagaimana cara untuk mengambil dan menuliskan sebuah
karakter. Kemudian pada pengembangan lanjutannya, kita dapat membuat library yang dapat mengakses
data/pesan baris demi baris.
Peralatan Jaringan
Karena adanya perbedaan dalam kinerja dan pengalamatan dari jaringan I/O, maka biasanya sistem operasi
memiliki antarmuka I/O yang berbeda dari baca, tulis dan pencarian pada disk. Salah satu yang banyak
digunakan pada sistem operasi adalah socket interface.
251Bab 7. I/O
Socket berfungsi untuk menghubungkan komputer ke jaringan. System call pada socket interface dapat
memudahkan suatu aplikasi untuk membuat local socket, dan menghubungkannya ke remote socket. Dengan
menghubungkan komputer ke socket, maka komunikasi antar komputer dapat dilakukan.
Jam dan Timer
Adanya jam dan timer pada perangkat keras komputer, setidaknya memiliki tiga fungsi, memberi informasi
waktu saat ini, memberi informasi lamanya waktu sebuah proses, sebagai trigger untuk suatu operasi pada suatu
waktu. Fungsi-fungsi ini sering digunakan oleh sistem operasi. Sayangnya, system call untuk pemanggilan
fungsi ini tidak distandarisasi antar sistem operasi.
Perangkat keras yang mengukur waktu dan melakukan operasi trigger dinamakan programmable interval timer.
Dia dapat diatur untuk menunggu waktu tertentu dan kemudian melakukan interupsi. Contoh penerapannya ada
pada scheduler, dimana dia akan melakukan interupsi yang akan memberhentikan suatu proses pada akhir dari
bagian waktunya.
Sistem operasi dapat mendukung lebih dari banyak timer request daripada banyaknya jumlah timer hardware.
Dengan kondisi seperti ini, maka kernel atau device driver mengatur daftar dari interupsi dengan urutan yang
pertama kali datang akan dilayani terlebih dahulu.
Blocking dan Nonblocking I/O
Ketika suatu aplikasi menggunakan sebuah blocking system call, eksekusi aplikasi itu akan dihentikan sementara
lalu dipindahkan ke wait queue. Setelah system call tersebut selesai, aplikasi tersebut dikembalikan ke run
queue, sehingga pengeksekusiannya akan dilanjutkan. Physical action dari peralatan I/O biasanya bersifat
asynchronous. Akan tetapi, banyak sistem operasi yang bersifat blocking, hal ini terjadi karena blocking
application lebih mudah dimengerti dari pada nonblocking application.
7.2.2. Kernel I/O Subsystem
Kernel menyediakan banyak layanan yang berhubungan dengan I/O. Pada bagian ini, kita akan mendeskripsikan
beberapa layanan yang disediakan oleh subsistem kernel I/O, dan kita akan membahas bagaimana caranya
membuat infrastruktur perangkat keras dan device driver. Layanan-layanan yang akan kita bahas adalah
penjadualan I/O, buffering, caching, spooling, reservasi perangkat, error handling.
Penjadualan I/O
Menjadual sekumpulan permintaan I/O sama dengan menentukan urutan yang sesuai untuk mengeksekusi
permintaan tersebut. Penjadualan dapat meningkatkan performa sistem secara keseluruhan, dapat membagi
perangkat secara adil di antara proses-proses, dan dapat mengurangi waktu tunggu rata-rata untuk menyelesaikan
operasi I/O.
Berikut adalah contoh sederhana untuk menggambarkan definisi di atas. Jika sebuah arm disk terletak di dekat
permulaan disk, dan ada tiga aplikasi yang memblokir panggilan untuk membaca disk tersebut. Aplikasi pertama
meminta sebuah blok dekat akhir disk, aplikasi kedua meminta blok yang dekat dengan awal, dan aplikasi tiga
meminta bagian tengah dari disk. Sistem operasi dapat mengurangi jarak yang harus ditempuh oleh arm disk
dengan melayani aplikasi tersebut dengan urutan 2, 3, 1. Pengaturan urutan pekerjaan kembali seperti ini
merupakan inti dari penjadualan I/O.
252Bab 7. I/O
Pengembang sistem operasi mengimplementasikan penjadualan dengan mengatur antrian permintaan untuk tiap
perangkat. Ketika sebuah aplikasi meminta sebuah blocking sistem I/O, permintaan tersebut dimasukkan ke
dalam antrian untuk perangkat tersebut. Scheduler I/O mengurutkan kembali antrian untuk meningkatkan
efisiensi dari sistem dan waktu respon rata-rata yang harus dialami oleh aplikasi. Sistem operasi juga mencoba
untuk bertindak secara adil agar tidak ada aplikasi yang menerima layanan yang lebih sedikit, atau dapat
memberikan prioritas layanan untuk permintaan penting yang ditunda. Contohnya, pemintaan dari sub sistem
mungkin akan mendapatkan prioritas lebih tinggi daripada permintaan dari aplikasi. Beberapa algoritma
penjadualan untuk I/O disk akan dijelaskan pada bagian Penjadualan Disk.
Salah satu cara untuk meningkatkan efisiensi I/O sub sistem dari sebuah komputer adalah dengan mengatur
operasi I/O tersebut. Cara lain adalah dengan menggunakan tempat penyimpanan pada memori utama atau pada
disk, melalui teknik yang disebut buffering, caching, dan spooling.
Buffering
Buffer adalah area memori yang menyimpan data ketika mereka sedang dipindahkan antara dua perangkat atau
antara perangkat dan aplikasi.
Tiga alasan melakukan buffering:
1. Mengatasi perbedaan kecepatan antara produsen dengan konsumen dari sebuah stream data.
Contoh, sebuah berkas sedang diterima melalui modem dan akan disimpan di hard disk. Kecepatan modem
tersebut ribuan kali lebih lambat daripada hard disk, sehingga buffer dibuat di dalam memori utama untuk
mengumpulkan jumlah byte yang diterima dari modem. Ketika keseluruhan data di buffer sudah sampai,
buffer tersebut dapat ditulis ke disk dengan operasi tunggal.
Karena penulisan disk tidak terjadi dengan seketika dan modem masih memerlukan tempat untuk
menyimpan data yang berdatangan, maka dua buah buffer digunakan untuk melakukan operasi ini. Setelah
modem memenuhi buffer pertama, akan terjadi permintaan untuk menulis di disk. Modem kemudian mulai
memenuhi buffer kedua sementara buffer pertama dipakai untuk penulisan ke disk. Seiring modem sudah
memenuhi buffer kedua, penulisan ke disk dari buffer pertama seharusnya sudah selesai, jadi modem akan
berganti kembali memenuhi buffer pertama sedangkan buffer kedua dipakai untuk menulis. Metode double
buffering ini membuat pasangan ganda antara produsen dan konsumen sekaligus mengurangi kebutuhan
waktu diantara mereka.
2. Untuk menyesuaikan perangkat-perangkat yang mempunyai perbedaan dalam ukuran transfer data.
Hal ini sangat umum terjadi pada jaringan komputer, dimana buffer dipakai secara luas untuk fragmentasi
dan pengaturan kembali pesan-pesan yang diterima. Pada bagian pengirim, sebuah pesan yang besar akan
dipecah ke dalam paket-paket kecil. Paket-paket tersebut dikirim melalui jaringan, dan penerima akan
meletakkan mereka di dalam buffer untuk disusun kembali.
3. Untuk mendukung copy semantics untuk aplikasi I/O. Sebuah contoh akan menjelaskan apa arti dari copy
semantics. Jika ada sebuah aplikasi yang mempunyai buffer data yang ingin dituliskan ke disk, aplikasi
tersebut akan memanggil sistem penulisan, menyediakan pointer ke buffer, dan sebuah integer untuk
menunjukkan ukuran bytes yang ingin ditulis. Setelah pemanggilan tersebut, apakah yang akan terjadi jika
aplikasi tersebut merubah isi dari buffer?
Dengan copy semantics, versi data yang ingin ditulis sama dengan versi data waktu aplikasi ini memanggil
sistem untuk menulis, tidak tergantung dengan perubahan yang terjadi pada buffer. Sebuah cara sederhana
untuk sistem operasi untuk menjamin copy semantics adalah membiarkan sistem penulisan untuk menyalin
data aplikasi ke dalam buffer kernel sebelum mengembalikan kontrol kepada aplikasi. Jadi penulisan ke disk
253Bab 7. I/O
dilakukan pada buffer kernel, sehingga perubahan yang terjadi pada buffer aplikasi tidak akan membawa
dampak apa-apa. Menyalin data antara buffer kernel data aplikasi merupakan sesuatu yang umum pada
sistem operasi, kecuali overhead yang terjadi karena operasi clean semantics. Kita dapat memperoleh efek
yang sama yang lebih efisien dengan memanfaatkan pemetaan virtual-memori dan proteksi copy-on-wire
dengan lebih pintar.
Caching
Sebuah cache adalah daerah memori yang cepat yang berisikan data kopian. Akses ke sebuah kopian yang
di-cached lebih efisien daripada akses ke data asli. Sebagai contoh, instruksi-instruksi dari proses yang sedang
dijalankan disimpan ke dalam disk, dan ter-cached di dalam memori fisik, dan kemudian dikopi lagi ke dalam
cache secondary and primary dari CPU. Perbedaan antara sebuah buffer dan cache adalah buffer dapat
menyimpan satu-satunya informasi data sedangkan sebuah cache secara definisi hanya menyimpan sebuah data
dari sebuah tempat untuk dapat diakses lebih cepat.
Caching dan buffering adalah dua fungsi yang berbeda, tetapi terkadang sebuah daerah memori dapat digunakan
untuk keduanya. sebagai contoh, untuk menghemat copy semantics dan membuat penjadualan I/O menjadi
efisien, sistem operasi menggunakan buffer pada memori utama untuk menyimpan data.
Buffer ini juga digunakan sebagai cache, untuk meningkatkan efisiensi IO untuk berkas yang digunakan secara
bersama-sama oleh beberapa aplikasi, atau yang sedang dibaca dan ditulis secara berulang-ulang.
Ketika kernel menerima sebuah permintaan berkas I/O, kernel tersebut mengakses buffer cache untuk melihat
apakah daerah memori tersebut sudah tersedia dalam memori utama. Jika sudah tersedia, sebuah physical disk
I/O dapat dihindari atau bahkan tidak dipakai. Penulisan disk juga terakumulasi ke dalam buffer cache selama
beberapa detik, jadi transfer yang besar akan dikumpulkan untuk mengefisiensikan jadual penulisan. Cara ini
akan menunda penulisan untuk meningkatkan efisiensi I/O akan dibahas pada bagian Remote File Access.
Spooling dan Reservasi Perangkat
Gambar 7-4. Spooling
Spooling adalah proses yang sangat berguna saat berurusan dengan perangkat I/O dalam sistem multiprogram.
Sebuah spool adalah sebuah buffer yang menyimpan keluaran untuk sebuah perangkat yang tidak dapat
menerima interleaved data streams. Salah satu perangkat spool yang paling umum adalah printer.
Printer hanya dapat melayani satu pekerjaan pada waktu tertentu, namun beberapa aplikasi dapat meminta
printer untuk mencetak. Spooling memungkinkan keluaran mereka tercetak satu per satu, tidak tercampur. Untuk
mencetak sebuah berkas, pertama-tama sebuah proses mengeneralisasi berkas secara keseluruhan untuk di cetak
dan ditempatkan pada spooling directory. Sistem operasi akan menyelesaikan masalah ini dengan
254Bab 7. I/O
meng-intercept semua keluaran kepada printer. Tiap keluaran aplikasi sudah di-spooled ke disk berkas yang
berbeda. Ketika sebuah aplikasi selesai mencetak, sistem spooling akan melanjutkan ke antrian berikutnya.
Di dalam beberapa sistem operasi, spooling ditangani oleh sebuah sistem proses daemon. Pada sistem operasi
yang lain, sistem ini ditangani oleh in-kernel thread. Pada kedua penanganan tersebut, sistem operasi
menyediakan antarmuka kontrol yang membuat users and sistem administrator dapat menampilkan antrian
tersebut, untuk mengenyahkan antrian-antrian yang tidak diinginkan sebelum mulai dicetak.
Contoh lain adalah penggunaan spooling pada transfer berkas melalui jaringan yang biasanya menggunakan
daemon jaringan. Untuk mengirim berkas ke suatu tempat, user menempatkan berkas tersebut dalam spooling
directory jaringan. Selanjutnya, daemon jaringan akan mengambilnya dan mentransmisikannya. Salah satu
bentuk nyata penggunaan spooling jaringan adalah sistim email via Internet. Keseluruhan sistem untuk mail ini
berlangsung di luar sistem operasi.
Beberapa perangkat, seperti drive tape dan printer, tidak dapat me-multiplex permintaan I/O dari beberapa
aplikasi. Selain dengan spooling, dapat juga diatasi dengan cara lain, yaitu dengan membagi koordinasi untuk
multiple concurrent ini. Beberapa sistem operasi menyediakan dukungan untuk akses perangkat secara eksklusif,
dengan mengalokasikan proses ke device idle dan membuang perangkat yang sudah tidak diperlukan lagi. Sistem
operasi lainnya memaksakan limit suatu berkas untuk menangani perangkat ini. Banyak sistem operasi
menyediakan fungsi yang membuat proses untuk menangani koordinat exclusive akses diantara mereka sendiri.
Error Handling
Sebuah sistem operasi yang menggunakan protected memory dapat menjaga banyak kemungkinan error akibat
perangkat keras mau pun aplikasi. Perangkat dan transfer I/O dapat gagal dalam banyak cara, dapat karena alasan
transient, seperti overloaded pada jaringan, maupun alasan permanen yang seperti kerusakan yang terjadi pada
disk controller. Sistem operasi seringkali dapat mengkompensasikan untuk kesalahan transient. Seperti, sebuah
kesalahan baca pada disk akan mengakibatkan pembacaan ulang kembali dan sebuah kesalahan pengiriman pada
jaringan akan mengakibatkan pengiriman ulang apabila protokolnya diketahui. Akan tetapi untuk kesalahan
permanen, sistem operasi pada umumnya tidak akan dapat mengembalikan situasi seperti semula.
Sebuah ketentuan umum, yaitu sebuah sistem I/O akan mengembalikan satu bit informasi tentang status
panggilan tersebut, yang akan menandakan apakah proses tersebut berhasil atau gagal. Sistem operasi pada
UNIX menggunakan integer tambahan yang dinamakan ERRNO untuk mengembalikan kode kesalahan sekitar
1 dari 100 nilai yang mengindikasikan sebab dari kesalahan tersebut. Sebaliknya, beberapa perangkat keras dapat
menyediakan informasi kesalahan yang detail, walau pun banyak sistem operasi yang tidak mendukung fasilitas
ini.
Sebagai contoh, kesalahan pada perangkat SCSI dilaporkan oleh protokol SCSI dalam bentuk sense key yang
mengindentifikasi kesalahan yang umum seperti error pada perangkat keras atau permintaan yang ilegal; sebuah
additional sense code yang mengkategorikan kesalahan yang muncul, seperti kesalahan parameter atau
kesalahan self-test; dan sebuah additional sense code qualifier yang memberitahukan kesalahan secara lebih
mendalam dan mendetil, seperti parameter yang error.
Struktur Data Kernel
Kernel membutuhkan informasi keadaan tentang penggunakan komponen I/O. Kernel menggunakan banyak
struktur yang mirip untuk melacak koneksi jaringan, komunikasi perangkat karakter, dan aktivitas I/O lainnya.
UNIX menyediakan akses sistem berkas untuk beberapa entiti, seperti berkas pengguna, raw devices, dan alamat
tempat proses. Walau pun tiap entiti ini didukung sebuah operasi baca, semantiknya berbeda untuk tiap entiti.
Seperti untuk membaca berkas pengguna, kernel perlu memeriksa buffer cache sebelum memutuskan apakah
akan melaksanakan I/O disk. Untuk membaca sebuah raw disk, kernel perlu untuk memastikan bahwa ukuran
255Bab 7. I/O
permintaan adalah kelipatan dari ukuran sektor disk, dan masih terdapat di dalam batas sektor. Untuk memproses
citra, cukup perlu untuk mengkopi data ke dalam memori. UNIX mengkapsulasikan perbedaan-perbedaan ini di
dalam struktur yang seragam dengan menggunakan teknik object oriented.
Beberapa sistem operasi bahkan menggunakan metode object oriented secara lebih ekstensif. Sebagai contoh,
Windows NT menggunakan implementasi message-passing untuk I/O. Sebuah permintaan I/O akan
dikonversikan ke sebuah pesan yang dikirim melalui kernel kepada I/O manager dan kemudian ke device driver,
yang masing-masing dapat mengubah isi pesan. Untuk output, isi message adalah data yang akan ditulis. Untuk
input, message berisikan buffer untuk menerima data. Pendekatan message-passing ini dapat menambah
overhead, dengan perbandingan dengan teknik prosedural yang membagi struktur data, tetapi akan
mennyederhanakan struktur dan design dari sistem I/O tersebut dan menambah fleksibilitas.
Kesimpulannya, subsistem I/O mengkoordinasi kumpulan-kumpulan service yang banyak sekali, yang tersedia
dari aplikasi maupun bagian lain dari kernel. Subsistem I/O mengawasi:
1. Managemen nama untuk berkas dan perangkat.
2. Kontrol akses untuk berkas dan perangkat.
3. Kontrol operasi, contoh: model yang tidak dapat dikenali.
4. Alokasi tempat sistem berkas.
5. Alokasi perangkat.
6. Buffering, caching, spooling.
7. Penjadualan I/O
8. Mengawasi status perangkat, error handling, dan kesalahan dalam recovery.
9. Konfigurasi dan utilisasi driver device.
7.2.3. Penanganan Permintaan I/O
Di bagian sebelumnya, kita mendeskripsikan handshaking antara device driver dan pengendali perangkat, tapi
kita tidak menjelaskan bagaimana Sistem Operasi menyambungkan permintaan aplikasi untuk menyiapkan
jaringan menuju sektor disk yang spesifik.
Sistem Operasi yang modern mendapatkan fleksibilitas yang signifikan dari tahapan-tahapan tabel lookup di
jalur diantara permintaan dan pengendali perangkat physical. Kita dapat mengenalkan perangkat dan driver baru
ke komputer tanpa harus meng-compile ulang kernelnya. Sebagai fakta, ada beberapa sistem operasi yang
mampu untuk me-load device drivers yang diinginkan. Pada waktu boot, sistem mula-mula meminta bus
perangkat keras untuk menentukan perangkat apa yang ada, kemudian sistem me-load ke dalam driver yang
sesuai; baik sesegera mungkin, mau pun ketika diperlukan oleh sebuah permintaan I/O.
Sistem V UNIX mempunyai mekanisme yang menarik, yang disebut streams, yang membolehkan aplikasi untuk
men-assemble pipeline dari kode driver secara dinamis. Sebuah stream adalah sebuah koneksi full duplex antara
sebuah device driver dan sebuah proses user-level. Stream terdiri atas sebuah stream head yang merupakan
antarmuka dengan user process, sebuah driver end yang mengontrol perangkat, dan nol atau lebih stream
modules di antara mereka. Modules dapat didorong ke stream untuk menambah fungsionalitas di sebuah layered
fashion. Sebagai gambaran sederhana, sebuah proses dapat membuka sebuah alat port serial melalui sebuah
stream, dan dapat mendorong ke sebuah modul untuk memegang edit input. Stream dapat digunakan untuk
interproses dan komunikasi jaringan. Faktanya, di Sistem V, mekanisme soket diimplementasikan dengan stream.
Berikut dideskripsikan sebuah lifecycle yang tipikal dari sebuah permintaan pembacaan blok:
256Bab 7. I/O
1. Sebuah proses mengeluarkan sebuah blocking read system call ke sebuah berkas deskriptor dari berkas yang
telah dibuka sebelumnya.
2. Kode system-call di kernel mengecek parameter untuk kebenaran. Dalam kasus input, jika data telah siap di
buffer cache, data akan dikembalikan ke proses dan permintaan I/O diselesaikan.
3. Jika data tidak berada dalam buffer cache, sebuah physical I/O akan bekerja, sehingga proses akan
dikeluarkan dari antrian jalan (run queue) dan diletakkan di antrian tunggu (wait queue) untuk alat, dan
permintaan I/O pun dijadualkan. Pada akhirnya, subsistem I/O mengirimkan permintaan ke device driver.
Bergantung pada sistem operasi, permintaan dikirimkan melalui call subrutin atau melalui pesan in-kernel.
4. Device driver mengalokasikan ruang buffer pada kernel untuk menerima data, dan menjadualkan I/O. Pada
akhirnya, driver mengirim perintah ke pengendali perangkat dengan menulis ke register device control.
5. Pengendali perangkat mengoperasikan perangkat keras perangkat untuk melakukan transfer data.
6. Driver dapat menerima status dan data, atau dapat menyiapkan transfer DMA ke memori kernel. Kita
mengasumsikan bahwa transfer diatur oleh sebuah DMA controller, yang menggunakan interupsi ketika
transfer selesai.
7. Interrupt handler yang sesuai menerima interupsi melalui tabel vektor-interupsi, menyimpan sejumlah data
yang dibutuhkan, menandai device driver, dan kembali dari interupsi.
8. Device driver menerima tanda, menganalisa permintaan I/O mana yang telah diselesaikan, menganalisa
status permintaan, dan menandai subsistem I/O kernel yang permintaannya telah terselesaikan.
9. Kernel mentransfer data atau mengembalikan kode ke ruang alamat dari proses permintaan, dan
memindahkan proses dari antrian tunggu kembali ke antrian siap.
10. Proses tidak diblok ketika dipindahkan ke antrian siap. Ketika penjadual (scheduler) mengembalikan proses
ke CPU, proses meneruskan eksekusi pada penyelesaian dari system call.
7.3. I/O Streams dan Kinerja I/O
7.3.1. I/O Streams
I/O stream adalah suatu mekanisme pengiriman data secara bertahap dan terus menerus melalui suatu aliran data
dari proses ke peranti (begitu pula sebaliknya).
I/O Stream terdiri dari:
1. stream head yang berhubungan langsung dengan proses.
2. driver ends yang mengatur peranti-peranti
3. stream modules yang berada di antara stream head dan driver end, yang bertugas menyampaikan data ke
driver end melalui write queue, maupun menyampaikan data ke proses melalui read queue dengan cara
message passing.
Untuk memasukkan ke dalam stream digunakan ioctl() system call, sedangkan untuk menuliskan data ke peranti
digunakan write()/ putmsg() system calls, dan untuk membaca data dari peranti digunakan read()/ getmsg()
system calls.
257Bab 7. I/O
Gambar 7-5. Struktur Stream
7.3.2. Kinerja I/O
I/O adalah faktor penting dalam kinerja sistem. I/O sering meminta CPU untuk mengeksekusi device-driver code
dan menjadual proses secara efisien sewaktu memblock dan unblock. Hasil context switch men-stress ke CPU
dan hardware cache-nya. I/O juga memberitahukan ketidakefisienan mekanisme penanganan interupsi dalam
kernel, dan I/O me-load down memory bus saat data copy antara pengendali dan memori fisik, dan juga saat copy
antara kernel buffers dan application data space. Mengkopi dengan semua permintaan ini adalah salah satu
kekhawatiran dalam arsitektur komputer.
Walaupun komputer modern dapat menangani beribu-ribu interupsi per detik, namun penanganan interupsi
adalah pekerjaan yang sulit. Setiap interupsi mengakibatkan sistem melakukan perubahan status, mengeksekusi
interrupt handler lalu mengembalikan statusnya kembali. I/O yang terprogram dapat lebih efisien dibanding
interrupt-driven I/O, jika waktu cycle yang dibutuhkan untuk busy-waiting tidak berlebihan. I/O yang sudah
selesai biasanya meng-unblock sebuah proses lalu membawanya ke full overhead of context switch.
Network traffic juga dapat menyebabkan high context-switch rate. Coba diperhatikan, misalnya sebuah remote
login dari sebuah mesin ke mesin lainnya. Setiap karakter yang diketikkan pada local machine harus dikirim ke
remote machine. Pada local machine karakter akan diketikkan, lalu keyboard interrupt dibuat, dan karakter
melewati interrupt handler menuju device-driver lalu ke kernel, setelah itu ke proses. Proses memanggil network
I/O system call untuk mengirim karakter ke remote machine. Karakter lalu melewati local kernel, menuju ke
lapisan-lapisan network yang membuat paket network, lalu ke network device driver. Network device driver
mengirim paket itu ke network controller, yang mengirim karakter dan membuat interupsi. Interupsi kemudian
dikembalikan ke kernel supaya I/O system call dapat selesai.
Sekarang remote system’s network hardware sudah menerima paket, dan interupsi dibuat. Karakter di-unpack
dari network protocol dan dikirim ke network daemon yang sesuai. Network daemon mengidentifikasi remote
login session mana yang terlibat, dan mengirim paket ke subdaemon yang sesuai untuk session itu. Melalui alur
258Bab 7. I/O
ini, ada context switch dan state switch (lihat Gambar 7-6). Biasanya, penerima mengirim kembali karakter ke
pengirim.
Gambar 7-6. Gambar Komunikasi Interkomputer
Gambar ini diadaptasi dari [Silberschatz2002, halaman 484].
Developer Solaris mengimplementasikan kembali telnet daemon menggunakan kernel-thread untuk
menghilangkan context switch yang terlibat dalam pemindahan karakter dari daemon ke kernel. Sun
memperkirakan bahwa perkembangan ini akan menambah jumlah maksimum network logins dari beberapa ratus
hingga beberapa ribu (pada server besar).
Sistem lain menggunakan front-end processor yang terpisah untuk terminal I/O, supaya mengurangi beban
interupsi pada main CPU. Misalnya, sebuah terminal concentrator dapat mengirim sinyal secara bersamaan dari
beratus-ratus terminal ke satu port di large computer. Sebuah I/O channel adalah sebuah CPU yang memiliki
tujuan khusus yang ditemukan pada mainframe dan pada sistem high-end lainnya. Kegunaan dari I/O channel
adalah untuk meng-offload I/O work dari main CPU. Prinsipnya adalah channel tersebut menjaga supaya lalu
lintas data lancar, sehingga main CPU dapat bebas memproses data. Seperti device controller dan DMA
controller yang ada pada smaller computer, sebuah channel dapat memproses program-program yang umum dan
kompleks, jadi channel dapat digunakan untuk workload tertentu.
Kita dapat menggunakan beberapa prinsip untuk menambah efisiensi I/O:
1. Mengurangi context switch.
2. Mengurangi jumlah pengkopian data dalam memori sewaktu pengiriman antara peranti dan aplikasi.
3. Mengurangi jumlah interupsi dengan menggunakan transfer besar-besaran, smart controller, dan polling
(jika busy-waiting dapat diminimalisir).
4. Menambah konkurensi dengan menggunakan pengendali atau channel DMA yang sudah diketahui untuk
meng-offload kopi data sederhana dari CPU.
5. Memindahkan processing primitives ke perangkat keras, supaya operasi pada device controller konkuren
dengan CPU dan operasi bus.
6. Keseimbangan antara CPU, memory subsystem, bus dan kinerja I/O, karena sebuah overload pada salah satu
area akan menyebabkan keterlambatan pada yang lain.
Kompleksitas peranti berbeda-beda, misalnya mouse. Mouse adalah peranti yang sederhana. Pergerakan mouse
dan button click diubah menjadi nilai numerik yang dikirim dari perangkat keras (melalui mouse device driver)
menuju aplikasinya. Kebalikan dari mouse, fungsionalitas yang disediakan NT disk device driver sangatlah
kompleks. NT disk device driver tidak hanya mengatur individual disk, tapi juga mengimplementasikan RAID
259Bab 7. I/O
array. Untuk dapat melakukannya, NT disk device driver mengubah read ataupun write request dari aplikasi
menjadi coordinated set of disk I/O operations. Terlebih lagi, NT disk device driver mengimplementasikan
penanganan error dan algoritma data-recovery, lalu mengambil langkah-langkah untuk mengoptimalkan kinerja
disk, karena kinerja penyimpanan sekunder adalah hal penting untuk keseluruhan kinerja sistem.
Kapan fungsionalitas I/O dapat diimplementasikan? Pada device hardware, device driver, atau pada aplikasi
perangkat lunak?
Mula-mula kita implementasikan eksperimen algoritma I/O pada application level, karena application code lebih
fleksibel, dan application bug tidak membuat sistem crash. Terlebih lagi dengan mengembangkan kode pada
application level, kita dapat menghindari reboot ataupun reload device driver setiap mengganti kode.
Bagaimanapun juga sebuah implementasi pada application level dapat tidak efisien, karena overhead of context
switch, dan karena aplikasi tidak dapat menerima kemudahan dari internal kernel data structure dan
fungsionalitas kernel (seperti internal kernel messaging, threading, dan locking yang efisien).
Ketika algoritma application level memperlihatkan kegunaannya, kita dapat mengimplementasikan kembali
kernel, sehingga dapat menambah kinerja. Akan tetapi, usaha pengembangan sulit dilakukan karena sistem
operasi kernel adalah sistem perangkat lunak yang besar dan kompleks.
Terlebih lagi, dalam pengimplementasian internal kernel harus di-debug secara hati-hati untuk menghindari data
corrupt dan sistem crash.
Kinerja tertinggi dapat didapatkan dengan cara implementasi spesial dalam perangkat keras, baik dalam peranti
ataupun pengendali. Kerugian dari implementasi perangkat keras termasuk kesulitan dan pengorbanan dari
membuat kemajuan atau dari pembetulan bug, dan bertambahnya development time (dalam satuan bulan, bukan
hari), dan berkurangnya fleksibilitas.
Misalnya, sebuah hardware RAID controller mungkin saja tidak memberikan izin kepada kernel untuk
mempengaruhi urutan ataupun lokasi dari individual block reads and writes, walaupun kernel memiliki
informasi tertentu tentang workload yang mampu membuat kernel meningkatkan kinerja I/O.
7.4. Managemen Disk
7.4.1. Struktur Disk
Struktur disk merupakan suatu hal yang penting bagi penyimpanan informasi. Sistem komputer modern
menggunakan Disk sebagai media penyimpanan sekunder. Dulu pita magnetik digunakan sebelum penggunaan
disk sebagai media penyimpanan, sekunder yang memiliki waktu akses yang lebih lambat dari disk. Sejak
digunakan disk, tape digunakan untuk backup, untuk menyimpan informasi yang tidak sering digunakan, sebagai
media untuk memindahkan informasi dari satu sistem ke sistem lain, dan untuk menyimpan data yang cukup
besar bagi sistem disk.
Bentuk penulisan Disk drive modern adalah array blok logika satu dimensi yang besar. Blok logika merupakan
satuan unit terkecil dari transfer. Ukuran blok logika umumnya sebesar 512 bytes walau pun disk dapat diformat
di level rendah (low level formatted) sehingga ukuran blok logika dapat ditentukan, misalnya 1024 bytes.
Array adalah blok logika satu dimensi yang dipetakan ke sektor dari disk secara sekuensial. Sektor 0 merupakan
sektor pertama dari track pertama yang terletak di silinder paling luar (outermost cylinder). Proses pemetaan
dilakukan secara berurut dari Sektor 0, lalu ke seluruh track dari silinder tersebut, lalu ke seluruh silinder mulai
dari silinder terluar sampai silinder terdalam.
Kita dapat mengubah sebuah nomor blok logika dengan pemetaan menjadi sebuah alamat disk yang terdiri atas
nomor silinder, nomor track di silinder tersebut, dan nomor sektor dari track tersebut. Dalam prakteknya, sulit
untuk menerapkan pengubahan tersebut karena ada dua alasan. Pertama, kebanyakan disk memiliki sejumlah
260Bab 7. I/O
sektor yang rusak, tetapi pemetaan menyembunyikan hal ini dengan mensubstitusikan dengan sektor lain yang
diambil dari suatu tempat di disk. Kedua, jumlah dari sektor tidak track tidak konstan. Pada media yang
menggunakan ketentuan Constant Linear Velocity (CLV) kepadatan bit tiap track sama, jadi semakin jauh sebuah
track dari tengah disk, semakin besar panjangnya, dan juga semakin banyak sektor yang dimilikinya. Trek di
zona terluar memiliki 40% sektor lebih banyak dibandingkan dengan track di zona terdalam. Untuk menjamin
aliran data yang sama, sebuah drive menaikan kecepatan putarannya ketika disk head bergerak dari zona luar ke
zona dalam. Metode ini digunakan dalam CD-ROM dan DVD-ROM. Metode lain yang digunakan agar rotasi
tetap konstan dan aliran data juga konstan dikenal dengan metode CAV (Constant Angular Velocity). CAV
memungkinkan aliran data yang konstan karena kepadatan bit dari zona terdalam ke zona terluar semakin
berkurang, sehingga dengan kecepatan rotasi yang konstan diperoleh aliran data yang konstan.
7.4.2. Penjadualan Disk
Penjadualan disk merupakan salah satu hal yang sangat penting dalam mencapai efisiensi perangkat keras. Bagi
disk drives, efisiensi dipengaruhi oleh kecepatan waktu akses dan besarnya disk bandwith. Waktu akses memiliki
dua komponen utama yaitu waktu pencarian dan waktu rotasi disk (rotational latency). Waktu pencarian adalah
waktu yang dibutuhkan disk arm untuk menggerakkan head ke bagian silinder disk yang mengandung sektor
yang diinginkan. Waktu rotasi disk adalah waktu tambahan yang dibutuhkan untuk menunggu perputaran disk
agar head dapat berada di atas sektor yang diinginkan. Disk bandwith adalah total jumlah bytes yang ditransfer
dibagi dengan total waktu dari awal permintaan transfer sampai transfer selesai. Kita dapat meningkatkan waktu
akses dan bandwidth dengan menjadualkan permintaan dari I/O dalam urutan tertentu.
Apabila suatu proses membutuhkan pelayanan I/O dari atau menuju disk, maka proses tersebut akan melakukan
system call ke sistem operasi. Permintaan tersebut membawa beberapa informasi, antara lain:
1. Apakah operasi input atau output.
2. Alamat disk untuk proses tersebut.
3. Alamat memori untuk proses tersebut
4. Jumlah bytes yang akan ditransfer
Pelayanan akan dilayani pada suatu proses apabila disk drive beserta pengendali tersedia untuk proses tersebut.
Apabila disk drive dan pengendali sedang sibuk melayani proses lain, maka semua permintaan yang memerlukan
pelayanan disk tersebut akan diletakkan pada suatu antrian permintaan untuk disk tersebut. Dengan demikian,
jika suatu permintaan telah dilayani, maka sistem operasi melayani permintaan dari antrian berikutnya.
7.4.3. Penjadualan FCFS
Penjadualan disk FCFS melayani permintaan sesuai dengan antrian dari banyak proses yang meminta layanan.
Secara umum algoritma FCFS ini sangat adil walaupun ada kelemahan dalam algoritma ini dalam hal
kecepatannya yang lambat. Sebagai contoh, antrian permintaan pelayanan disk untuk proses I/O pada blok dalam
silinder adalah sebagai berikut: 10, 45, 37, 56, 60, 25, 78, 48, 88, 70, 5, 20. Jika head pada awalnya berada pada
50, maka head akan bergerak dulu dari 50 ke 10, kemudian 45, 37, 56, 60, 25, 78, 48, 88, 70, 5 dan terakhir 20,
dengan total pergerakan head sebesar 362 silinder.
Dari contoh diatas, kita dapat melihat permasalahan dengan menggunakan penjadualan jenis ini yaitu pergerakan
dari 78 ke 48 dan kembali lagi ke 88. Jika permintaan terhadap silinder 88 dapat dilayani setelah permintaan 78,
setelah selesai baru melayani permintaan 48, maka pergerakan total head dapat dikurangi, sehingga dengan
demikian pendayagunaan akan meningkat.
261Bab 7. I/O
Gambar 7-7. Penjadualan FCFS
Gambar ini diadaptasi dari [Silberschatz2002, halaman 494].
7.4.4. Penjadualan SSTF
Shortest-Seek-Time-First (SSTF) merupakan algoritma yang melayani permintaan berdasarkan waktu pencarian
atau waktu pencarian paling kecil dari posisi head terakhir. Karena waktu pencarian meningkat seiring dengan
jumlah silinder yang dilewati oleh head, maka SSTF memilih permintaan yang paling dekat posisinya di disk
terhadap posisi head terakhir. Pergerakan dari contoh diatas yaitu 50 ke 48, lalu ke 45, 37, 25, 20, 10, 5, 56, 60,
70, 78, 88.
Perhatikan contoh antrian permintaan yang kita sajikan pada penjadualan FCFS, permintaan paling dekat dengan
posisi head saat itu (50) adalah silinder 48. Jika kita penuhi permintaan 48, maka yang terdekat berikutnya
adalah silinder 45. Dari 45, silinder 37 letaknya lebih dekat ke 45 dibandingkan silinder 56,jadi 37 dilayani
duluan. Selanjutnya, dilanjutkan ke silinder 25, 20, 10, 5, 56, 60, 70, 78 dan terakhir adalah 88.
Metode penjadualan ini hanya menghasilkan total pergerakan head sebesar 128 silinder -- kira-kira sepertiga dari
yang dihasilkan penjadualan FCFS. Algoritma SSTF ini memberikan peningkatan yang cukup signifikan dalam
hal pendayagunaan atau kinerja sistem.
Penjadualan SSTF merupakan salah satu bentuk dari penjadualan shortest-job-first (SJF), dan karena itu maka
penjadualan SSTF juga dapat mengakibatkan starvation pada suatu saat tertentu. Hal ini dapat terjadi bila ada
permintaan untuk mengakses bagian yang berada di silinder terdalam. Jika kemudian berdatangan lagi
permintaan-permintaan yang letaknya lebih dekat dengan permintaan terakhir yang dilayani maka permintaan
dari silinder terluar akan menunggu lama dan sebaliknya. Walaupun algoritma SSTF jauh lebih cepat
dibandingkan dengan FCFS, namun untuk keadilan layanan SSTF lebih buruk dari penjadualan FCFS.
262Bab 7. I/O
Gambar 7-8. Penjadualan SSTF
Gambar ini diadaptasi dari [Silberschatz2002, halaman 494]
7.4.5. Penjadualan SCAN
Pada algoritma ini disk arm bergerak menuju ke silinder paling ujung dari disk, kemudian setelah sampai di
silinder paling ujung, disk arm akan berbalik arah geraknya menuju ke silinder paling ujung lainnya. Algoritma
SCAN disebut juga Algoritma lift/ elevator karena algoritma ini cara kerjanya sama seperti algoritma yang
umum dipakai oleh lift untuk melayani penggunanya, yaitu lift akan melayani orang-orang yang akan naik ke
atas dulu, setelah sampai di lantai tertinggi, baru lift akan berbalik arah geraknya untuk melayani orang-orang
yang akan turun. Dalam pergerakannya yang seperti lift itu, disk arm hanya dapat melayani
permintaan-permintaan yang berada di depan arah geraknya terlebih dahulu. Bila ada permintaan yang berada di
belakang arah geraknya, permintaan tersebut harus menunggu sampai disk arm mencapai salah satu silinder
paling ujung dari disk, kemudian berbalik arah geraknya untuk melayani permintaan tersebut.
Contoh: (lihat Gambar 7-9) Jika disk head sedang berada di silinder 50, dan sedang bergerak menuju silinder 99,
maka permintaan yang dapat dilayani berikutnya adalah yang terdekat dengan silinder 50, tetapi masih berada di
depan arah geraknya, yaitu: silinder 56. Begitu seterusnya disk arm melayani permintaan yang berada di
depannya sampai disk arm mencapai silinder 99 dan berbalik arah gerak menuju ke silinder 0. Maka setelah disk
arm berbalik arah gerak, permintaan di silinder 45 baru dapat dilayani.
Keunggulan dari algoritma SCAN adalah total pergerakan disk arm memiliki batas atas, yaitu 2 kali dari jumlah
total silinder pada disk. Tetapi di samping itu masih ada beberapa kelemahan yang dimiliki oleh algoritma ini.
Dari contoh Gambar 7-9 terlihat salah satu kelemahan algoritma SCAN: permintaan di silinder 88 sebenarnya
sudah merupakan permintaan yang paling ujung, tetapi disk arm harus bergerak sampai silinder 99 dulu, baru
kemudian dapat berbalik arah geraknya. Bukankah hal seperti itu sangat tidak efisien? Mengapa disk arm tidak
langsung berbalik arah geraknya sesudah sampai di silinder 88? Kelemahan ini akan dijawab oleh algoritma
LOOK yang akan dibahas pada sub-bab berikutnya.
263Bab 7. I/O
Kelemahan lain dari algoritma SCAN yaitu dapat menyebabkan terjadinya starvation. Begitu disk arm berbalik
arah geraknya dari silinder 99, maka silinder yang berada dekat di depan arah gerak disk arm baru saja dilayani,
sedangkan silinder-silinder yang dekat dengan silinder 0 sudah lama menunggu untuk dilayani. Bila kemudian
bermunculan permintaan-permintaan baru yang dekat dengan silinder 99 lagi, maka permintaan-permintaan baru
itulah yang akan dilayani, sehingga permintaan-permintaan yang dekat dengan silinder 0 akan semakin "lapar".
Karena kelemahan yang kedua inilah muncul modifikasi dari algoritma SCAN, yaitu C-SCAN yang akan kita
bahas berikutnya.
Gambar 7-9. Penjadualan SCAN
Gambar ini diadaptasi dari [Silberschatz2002, halaman 495]
7.4.6. Penjadualan C-SCAN
Algoritma Circular SCAN (C-SCAN) merupakan hasil modifikasi algoritma SCAN untuk mengurangi
kemungkinan starvation yang dapat terjadi pada SCAN. Perbedaan C-SCAN dengan SCAN hanya pada
bagaimana pergerakan disk arm setelah sampai ke salah satu silinder paling ujung. Pada algoritma SCAN, disk
arm akan berbalik arah menuju ke silinder paling ujung yang lain sambil tetap melayani permintaan yang berada
di depan arah pergerakan disk arm, sedangkan pada algoritma C-SCAN sesudah mencapai silinder paling ujung,
maka disk arm akan bergerak cepat ke silinder paling ujung lainnya tanpa melayani permintaan.
Contoh: (lihat Gambar 7-10) Setelah sampai di silinder 99, disk arm akan bergerak dengan cepat ke silinder 0
tanpa melayani permintaan selama dalam perjalanannya. Kemudian setelah sampai di silinder 0, baru disk arm
akan bergerak ke arah silinder 99 lagi sambil melayani permintaan.
Dengan pergerakan yang seperti demikian, seolah-olah disk arm hanya bergerak 1 arah dalam melayani
permintaan. Tetapi dalam algoritma C-SCAN masih terkandung kelemahan yang juga dimiliki oleh algoritma
SCAN, yaitu disk arm harus sampai di silinder 99 atau silinder 0 terlebih dahulu sebelum dapat berbalik arah.
Untuk itulah dibuat algoritma LOOK yang akan kita bahas berikutnya.
264Bab 7. I/O
Gambar 7-10. Penjadualan C-SCAN
Gambar ini diadaptasi dari [Silberschatz2002, halaman 496].
7.4.7. Penjadualan LOOK
Sesuai dengan namanya, algoritma ini seolah-olah seperti dapat "melihat". Algoritma ini memperbaiki
kelemahan SCAN dan C-SCAN dengan cara melihat apakah di depan arah pergerakannya masih ada permintaan
lagi atau tidak. Bila tidak ada lagi permintaan di depannya, disk arm dapat langsung berbalik arah geraknya.
Penjadualan LOOK seperti SCAN yang lebih "pintar".
Contoh: (lihat Gambar 7-11). Ketika disk head sudah selesai melayani permintaan di silinder 88, algoritma ini
akan "melihat" bahwa ternyata di depan arah pegerakannya sudah tidak ada lagi permintaan yang harus dilayani.
Oleh karena itu disk arm dapat langsung berbalik arah geraknya sehingga permintaan yang menunggu untuk
dilayani dapat mendapatkan pelayanan lebih cepat.
Kelemahan algoritma ini sama seperti kelemahan algoritma SCAN bahwa dapat terjadi starvation untuk situasi
yang sama pula dengan yang menyebabkan terjadinya starvationpada algoritma SCAN. Oleh karena itulah
dibuat lagi suatu algoritma yang lebih baik untuk memperbaiki algoritma ini, yaitu: C-LOOK.
265Bab 7. I/O
Gambar 7-11. Penjadualan LOOK
Gambar ini diadaptasi dari [Silberschatz2002, halaman 497].
7.4.8. Penjadualan C-LOOK
Algoritma ini berhasil memperbaiki kelemahan-kelemahan algoritma SCAN, C-SCAN, dan LOOK. Algoritma
C-LOOK memperbaiki kelemahan LOOK sama seperti algoritma C-SCAN memperbaiki kelemahan SCAN,
yaitu pada cara pergerakan disk arm setelah mencapai silinder yang paling ujung.
Contoh: (lihat Gambar 7-12) dengan memiliki kemampuan "melihat" algoritma LOOK, setelah melayani
permintaan di silinder 88, disk arm akan bergerak dengan cepat ke silinder 5, yaitu permintaan di silinder yang
terletak paling dekat dengan silinder 0.
Dengan cara pergerakan disk arm yang mengadaptasi keunggulan dari C-SCAN dan LOOK, algoritma ini dapat
mengurangi terjadinya starvation, dengan tetap menjaga efektifitas pergerakan disk arm.
266Bab 7. I/O
Gambar 7-12. Penjadualan C-LOOK
Gambar ini diadaptasi dari [Silberschatz2002, halaman 497].
7.4.9. Pemilihan Algoritma Penjadualan Disk
Dari seluruh algoritma yang sudah kita bahas di atas, tidak ada algoritma yang terbaik untuk semua keadaan
yang terjadi. SSTF lebih umum dan memiliki prilaku yang lazim kita temui. SCAN dan C-SCAN
memperlihatkan kemampuan yang lebih baik bagi sistem yang menempatkan beban pekerjaan yang berat kepada
disk, karena algoritma tersebut memiliki masalah starvation yang paling sedikit. SSTF dan LOOK sering dipakai
sebagai algoritma dasar pada sistem operasi.
Dengan algoritma penjadualan yang mana pun, kinerja sistem sangat tergantung pada jumlah dan tipe
permintaan. Sebagai contoh, misalnya kita hanya memiliki satu permintaan, maka semua algoritma penjadualan
akan dipaksa bertindak sama. Sedangkan permintaan sangat dipengaruhi oleh metode penempatan berkas.
Karena kerumitan inilah, maka algoritma penjadualan disk harus ditulis dalam modul terpisah dari sistem
operasi, jadi dapat saling mengganti dengan algoritma lain jika diperlukan.
Namun perlu diingat bahwa algoritma-algoritma di atas hanya mempertimbangkan jarak pencarian, sedangkan
untuk disk modern, rotational latency dari disk sangat menentukan. Tetapi sangatlah sulit jika sistem operasi
harus memperhitungkan algoritma untuk mengurangi rotational latency karena disk modern tidak
memperlihatkan lokasi fisik dari blok-blok logikanya. Oleh karena itu para produsen disk telah mengurangi
masalah ini dengan mengimplementasikan algoritma penjadualan disk di dalam pengendali perangkat keras,
sehingga kalau hanya kinerja I/O yang diperhatikan, maka sistem operasi dapat menyerahkan algoritma
penjadualan disk pada perangkat keras itu sendiri.
7.5. Managemen Disk; Swap, Struktur RAID; Kaitan
267Bab 7. I/O
Langsung dan Jaringan; Implementasi Penyimpanan Stabil.
7.5.1. Managemen Disk
Beberapa aspek yang termasuk aspek penting dalam Managemen Disk:
1. Format Disk
Disk adalah salah satu tempat penyimpanan data. Sebelum sebuah disk dapat digunakan, disk harus
dibagi-bagi dalam beberapa sektor. Sektor-sektor ini yang kemudian akan dibaca oleh pengendali.
Pembentukan sektor-sektor ini disebut low level formatting atau physical formatting. Low level formatting
juga akan mengisi disk dgn beberapa struktur data penting seperti header dan trailer. Header dan trailer
mempunyai informasi seperti nomor sektor, dan Error Correcting Code (ECC). ECC ini berfungsi sebagai
correcting code karena mempunyai kemampuan untuk mendeteksi bit yang salah, menghitung nilai yang
benar dan kemudian mengubahnya. Ketika proses penulisan, ECC di-update dengan menghitung bit di area
data. Pada proses pembacaan, ECC dihitung ulang dan dicocokan dengan nilai ECC yang tersimpan saat
penulisan. Jika nilainya berbeda maka dipastikan ada sektor yang terkorup.
Agar dapat menyimpan data, OS harus menyimpan struktur datanya dalam disk tersebut. Proses itu
dilakukan dalam dua tahap, yaitu partisi dan logical formatting. Partisi akan membagi disk menjadi
beberapa silinder yang dapat diperlakukan secara independen. Logical formatting akan membentuk sistem
berkas disertai pemetaan disk. Terkadang sistem berkas ini dirasakan menggangu proses alokasi suatu data,
sehingga diadakan sistem partisi lain yang tidak mengikutkan pembentukan sistem berkas, disebut raw disk.
2. Boot Block
Saat sebuah komputer dijalankan, sistem akan mencari sebuah initial program yang akan memulai segala
sesuatunya. Initial program-nya (initial bootstrap) bersifat sederhana dan akan menginisialisasi seluruh
aspek yang diperlukan bagi komputer untuk beroperasi dengan baik seperti CPU registers, controller, dan
yang terakhir adalah Sistem Operasinya. Pada kebanyakan komputer, bootstrap disimpan di ROM (read
only memory) karena letaknya yang tetap dan dapat langsung dieksekusi ketika pertama kali listrik
dijalankan. Letak bootstrap di ROM juga menguntungkan karena sifatnya yang read only memungkinkan
dia untuk tidak terinfeksi virus. Untuk melakukan tugasnya, bootstrap mencari kernel di disk dan me-load
kernel ke memori dan kemudian loncat ke initial address untuk memulai eksekusi OS.
Untuk alasan praktis, bootstrap sering dibuat berbentuk kecil (tiny loader) dan diletakkan di ROM, yang
kemudian akan men- load full bootstrap dari disk bagian disk yang disebut boot block. Perubahan menjadi
bentuk simple ini bertujuan jika diadakan perubahan pada bootstrap, maka struktur ROM tidak perlu
dirubah semuanya.
3. Bad Block
Bad block adalah satu atau lebih sektor yang cacat atau rusak. Kerusakan ini dapat diakibatkan karena
kerentanan disk jika sering dipindah-pindah atau kemasukan benda asing. Dalam disk sederhana seperti IDE
controller, bad block akan ditangani secara manual seperti dengan perintah format pada MS-DOS yang akan
mencari bad block dan menulis nilai spesial ke FAT entry agar tidak mengalokasikan branch routine ke blok
tersebut.
SCSI mengatasi bad block dengan cara yang lebih baik. Daftar bad block-nya dipertahankan oleh controller
pada saat low level formatting, dan terus diperbarui selama disk itu digunakan. Low level formatting akan
memindahkan bad sector itu ke tempat lain yang kosong dengan algoritma sector sparing atau forwarding.
Sector sparing dijalankan dengan ECC mendeteksi bad sector dan melaporkannya ke OS, sehingga saat
sistem dijalankan sekali lagi, controller akan menggantikan bad sector tersebut dengan sektor kosong.
268Bab 7. I/O
algoritma lain yang sering digunakan adalah sector slipping. Ketika sebuah bad sector terdeteksi, sistem
akan mengopi semua isi sektor ke sektor selanjutnya secara bertahap satu-satu sampai ditemukan sektor
kosong. Misal bad sector di sektor 7, maka isinya akan dipindahkan ke sektor 8, isi sektor 8 dipindahakan
ke 9 dan seterusnya.
7.5.2. Managemen Ruang Swap
Managemen ruang swap adalah salah satu low level task dari OS. Memori virtual menggunakan ruang disk
sebagai perluasan dari memori utama. Tujuan utamanya adalah untuk menghasilkan output yang baik. Namun di
lain pihak, penggunaan disk akan memperlambat akses karena akses dari memori jauh lebih cepat.
1. Penggunaan Ruang Swap
Ruang swap digunakan dalam beberapa cara tergantung penerapan algoritma. Sebagai contoh, sistem yang
menggunakan swapping dapat menggunakan ruang swap untuk memegang seluruh proses pemetaan
termasuk data dan segmen. Jumlah dari ruang swap yang dibutuhkan tergantung dari jumlah memori fisik,
jumlah dari memori virtual yang dijalankan, cara penggunaan memori virtual tersebut. Beberapa OS seperti
UNIX menggunakan banyak ruang swap, yang biasa diletakan di disk terpisah.
Ketika kita akan menentukan besarnya ruang swap, sebaiknya kita tidak terlalu banyak atau terlalu sedikit.
Jika sistem dijalankan dan ruang swap terlalu sedikit, maka proses akan dihentikan dan mungkin akan
merusak sistem. Sebaliknya jika terlalu banyak juga akan mengakibatkan lambatnya akses dan pemborosan
ruang disk.
2. Lokasi Ruang Swap
Ruang swap dapat diletakan di dua tempat yaitu: ruang swap dapat berada di sistem berkas normal atau
dapat juga berada di partisi yang terpisah. Jika ruang swap berukuran besar dan diletakan di sistem berkas
normal, routine-nya dapat menciptakan, menamainya dan menentukan besar space. Walaupun lebih mudah
dijalankan, cara ini cenderung tidak efisien. Pengaksesannya akan sangat memakan waktu dan akan
meningkatkan fragmentasi karena pencarian data yang berulang terus selama proses baca atau tulis.
Ruang swap yang diletakan di partisi disk terpisah, menggunakan manajer ruang swap terpisah untuk
melakukan pengalokasian space. Manajer ruang swap tersebut menggunakan algoritma yang mengutamakan
peningkatan kecepatan dari pada efisiensi. Walaupun fragmentasi masih juga terjadi, tapi masih dalam
batas-batas toleransi mengingat ruang swap sangat sering diakses. Dengan partisi terpisah, alokasi ruang
swap harus sudah pasti. Proses penambahan besar ruang swap dapat dilakukan hanya dengan partisi ulang
atau penambahan dengan lokasi yang terpisah.
Gambar 7-13. Contoh Managemen ruang swap: pemetaan swap segmen teks 4.3 BSD
269Bab 7. I/O
Gambar ini diadaptasi dari [Silberschatz2002, halaman 504].
Gambar 7-14. Contoh Managemen ruang swap: pemetaan swap segmen data 4.3 BSD
Gambar ini diadaptasi dari [Silberschatz2002, halaman 504].
7.5.3. Struktur RAID
Disk memiliki resiko untuk mengalami kerusakan. Kerusakan ini dapat berakibat turunnya kinerja atau pun
hilangnya data. Meski pun terdapat backup data, tetap saja ada kemungkinan data yang hilang karena adanya
perubahan setelah terakhir kali data di-backup. Karenanya reliabilitas dari suatu disk harus dapat terus
ditingkatkan.
Berbagai macam cara dilakukan untuk meningkatkan kinerja dan juga reliabilitas dari disk. Biasanya untuk
meningkatkan kinerja, dilibatkan banyak disk sebagai satu unit penyimpanan. Tiap-tiap blok data dipecah ke
dalam beberapa subblok, dan dibagi-bagi ke dalam disk-disk tersebut. Ketika mengirim data disk-disk tersebut
bekerja secara paralel, sehingga dapat meningkatkan kecepatan transfer dalam membaca atau menulis data.
Ditambah dengan sinkronisasi pada rotasi masing- masing disk, maka kinerja dari disk dapat ditingkatkan. Cara
ini dikenal sebagai RAID -- Redundant Array of Independent (atau Inexpensive) Disks. Selain masalah kinerja
RAID juga dapat meningkatkan realibilitas dari disk dengan jalan melakukan redundansi data.
Tiga karakteristik umum dari RAID ini, yaitu:
1. Menurut Stallings [Stallings2001], RAID adalah sebuah sebuah set dari beberapa physical drive yang
dipandang oleh sistem operasi sebagai sebuah logical drive.
2. Data didistribusikan ke dalam array dari beberapa physical drive.
3. Kapasitas disk yang berlebih digunakan untuk menyimpan informasi paritas, yang menjamin data dapat
diperbaiki jika terjadi kegagalan pada salah satu disk.
Peningkatan Kehandalan dan Kinerja
Peningkatan Kehandalan dan Kinerja dari disk dapat dicapai melalui dua cara:
1. Redundansi
Peningkatan Kehandalan disk dapat dilakukan dengan redundansi, yaitu menyimpan informasi tambahan
yang dapat dipakai untuk membentuk kembali informasi yang hilang jika suatu disk mengalami kegagalan.
Salah satu teknik untuk redundansi ini adalah dengan cara mirroring atau shadowing, yaitu dengan membuat
duplikasi dari tiap-tiap disk. Jadi, sebuah disk logical terdiri dari 2 disk physical, dan setiap penulisan
dilakukan pada kedua disk, sehingga jika salah satu disk gagal, data masih dapat diambil dari disk yang
lainnya, kecuali jika disk kedua gagal sebelum kegagalan pada disk pertama diperbaiki. Pada cara ini, berarti
270Bab 7. I/O
diperlukan media penyimpanan yang dua kali lebih besar daripada ukuran data sebenarnya. Akan tetapi,
dengan cara ini pengaksesan disk yang dilakukan untuk membaca dapat ditingkatkan dua kali lipat. Hal ini
dikarenakan setengah dari permintaan membaca dapat dikirim ke masing-masing disk. Cara lain yang
digunakan adalah paritas blok interleaved, yaitu menyimpan blok-blok data pada beberapa disk dan blok
paritas pada sebuah (atau sebagian kecil) disk.
2. Paralelisme
Peningkatan kinerja dapat dilakukan dengan mengakses banyak disk secara paralel. Pada disk mirroring, di
mana pengaksesan disk untuk membaca data menjadi dua kali lipat karena permintaan dapat dilakukan pada
kedua disk, tetapi kecepatan transfer data pada setiap disk tetap sama. Kita dapat meningkatkan kecepatan
transfer ini dengan cara melakukan data striping ke dalam beberapa disk. Data striping, yaitu menggunakan
sekelompok disk sebagai satu kesatuan unit penyimpanan, menyimpan bit data dari setiap byte secara
terpisah pada beberapa disk (paralel).
Level RAID
RAID terdiri dapat dibagi menjadi enam level yang berbeda:
1. RAID level 0
RAID level 0 menggunakan kumpulan disk dengan striping pada level blok, tanpa redundansi. Jadi hanya
menyimpan melakukan striping blok data ke dalam beberapa disk. Level ini sebenarnya tidak termasuk ke
dalam kelompok RAID karena tidak menggunakan redundansi untuk peningkatan kinerjanya.
2. RAID level 1
RAID level 1 ini merupakan disk mirroring, menduplikat setiap disk. Cara ini dapat meningkatkan kinerja
disk, tetapi jumlah disk yang dibutuhkan menjadi dua kali lipat, sehingga biayanya menjadi sangat mahal.
3. RAID level 2
RAID level 2 ini merupakan pengorganisasian dengan error-correcting-code (ECC). Seperti pada memori di
mana pendeteksian terjadinya error menggunakan paritas bit. Setiap byte data mempunyai sebuah paritas bit
yang bersesuaian yang merepresentasikan jumlah bit di dalam byte data tersebut di mana paritas bit=0 jika
jumlah bit genap atau paritas=1 jika ganjil. Jadi, jika salah satu bit pada data berubah, paritas berubah dan
tidak sesuai dengan paritas bit yang tersimpan. Dengan demikian, apabila terjadi kegagalan pada salah satu
disk, data dapat dibentuk kembali dengan membaca error-correction bit pada disk lain.
4. RAID level 3
RAID level 3 merupakan pengorganisasian dengan paritas bit interleaved. Pengorganisasian ini hampir
sama dengan RAID level 2, perbedaannya adalah RAID level 3 ini hanya memerlukan sebuah disk
redundan, berapapun jumlah kumpulan disk-nya. Jadi tidak menggunakan ECC, melainkan hanya
menggunakan sebuah bit paritas untuk sekumpulan bit yang mempunyai posisi yang sama pada setiap disk
yang berisi data. Selain itu juga menggunakan data striping dan mengakses disk-disk secara paralel.
5. RAID level 4
271Bab 7. I/O
RAID level 4 merupakan pengorganisasian dengan paritas blok interleaved, yaitu menggunakan striping
data pada level blok, menyimpan sebuah paritas blok pada sebuah disk yang terpisah untuk setiap blok data
pada disk-disk lain yang bersesuaian. Jika sebuah disk gagal, blok paritas tersebut dapat digunakan untuk
membentuk kembali blok-blok data pada disk yang gagal tadi. Kecepatan transfer untuk membaca data
tinggi, karena setiap disk-disk data dapat diakses secara paralel. Demikian juga dengan penulisan, karena
disk data dan paritas dapat ditulis secara paralel.
6. RAID level 5
RAID level 5 merupakan pengorganisasian dengan paritas blok interleaved tersebar. Data dan paritas
disebar pada semua disk termasuk sebuah disk tambahan. Pada setiap blok, salah satu dari disk menyimpan
paritas dan disk yang lainnya menyimpan data. Sebagai contoh, jika terdapat kumpulan dari 5 disk, paritas
blok ke n akan disimpan pada disk (n mod 5) + 1; blok ke n dari empat disk yang lain menyimpan data yang
sebenarnya dari blok tersebut. Sebuah paritas blok tidak menyimpan paritas untuk blok data pada disk yang
sama, karena kegagalan sebuah disk akan menyebabkan data hilang bersama dengan paritasnya dan data
tersebut tidak dapat diperbaiki. Penyebaran paritas pada setiap disk ini menghindari penggunaan berlebihan
dari sebuah paritas disk seperti pada RAID level 4.
7. RAID level 6
RAID level 6 disebut juga redundansi P+Q, seperti RAID level 5, tetapi menyimpan informasi redundan
tambahan untuk mengantisipasi kegagalan dari beberapa disk sekaligus. RAID level 6 melakukan dua
perhitungan paritas yang berbeda, kemudian disimpan di dalam blok-blok yang terpisah pada disk-disk yang
berbeda. Jadi, jika disk data yang digunakan sebanyak n buah disk, maka jumlah disk yang dibutuhkan
untuk RAID level 6 ini adalah n+2 disk. Keuntungan dari RAID level 6 ini adalah kehandalan data yang
sangat tinggi, karena untuk menyebabkan data hilang, kegagalan harus terjadi pada tiga buah disk dalam
interval rata-rata untuk perbaikan data Mean Time To Repair (MTTR). Kerugiannya yaitu penalti waktu
pada saat penulisan data, karena setiap penulisan yang dilakukan akan mempengaruhi dua buah paritas blok.
8. RAID level 0+1 dan 1+0
RAID level 0+1 dan 1+0 ini merupakan kombinasi dari RAID level 0 dan 1. RAID level 0 memiliki kinerja
yang baik, sedangkan RAID level 1 memiliki kehandalan. Namun, dalam kenyataannya kedua hal ini sama
pentingnya. Dalam RAID 0+1, sekumpulan disk di-strip, kemudian strip tersebut di-mirror ke disk-disk
yang lain, menghasilkan strip- strip data yang sama. Kombinasi lainnya yaitu RAID 1+0, di mana disk-disk
di-mirror secara berpasangan, dan kemudian hasil pasangan mirrornya di-strip. RAID 1+0 ini mempunyai
keuntungan lebih dibandingkan dengan RAID 0+1. Sebagai contoh, jika sebuah disk gagal pada RAID 0+1,
seluruh strip-nya tidak dapat diakses, hanya sebagian strip saja yang dapat diakses, sedangkan pada RAID
1+0, disk yang gagal tersebut tidak dapat diakses, tetapi pasangan mirror-nya masih dapat diakses, yaitu
disk-disk selain dari disk yang gagal.
272Bab 7. I/O
Gambar 7-15. Level RAID
Gambar ini diadaptasi dari [Silberschatz2002, halaman 507].
Gambar 7-16. RAID 0 + 1 dan 1 + 0
Gambar ini diadaptasi dari [Silberschatz2002, halaman 511].
7.5.4. Kaitan Disk
Host-Attached Storage
Host-Attached Storage merupakan sistem penyimpanan yang terhubung secara langsung dengan komputer
tersebut. Host-Attached Storage terhubung secara langsung dengan komputer menggunakan interface bus dan
IDE.
Dalam implementasinya dalam jaringan, Host-Attached Storage dapat juga disebut dengan Server-Attached
Storage karena sistem penyimpanannya terdapat didalam server itu.
273Bab 7. I/O
Storage-Area Network dan Network-Attached
Storage
1. Network-Attached Storage device
Network-attached storage (NAS) adalah suatu konsep penyimpanan bersama pada suatu jaringan. NAS
berkomunikasi menggunakan Network File Sistem (NFS) untuk UNIX, Common Internet File System
(CIFS) untuk Microsoft Windows, FTP, http, dan protokol networking lainnya. NAS membawa kebebasan
platform dan meningkatkan kinerja bagi suatu jaringan, seolah-olah adalah suatu dipasang peralatan. NAS
device biasanya merupakan dedicated single-purpose machine. NAS dimaksudkan untuk berdiri sendiri dan
melayani kebutuhan penyimpanan yang spesifik dengan sistem operasi mereka dan perangkat
keras/perangkat lunak yang terkait. NAS mirip dengan alat plug-and-play, akan tetapi manfaatnya adalah
untuk melayani kebutuhan penyimpanan. NAS cocok digunakan untuk melayani network yang memiliki
banyak client, server, dan operasi yang mungkin menangani task seperti web cache dan proxy, firewall,
audio-video streeming, tape backup, dan penyimpanan data dengan file serving.
2. Network-Attached Storage Versus Storage Area Networks
NAS dan Storage-Area Network (SAN) memiliki sejumlah atribut umum. Kedua-Duanya menyediakan
konsolidasi optimal, penyimpanan data yang dipusatkan, dan akses berkas yang efisien. Kedua-Duanya
mengijinkan untuk berbagi storage antar host, mendukung berbagai sistem operasi yang berbeda pada waktu
yang sama, dan memisahkan storage dari server aplikasi. Sebagai tambahan, kedua- duanya dapat
menyediakan ketersediaan data yang tinggi dan dapat memastikan integritas dengan banyak komponen dan
Redundant Arrays of Independent Disk (RAID). Banyak yang berpendapat bahwa NAS adalah saingan dari
SAN, akan tetapi keduanya dalam kenyataannya dapat bekerja dengan cukup baik ketika digunakan
bersama.
NAS dan SAN menghadirkan dua teknologi penyimpanan yang berbeda dan menghubungkan jaringan pada
tempat yang sangat berbeda. NAS berada diantar server aplikasi dan sistem berkas. SAN berada diantar
sistem berkas dan mendasari physical storage. SAN merupaka jaringan itu sendiri, menghubungkan semua
storage dan semua server. Karena pertimbangan ini, masing-masing mendukung kebutuhan penyimpanan
dari area bisnis yang berbeda.
3. NAS: Memikirkan Pengguna Jaringan
NAS adalah network-centric. Biasanya digunakan Untuk konsolidasi penyimpanan client pada suatu LAN,
NAS lebih disukai dalam solusi kapasitas penyimpanan untuk memungkinkan client untuk mengakses
berkas dengan cepat dan secara langsung. Hal ini menghapuskan bottleneck user ketika mengakses berkas
dari suatu general-purpose server.
NAS menyediakan keamanan dan melaksanakan semua berkas dan storage service melalui protokol
standard network, menggunakan TCP/IP untuk transfer data, Ethernet Dan Gigabit Ethernet untuk media
akses, dan CIFS, http, dan NFS untuk remote file service. Sebagai tambahan, NAS dapat melayani UNIX
dan Microsoft Windows user untuk berbagi data yang sama antar arsitektur yang berbeda. Untuk user client,
NAS adalah teknologi pilihan untuk menyediakan penyimpanan dengan akses unen-cumbered ke berkas.
Walaupun NAS menukar kinerja untuk manajebilitas dan kesederhanaan, bukan merupakan lazy technology.
Gigabit Ethernet mengijinkan NAS untuk memilih kinerja yang tinggi dan latensi yang rendah, sehingga
mungkin untuk mendukung banyak sekali client melalui suatu antarmuka tunggal. Banyak NAS devices
yang mendukung berbagai antarmuka dan dapat mendukung berbagai jaringan pada waktu yang sama.
274Bab 7. I/O
4. SAN: Memikirkan Back-End/Kebutuhan Ruang Penyimpanan Komputer
SAN adalah data-centric, jaringan khusus penyimpanan data. Tidak sama dengan NAS, SAN terpisah dari
traditional LAN atau messaging network. Oleh karena itu, SAN dapat menghindari lalu lintar jaringan
standar, yang sering menghambat kinerja. SAN dengan fibre channel lebih meningkatkan kinerja dan
pengurangan latency dengan menggabungkan keuntungan I/O channel dengan suatu jaringan dedicated yang
berbeda.
SAN menggunakan gateway, switch, dan router untuk memudahkan pergerakan data antar sarana
penyimpanan dan server yang heterogen. Ini mengijinkan untuk menghubungkan kedua jaringan dan potensi
untuk semi-remote storage (memungkinkan hingga jarak 10km) ke storage management effort. Arsitektur
SAN optimal untuk memindahkan storage block. Di dalam ruang komputer, SAN adalah pilihan yang lebih
disukai untuk menujukan isu bandwidth dan data aksesibilitas seperti halnya untuk menangani konsolidasi.
Dalam kaitan dengan teknologi dan tujuan mereka yang berbeda,salah satu maupun kedua-duanya dapat
digunakan untuk kebutuhan penyimpanan. Dalam kenyataannya, batas antara keduanya samar sedikit
menurut Kelompok Penilai, Analis Inc.. Sebagai contoh, dalam aplikasinya anda boleh memilih untuk
mem-backup NAS device anda dengan SAN, atau menyertakan NAS device secara langsung ke SAN untuk
mengijinkan non-bottlenecked access segera ke storage. (Sumber: An Overview of Network-Attached
Storage, ¨ 2000, Evaluator Group, Inc.)
Implementasi Penyimpanan Stabil
Pada bagian sebelumnya, kita sudah membicarakan mengenai write-ahead log, yang membutuhkan ketersediaan
sebuah storage yang stabil. Berdasarkan definisi, informasi yang berada di dalam stable storage tidak akan
pernah hilang. Untuk mengimplementasikan storage seperti itu, kita perlu mereplikasi informasi yang
dibutuhkan ke banyak peralatan storage (biasanya disk-disk) dengan failure modes yang independen. Kita perlu
mengkoordinasikan penulisan update-update dalam sebuah cara yang menjamin bila terjadi kegagalan selagi
meng-update tidak akan membuat semua kopi yang ada menjadi rusak, dan bila sedang recover dari sebuah
kegagalan, kita dapat memaksa semua kopi yang ada ke dalam keadaan yang bernilai benar dan konsisten,
bahkan bila ada kegagalan lain yang terjadi ketika sedang recovery. Untuk selanjutnya, kita akan membahas
bagaimana kita dapat mencapai kebutuhan kita.
Sebuah disk write menyebabkan satu dari tiga kemungkinan:
1. successful completion
2. partial failure
3. total failure
Kita memerlukan, kapan pun sebuah kegagalan terjadi ketika sedang menulis ke sebuah blok, sistem akan
mendeteksinya dan memanggil sebuah prosedur recovery untuk me-restore blok tersebut ke sebuah keadaan
yang konsisten. Untuk melakukan itu, sistem harus menangani dua blok physical untuk setiap blok logical.
Sebuah operasi output dieksekusi seperti berikut:
1. Tulis informasinya ke blok physical yang pertama.
2. Ketika penulisan pertama berhasil, tulis informasi yang sama ke blok physical yang kedua.
3. Operasi dikatakan berhasil hanya jika penulisan kedua berhasil.
Pada saat perbaikan dari sebuah kegagalan, setiap pasang blok physical diperiksa. Jika keduanya sama dan tidak
terdeteksi adanya kesalahan, tetapi berbeda dalam isi, maka kita mengganti isi dari blok yang pertama dengan isi
275Bab 7. I/O
dari blok yang kedua. Prosedur recovery seperti ini memastikan bahwa sebuah penulisan ke stable storage akan
sukses atau tidak ada perubahan sama sekali.
Kita dapat menambah fungsi prosedur ini dengan mudah untuk memboleh kan penggunaan dari kopi yang
banyak dari setiap blok pada stable storage. Meski pun sejumlah besar kopi semakin mengurangi kemungkin an
untuk terjadinya sebuah kegagalan, maka biasanya wajar untuk men simulasi stable storage hanya dengan dua
kopi. Data di dalam stable storage dijamin aman kecuali sebuah kegagalan menghancurkan semua kopi yang ada.
7.6. Perangkat Penyimpanan Tersier
Karakteristik dari perangkat penyimpanan tersier pada dasarnya adalah menggunakan removable media yang
tentu saja berdampak pada biaya produksi yang lebih murah. Sebagai contoh: 1 VCR dengan banyak kaset akan
lebih murah daripada 1 VCR yang hanya dapat memainkan satu kaset saja.
7.6.1. Macam-macam Struktur Penyimpanan Tersier
Floppy Disk
Menurut Silberschatz et. al. [Silberschatz2002], floppy disk adalah sebuah media penyimpanan yang terbuat dari
cakram fleksibel tipis yang dilapisi oleh bahan magnetik dan ditutupi oleh plastik.
Ciri-ciri floppy disk:
1. Memiliki kapasitas kecil (1-2 Mb).
2. Kemampuan aksesnya hampir secepat hard disk.
3. Lebih rentan terhadap gesekan di permukaan magnetiknya.
Prinsip ini juga digunakan oleh disk magnetik yang memiliki kapasitas sebesar 1 GB yang memiliki kecepatan
akses yang hampir sama dengan hard disk.
Magneto-optic disk
Dalam magneto-optic disk, data ditulis di atas sebuah piringan keras yang dilapisi oleh suatu bahan magnetik
lalu dilapisi pelindung untuk melindungi head dari disk tsb. Dalam suhu ruangan, medan magnet yang ada tidak
dapat digunakan untuk menyimpan bit data sehingga harus ditembakkan laser dari disk head. Tempat yang
terkena sinar laser ini dapat digunakan untuk menyimpan bit.
Head membaca data yang telah disimpan dengan bantuan Kerr Effect. Efek ini timbul karena head dari
magneto-optic disk terlalu jauh dari permukaan disk sehingga tidak dapat dibaca dengan cara yang sama yang
diterapkan ke hard disk. Oleh karena itu digunakan Kerr Effect.
Menurut Silberschatz et. al. [Silberschatz2002], prinsip dari Kerr Effect adalah ketika suatu sinar laser
dipantulkan dari sebuah titik magnetik, polarisasinya akan diputar searah atau berlawanan arah dengan arah
jarum jam, tergantung dari orientasi medan magnetiknya. Rotasi inilah yang dibaca oleh head sebagai sebuah bit.
276Bab 7. I/O
Optical disk
Disk tipe ini tidak menggunakan magnetik melainkan suatu bahan yang dapat dibelokkan oleh sinar laser.
Setelah dimodifikasi dengan dengan sinar laser pada disk akan terdapat spot yang gelap atau terang. Spot ini
menyimpan satu bit.
Teknologi optical-disk dapat dibagi menjadi:
1. Phase-change disk, dilapisi oleh material yang dapat membeku menjadi crystalline atau amorphous state.
Kedua state ini memantulkan sinar laser dengan kekuatan yang berbeda. Drive menggunakan sinar laser
pada kekuatan yang berbeda. Kekuatan rendah digunakan untuk membaca data yang telah ditulis, kekuatan
medium untuk menghapus data dengan cara melelehkan permukaannya dan kemudian dibekukan lagi ke
dalam keadaan crystalline. Kekuatan tinggi digunakan untuk melelehkan disk-nya ke dalam amorphous
state sehingga dapat digunakan untuk menulis data.
2. Dye-polimer disk, merekam data dengan membuat bump. Disk dilapisi plastik yang mengandung dye yang
dapat menyerap sinar laser. Sinar laser membakar spot yang kecil sehingga spot membengkak dan
membentuk bump. Sinar laser juga dapat menghangatkan bump sehingga spot menjadi lunak dan bump
menjadi datar.
Write Once Read Many-times (WORM)
WORM terbentuk dari sebuah aluminium film yang dilapisi oleh plastik di bagian atas dan bagian bawahnya.
Untuk menulis data, pada media ini digunakan sinar laser untuk membuat lubang pada aluminiumnya sehingga
disk ini hanya dapat ditulis sekali.
Ciri-ciri WORM Disk:
1. Hanya dapat ditulis sekali.
2. Data lebih tahan lama dan dapat dipercaya.
WORM ini dianggap tahan banting dan paling terpercaya karena lapisan metalnya dilindungi dengan aman oleh
lapisan plastiknya dan juga datanya tidak dapat dirusak dengan pengaruh medan magnet.
Kebanyakan removable-disk lebih lambat dari non-removable-disk karena kinerja mereka juga dipengaruhi oleh
waktu yang dibutuhkan untuk menulis data. Waktu ini dipengaruhi oleh waktu rotasi, dan juga kadang-kadang
seek time.
Tapes
Sebuah tape dapat menyimpan data lebih banyak dari optical maupun magnetic disk cartridge, harga cartridge
dari tape drive lebih murah namun memiliki random access yang lebih lambat karena membutuhkan operasi
fast-forward dan rewind yang kadang-kadang dapat membutuhkan waktu beberapa detik bahkan menit.
Tape ini biasa digunakan oleh supercomputer center untuk menyimpan data yang besar dan tidak membutuhkan
random access yang cepat.
Dalam skala yang besar biasanya digunakan Robotic Tape Changers yaitu sebuah alat yang dipakai untuk
mengganti tape dalam sebuah library.
Stacker menyimpan beberapa tape, sedangkan silo untuk menyimpan ribuan tape.
277Bab 7. I/O
7.6.2. Future Technology
Penyimpanan Holographic
Teknologi ini digunakan untuk menyimpan foto hologram di media khusus. Misalkan pada foto hitam putih
digunakan array 2 dimensi yang merepresentasikan warna hitam dan putih (bit 0 dan 1) maka di teknologi
holographic ini satu pixel gambar dapat menyimpan jutaan bit sehingga gambarnya menjadi tajam dan pixelnya
ditransfer menggunakan sinar laser sehingga transfer rate-nya tinggi.
Microelectronic Mechanical Systems (MEMS)
Teknologi yang bertujuan mengembangkan sebuah media penyimpanan yang bersifat non-volatile dengan
kecepatan yang lebih cepat dan lebih murah dari semiconductor DRAM.
7.6.3. Aplikasi Antarmuka
Sistem operasi tidak menangani tapes sebagaimana sistem operasi menangani removable disk maupun fixed disk.
Sistem operasi biasanya menampilkan tape sebagai media penyimpanan secara keseluruhan.
Suatu aplikasi tidak membuka suatu berkas pada tape, melainkan membuka tape drive secara keseluruhan
sebagai raw device.
Biasanya tape drive disediakan untuk penggunaan aplikasi tersebut secara eksklusif, sampai aplikasi tersebut
berakhir atau aplikasi tersebut menutup tape device. Eksklusivitas ini masuk akal, karena random access pada
tape dapat memakan waktu yang lama, sehingga membiarkan beberapa aplikasi melakukan random access pada
tape dapat menyebabkan thrashing.
Sistem operasi tidak menyediakan sistem berkas sehingga aplikasi harus memutuskan bagaimana cara
menggunakan blok-blok array.
Tiap aplikasi membuat peraturannya masing-masing tentang bagaimana mengatur tape supaya suatu tape yang
penuh terisi dengan data hanya dapat digunakan oleh program yang membuatnya.
Tape drive mempunyai set operasi-operasi dasar yang berbeda dengan disk drive. Sebagai pengganti operasi seek
(sebagaimana yang digunakan pada disk drive), tape drive menggunakan operasi locate. Operasi locate ini lebih
akurat dibandingkan dengan operasi seek karena operasi ini memposisikan tape ke logical block yang spesifik.
Sebagian besar tape drive mempunyai operasi read position yang berfungsi memberitahu posisi tape head
dengan menunjukkan nomor logical blok. Selain itu banyak juga tape drive yang menyediakan operasi space
yang berfungsi memindahkan posisi tape head. Misalnya operasi space akan memindahkan posisi tape head
sejauh dua blok ke belakang.
Untuk sebagian jenis tape drive, menulis pada blok mempunyai efek samping menghapus apapun yang berada
pada posisi sesudah posisi penulisan. Hal ini menunjukkan bahwa tape drive adalah append-only devices,
maksudnya adalah apabila kita meng-update blok yang ada di tengah berarti kita akan menghapus semua data
yang terletak sesudah blok tersebut. Untuk mencegah hal ini terjadi maka digunakan tanda EOT (end-of-tape)
yang diletakkan pada posisi sesudah posisi blok yang ditulis. Drive menolak untuk mencari lokasi sesudah tanda
EOT, tetapi adalah suatu hal yang penting untuk mencari lokasi EOT kemudian mulai menulis menulis data.
Cara ini menyebabkan tanda EOT yang lama tertimpa, lalu tanda yang baru diletakkan pada posisi akhir dari
blok yang baru saja ditulis.
278Bab 7. I/O
Penamaan Berkas
Penamaan berkas pada removable disk cukup sulit terutama pada saat kita mau menulis data pada removable
cartridge di suatu komputer, kemudian menggunakan cartridge tersebut di komputer yang lain. Jika kedua
komputer memiliki tipe mesin yang sama dan memiliki jenis removable drive yang sama, maka satu- satunya
kesulitan yang ada adalah bagaimana cara mengetahui isi dan data layout pada cartridge. Namun jika tipe kedua
mesin maupun drive berbeda, banyak masalah dapat muncul. Sekalipun kedua drive-nya kompatibel, komputer
yang berbeda dapat menyimpan bytes dengan urutan yang berbeda, dan dapat menggunakan encoding yang
berbeda untuk binary number maupun huruf.
Pada umumnya sistem operasi sekarang membiarkan masalah name-space tidak terselesaikan untuk removable
media, dan bergantung kepada aplikasi dan user untuk memecahkan bagaimana cara mengakses dan
menerjemahkan data. Untungnya, beberapa jenis removable media sudah distandarkan dengan sangat baik
sehingga semua komputer dapat menggunakannya dengan cara yang sama, contoh: CD.
Managemen Penyimpanan Hierarkis
Robotic jukebox memungkinkan komputer untuk mengganti removable cartridge di tape atau disk drive tanpa
bantuan manusia. Dua penggunaan utama dari teknologi ini adalah untuk kepentingan backup dan sistem
penyimpanan hirarkis. Sistem penyimpanan hirarkis ini sendiri melingkupi hirarkis penyimpanan yang
merupakan cakupan lebih luas daripada memori primer dan penyimpanan sekunder untuk membentuk
penyimpanan tersier. Penyimpanan tersier biasanya diimplementasikan sebagai jukebox dari tapes atau
removable media.
Walau pun penyimpanan tersier dapat mempergunakan sistem memori virtual, cara ini tidak baik. Karena
pengambilan data dari jukebox membutuhkan waktu yang agak lama. Selain itu diperlukan waktu yang agak
lama untuk demand paging dan untuk bentuk lain dari penggunaan virtual-memory.
Berkas yang kapasitasnya kecil dan sering digunakan dibiarkan berada di disk magnetik, sementara berkas yang
kapasitasnya besar, sudah lama, dan tidak aktif digunakan akan diarsipkan di jukebox.
Pada beberapa sistem file-archiving, directory entry untuk berkas selalu ada, tetapi isi berkas tidak lagi berada di
penyimpanan sekunder. Jika suatu aplikasi mencoba membuka berkas, pemanggilan open system akan ditunda
sampai isi berkas dikirim dari penyimpanan tersier. Ketika isi berkas sudah dikirimkan dari disk magnetik,
operasi open mengembalikan kontrol kepada aplikasi.
Managemen penyimpanan hierarkis biasanya ditemukan pada pusat supercomputing dan instalasi besar lainnya
yang mempunyai data yang besar.
7.6.4. Masalah Kinerja
Tiga aspek utama dari kinerja penyimpanan tersier berdasarkan Silberschatz et. al. [Silberschatz2002]:
1. Kecepatan
Kecepatan dari penyimpanan tersier memiliki dua aspek: bandwidth dan latency. Menurut Silberschatz et.
al. [Silberschatz2002], Sustained bandwidth adalah rata-rata tingkat data pada proses transfer, yaitu jumlah
byte dibagi dengan waktu transfer. Effective bandwidth menghitung rata-rata pada seluruh waktu I/O,
termasuk waktu untuk seek atau locate. Istilah bandwidth dari suatu drive sebenarnya adalah sustained
bandwidth.
2. Kehandalan
279Bab 7. I/O
Removable magnetic disk tidak begitu dapat diandalkan dibandingkan dengan fixed hard-disk karena
cartridge lebih rentan terhadap lingkungan yang berbahaya seperti debu, perubahan besar pada temperatur
dan kelembaban, dan gangguan mekanis seperti tekukan. Optical disks dianggap sangat dapat diandalkan
karena lapisan yang menyimpan bit dilindungi oleh plastik transparan atau lapisan kaca.
3. Harga
7.7. Rangkuman
7.7.1. I/O
Dasar dari elemen perangkat keras yang terkandung pada I/O adalah bus, device controller, dan I/O itu sendiri.
Kinerja kerja pada data yang bergerak antara device dan memori utama di jalankan oleh CPU, di program oleh
I/O atau mungkin DMA controller. Modul kernel yang mengatur device adalah device driver. System-call
interface yang disediakan aplikasi dirancang untuk menghandle beberapa dasar kategori dari perangkat keras,
termasuk block devices, character devices, memory mapped files, network sockets, dan programmed interval
timers.
Subsistem I/O kernel menyediakan beberapa servis. Diantaranya adalah I/O schedulling, buffering, spooling,
error handling, dan device reservation. Salah satu servis dinamakan translation, untuk membuat koneksi antara
perangkat keras dan nama file yang digunakan oleh aplikasi.
I/O system calls banyak dipakai oleh CPU, dikarenakan oleh banyaknya lapisan dari perangkat lunak antara
physical device dan aplikasi. Lapisan ini mengimplikasikan overhead dari context switching untuk melewati
kernel’s protection boundary, dari sinyal dan interrupt handling untuk melayani I/O devices.
7.7.2. Disk
Disk drives adalah major secondary-storage I/O device pada kebanyakan komputer. Permintaan untuk disk I/O
digenerate oleh sistem file dan sistem virtual memori. Setiap permintaan menspesifikasikan alamat pada disk
untuk dapat direferensikan pada form di logical block number.
Algoritma disk schedulling dapat meningkatkan efektifitas bandwidth, average response time, dan variance
response time. Algoritma seperti SSTF, SCAN, C-SCAN, LOOK dan C-LOOK didesain untuk membuat
perkembangan dengan menyusun ulang antrian disk untuk meningkatkan total waktu pencarian.
Performa dapat rusak karena external fragmentation. Satu cara untuk menyusun ulang disk untuk mengurangi
fragmentasi adalah untuk back up dan restore seluruh disk atau partisi. Blok-blok dibaca dari lokasi yang
tersebar, me-restore tulisan mereka secara berbeda. Beberapa sistem mempunyai kemampuan untuk men-scan
sistem file untuk mengidentifikasi file terfragmentasi, lalu menggerakan blok-blok mengelilingi untuk
meningkatkan fragmentasi. Mendefragmentasi file yang sudah di fragmentasi (tetapi hasilnya kurang optimal)
dapat secara signifikan meningkatkan performa, tetapi sistem ini secara umum kurang berguna selama proses
defragmentasi sedang berjalan. Sistem operasi me-manage blok-blok pada disk. Pertama, disk baru di format
secara low level untuk menciptakan sektor pada perangkat keras yang masih belum digunakan. Lalu, disk dapat
di partisi dan sistem file diciptakan, dan blok-blok boot dapat dialokasikan. Terakhir jika ada blok yang
terkorupsi, sistem harus mempunyai cara untuk me-lock out blok tersebut, atau menggantikannya dengan
cadangan.
280Bab 7. I/O
Tertiary storage di bangun dari disk dan tape drives yang menggunakan media yang dapat dipindahkan. Contoh
dari tertiary storage adalah magnetic tape, removable magnetic, dan magneto-optic disk.
Untuk removable disk, sistem operasi secara general menyediakan servis penuh dari sistem file interface,
termasuk space management dan request-queue schedulling . Untuk tape, sistem operasi secara general hanya
menyediakan interface yang baru. Banyak sistem operasi yang tidak memiliki built-in support untuk jukeboxes.
Jukebox support dapat disediakan oleh device driver.
7.8. Latihan
1. Gambarkan diagram dari Interrupt Driven I/O Cycle!
2. Sebutkan langkah-langkah dari transfer DMA!
3. Apakah perbedaan dari pooling dan interupsi?
4. Apa hubungan arsitektur kernel yang di-thread dengan implementasi interupsi?
5. Mengapa antarmuka dibutuhkan pada aplikasi I/O?
6. Apa tujuan adanya device driver? Berikan contoh keuntungan pengimplementasiannya!
7. Apakah yang dimaksud dengan proses pooling? Jelaskan!
8. Jelaskan dengan singkat mengenai penjadualan I/O?
9. Apakah kegunaan Streams pada Sistem V UNIX?
10. Andaikan suatu disk memiliki 100 silinder (silinder 0 - silinder 99), posisi head sekarang di silinder 25,
sebelumnya head melayani silinder 13. Berikut ini adalah antrian silinder yang meminta layanan secara
FIFO: 86, 37, 12, 90, 46, 77, 24, 48, 86, 65.
Hitung total pergerakan head untuk memenuhi permintaan tersebut dimulai dari posisi head sekarang,
dengan algoritma:
a. FCFS
b. SSTF
c. SCAN
d. LOOK
e. C-SCAN
f. C-LOOK
11. Jelaskan perbedaan, persamaan serta kelebihan dan kekurangan dari 2 perbandingan algoritma berikut:
a. FCFS vs SSTF
b. SCAN vs C-SCAN
c. LOOK vs C-LOOK
d. SSTF vs SCAN
12. Jelaskan siklus hidup dari permintaan pembacaan blok!
13. Bagaimana cara meningkatkan efisiensi performa I/O?
281Bab 7. I/O
14. Apa keuntungan penggunaan pemetaan pada disk?
15. Bagaimana cara disk SCSI memulihkan kondisi blok yang rusak?
16. Bagaimana penanganan ruang swap pada disk?
17. Bagaimanakah suatu operasi output dieksekusi?
18. Sebutkan kelebihan tertiary storage structure?
Daftar Pustaka
[Silberschatz2002] Abraham Silberschatz, Peter Galvin, dan Greg Gagne, 2002, Applied Operating Systems:
Sixth Edition, Edisi Keenam, John Wiley & Sons.
[Stallings2001] William Stallings, 2001, Operating Systems: Internal and Design Principles: Fourth Edition,
Edisi Keempat, Prentice-Hall International.
[Tanenbaum1992] Andrew Tanenbaum, 1992, Modern Operating Systems: First Edition, Edisi Pertama,
Prentice-Hall.
282Bab 8. Studi Kasus: GNU/Linux
8.1. Perangkat Lunak Bebas
8.1.1. Konsep Kebebasan
Salah seorang tokoh perangkat lunak bebas pernah mengatakan kata bebas bukan ditujukan pada harga, tapi
kebebasan. Beliau adalah Richard Stallman, pemimpin Free Software Foundation, perintis proyek GNU (GNU’s
Not Unix, GNU Bukan Unix). Bisa dikatakan bahwa Richard Stallman dan Proyek GNU merupakan salah satu
ikon dalam pengembangan perangkat lunak bebas itu sendiri. Proyek GNU mulai dirintis pada tahun 1980-an
dipicu oleh maraknya perangkat lunak berpemilik (perangkat lunak berlisensi). Para pengembang dan penjual
perangkat lunak berpemilik bersikeras bahwa penggunaan perangkat lunak tanpa lisensi merupakan suatu bentuk
pelanggaran Hak atas Kekayaan Intelektual (Intellectual Right) yang dikategorisasikan sebagai tidakan kriminal.
Konsep yang ditekankan oleh pihak pengembang diatas tidak diterima oleh semua orang, salah satunya adalah
Richard Stallman yang berpendapat bahwa perangkat lunak merupakan milik masyarakat (public) sehingga
diperbolehkan untuk dipakai, dimodifikasi serta disebarluaskan secara bebas. Pengembangan perangkat lunak
bebas memiliki tujuan agar setiap orang dapat mendapatkan manfaat dari perangkat lunak secara bebas sehingga
setiap orang dapat menjalankan, menggandakan, menyebarluaskan, mempelajari, mengubah dan meningkatkan
kinerja perangkat lunak. Seperti disebutkan di atas kata bebas pada perangkat lunak bebas sering diartikan
sebagai gratis (free), arti sesungguhnya bebas pada perangkat lunak bebas lebih merupakan kebebasan untuk
mempergunakan perangkat lunak, melakukan penyalinan, dan perubahan pada kode sumber. Arti bebas yang
salah, telah menimbulkan persepsi masyarakat bahwa perangkat lunak bebas merupakan perangkat lunak yang
gratis. Perangkat lunak bebas ialah perihal kebebasan, bukan harga. Konsep kebebasan yang dapat diambil dari
kata bebas pada perangkat lunak bebas adalah seperti kebebasan berbicara bukan seperti bir gratis. Maksud dari
bebas seperti kebebasan berbicara adalah kebebasan untuk menggunakan, menyalin, menyebarluaskan,
mempelajari, mengubah, dan meningkatkan kinerja perangkat lunak. Suatu perangkat lunak dapat dimasukkan
dalam kategori perangkat lunak bebas bila setiap orang memiliki kebebasan tersebut. Hal ini berarti, setiap
pengguna perangkat lunak bebas dapat meminjamkan perangkat lunak yang dimilikinya kepada orang lain untuk
dipergunakan tanpa perlu melanggar hukum dan disebut pembajak. Kebebasan yang diberikan perangkat lunak
bebas dijamin oleh copyleft, suatu cara yang dijamin oleh hukum untuk melindungi kebebasan para pengguna
perangkat lunak bebas. Dengan adanya copyleft maka suatu perangkat lunak bebas beserta hasil perubahan dari
kode sumbernya akan selalu menjadi perangkat lunak bebas. Kebebasan yang diberikan melalui perlindungan
copyleft inilah yang membuat suatu program dapat menjadi perangkat lunak bebas. Keuntungan yang diperoleh
dari penggunaan perangkat lunak bebas adalah karena serbaguna dan efektif dalam keanekaragaman jenis
aplikasi. Dengan pemberian source code-nya, perangkat lunak bebas dapat disesuaikan secara khusus untuk
kebutuhan pemakai. Sesuatu yang tidak mudah untuk terselesaikan dengan perangkat lunak berpemilik. Selain
itu, perangkat lunak bebas didukung oleh milis-milis pengguna yang dapat menjawab pertanyaan yang timbul
karena permasalahan pada penggunaan perangkat lunak bebas.
8.1.2. Open source
Open source atau disebut juga perangkat lunak bebas ialah perangkat lunak yang mengizinkan siapa pun untuk
menggunakan, menyalin, dan mendistribusikan, baik dimodifikasi atau pun tidak, secara gratis atau pun dengan
biaya. Perlu ditekankan, bahwa source code dari program harus tersedia. “Jika tidak ada kode program, berarti
bukan perangkat lunak bebas.” Yang tersebut di atas merupakan definisi sederhananya; lihat juga definisi
lengkapnya. Terdapat berbagai cara untuk membuat suatu program bebas -- banyak pertanyaan rinci, yang dapat
ditentukan dalam banyak cara dan masih menjadikan program tersebut bebas. Beberapa kemungkinan variasi
akan dijelaskan di bawah ini. Perangkat lunak bebas menyangkut masalah kebebasan, bukan harga. Tapi
283Bab 8. Studi Kasus: GNU/Linux
beberapa perusahaan perangkat lunak berpemilik terkadang menggunakan istilah perangkat lunak bebas untuk
menunjukkan harga. Terkadang maksud mereka ialah anda dapat memperoleh salinan biner tanpa biaya;
terkadang maksud mereka ialah suatu salinan disertakan dalam komputer yang anda beli. Ini tidak ada
hubungannya sama sekali dengan apa yang di maksud dengan perangkat lunak bebas pada proyek GNU. Karena
hal ini dapat membingungkan, ketika sebuah perusahaan perangkat lunak menyatakan bahwa produknya adalah
perangkat lunak bebas, selalu periksa ketentuan distribusinya untuk melihat apakah pengguna memiliki
kebebasan yang dimaksudkan oleh istilah perangkat lunak bebas. Terkadang memang benar-benar perangkat
lunak bebas; namun terkadang tidak. Banyak bahasa memiliki dua kata yang berbeda untuk menyatakan “bebas”
sebagai kebebasan dan “bebas” sebagai tanpa biaya. Sebagai contoh, bahasa Perancis memiliki kata “libre” dan
“gratuit”. Dalam bahasa Inggris terdapat kata “gratis” yang menyatakan tentang harga tanpa membingungkan.
Tapi tidak ada kata sifat yang menyatakan kebebasan tanpa membingungkan. Hal ini sangat disayangkan, karena
kata semacam itu akan sangat berguna disini. Perangkat lunak bebas seringkali lebih handal daripada perangkat
lunak tidak bebas.
8.1.3. Public Domain
Perangkat lunak public domain ialah perangkat lunak yang tanpa hak cipta. Ini merupakan kasus khusus dari
perangkat lunak bebas non-copyleft, yang berarti bahwa beberapa salinan atau versi yang telah dimodifikasi bisa
jadi tidak bebas sama sekali. Terkadang ada yang menggunakan istilah “public domain” secara bebas yang
berarti “cuma-cuma” atau “tersedia gratis". Namun “public domain” merupakan istilah hukum yang artinya
“tidak memiliki hak cipta”. Untuk jelasnya, kami menganjurkan untuk menggunakan istilah “public domain”
dalam arti tersebut, serta menggunakan istilah lain untuk mengartikan pengertian yang lain.
8.1.4. Copylefted/Non-Copylefted
Perangkat lunak copylefted merupakan perangkat lunak bebas yang ketentuan pendistribusinya tidak
memperbolehkan untuk menambah batasan-batasan tambahan--jika mendistribusikan atau memodifikasi
perangkat lunak tersebut. Artinya, setiap salinan dari perangkat lunak, walau pun telah dimodifikasi, haruslah
merupakan perangkat lunak bebas. Dalam proyek GNU, kami meng-copyleft-kan -kan hampir semua perangkat
lunak yang kami buat, karena tujuan kami adalah untuk memberikan kebebasan kepada semua pengguna seperti
yang tersirat dalam istilah “perangkat lunak bebas”. Copyleft merupakan konsep yang umum. Jadi, untuk
meng-copyleft-kan sebuah program, anda harus menggunakan ketentuan distribusi tertentu. Terdapat berbagai
cara untuk menulis perjanjian distribusi program copyleft.
Perangkat lunak bebas non-copyleft dibuat oleh pembuatnya yang mengizinkan seseorang untuk
mendistribusikan dan memodifikasi, dan untuk menambahkan batasan-batasan tambahan dalamnya. Jika suatu
program bebas tapi tidak copyleft , maka beberapa salinan atau versi yang dimodifikasi bisa jadi tidak bebas
sama sekali. Perusahaan perangkat lunak dapat mengkompilasi programnya, dengan atau tanpa modifikasi, dan
mendistribusikan file tereksekusi sebagai produk perangkat lunak yang berpemilik. Sistem X Window
menggambarkan hal ini. Konsorsium X mengeluarkan X11 dengan ketentuan distribusi yang menetapkannya
sebagai perangkat lunak bebas non-copyleft . Jika anda menginginkannya, anda dapat memperoleh salinan yang
memiliki perjanjian distribusi dan juga bebas. Namun ada juga versi tidak bebasnya, dan ada workstation
terkemuka serta perangkat grafik PC, dimana versi yang tidak bebas merupakan satu-satunya yang dapat bekerja
disini. Jika anda menggunakan perangkat keras tersebut, X11 bukanlah perangkat lunak bebas bagi anda.
8.1.5. GPL-covered
GNU GPL (General Public License) (20k huruf) merupakan sebuah kumpulan ketentuan pendistribusian tertentu
untuk meng-copyleft-kan sebuah program. Proyek GNU menggunakannya sebagai perjanjian distribusi untuk
284Bab 8. Studi Kasus: GNU/Linux
sebagian besar perangkat lunak GNU.
8.1.6. GNU
Sistem GNU merupakan sistem serupa Unix yang seutuhnya bebas. Sistem operasi serupa Unix terdiri dari
berbagai program. Sistem GNU mencakup seluruh perangkat lunak GNU, dan juga paket program lain, seperti
sistem X Windows dam TeX yang bukan perangkat lunak GNU. Pengembangan sistem GNU ini telah dilakukan
sejak tahun 1984. Pengedaran awal (percobaan) dari “sistem GNU lengkap” dilakukan tahun 1996. Sekarang
(2001), sistem GNU ini bekerja secara handal, serta orang-orang bekerja dan mengembangkan GNOME, dan
PPP dalam sistem GNU. Pada saat bersamaan sistem GNU/Linux, merupakan sebuah terobosan dari sistem GNU
yang menggunakan Linux sebagai kernel dan mengalami sukses luar biasa. Berhubung tujuan dari GNU ialah
untuk kebebasan, maka setiap komponen dalam sistem GNU harus merupakan perangkat lunak bebas. Namun
tidak berarti semuanya harus copyleft; setiap jenis perangkat lunak bebas dapat sah-sah saja jika menolong
memenuhi tujuan teknis. Seseorang dapat menggunakan perangkat lunak non-copyleft seperti sistem X Window.
“Program GNU” setara dengan perangkat lunak GNU. Program Anu adalah program GNU jika ia merupakan
perangkat lunak GNU.
Perangkat Lunak GNU
Perangkat lunak GNU merupakan perangkat lunak yang dikeluarkan oleh proyek GNU. Sebagian besar
perangkat lunak GNU merupakan copyleft, tapi tidak semuanya; namun, semua perangkat lunak GNU harus
merupakan perangkat lunak bebas. Jika suatu program adalah perangkat lunak GNU, seseorang juga dapat
menyebutnya sebagai program GNU. Beberapa perangkat lunak GNU ditulis oleh staf dari Free Software
Foundation (FSF, Yayasan Perangkat Lunak Bebas), namun sebagian besar perangkat lunak GNU merupakan
kontribusi dari para sukarelawan. Beberapa perangkat lunak yang dikontribusikan merupakan hak cipta dari Free
Software Foundation; beberapa merupakan hak cipta dari kontributor yang menulisnya.
8.1.7. Perangkat Lunak Semi-Bebas
Perangkat lunak semi-bebas adalah perangkat lunak yang tidak bebas, tapi mengizinkan setiap orang untuk
menggunakan, menyalin, mendistribusikan, dan memodifikasinya (termasuk distribusi dari versi yang telah
dimodifikasi) untuk tujuan non-laba. PGP adalah salah satu contoh dari program semi-bebas. Perangkat lunak
semi-bebas jauh lebih baik dari perangkat lunak berpemilik, namun masih ada masalah, dan seseorang tidak
dapat menggunakannya pada sistem operasi yang bebas. Pembatasan dari copyleft dirancang untuk melindungi
kebebasan bagi semua pengguna. Bagi pihak GNU, satu-satunya alasan untuk membatasi substantif dalam
menggunakan program--ialah melarang orang lain untuk menambahkan batasan lain. Program semi-bebas
memiliki batasan-batasan tambahan, yang dimotivasi oleh tujuan pribadi semata. Sangat mustahil untuk
menyertakan perangkat lunak semi-bebas pada sistem operasi bebas. Hal ini karena perjanjian distribusi untuk
sistem operasi keseluruhan adalah gabungan dari perjanjian distribusi untuk semua program di dalamnya.
Menambahkan satu program semi-bebas pada sistem akan membuat keseluruhan sistem menjadi semi-bebas.
Terdapat dua alasan mengapa GNU tidak menginginkan hal ini: Sudah seharusnya kita percaya bahwa perangkat
lunak bebas seharusnya ditujukan bagi semuanya--termasuk pelaku bisnis, dan bukan hanya untuk sekolah dan
sekedar hobi saja. GNU ingin mengundang kalangan bisnis untuk menggunakan keseluruhan sistem GNU, dan
untuk itu kami tidak dapat menyertakan program semi-bebas di dalamnya. Distribusi komersial dari sistem
operasi bebas, termasuk Sistem GNU/Linux sangat penting, dan para pengguna menghargai kemampuan untuk
dapat membeli distribusi CD-ROM komersial. Menyertakan satu program semi-bebas dalam sistem operasi
dapat memotong distribusi CD-ROM komersial untuknya. Free Software Foundation sendiri adalah organisasi
nirlaba, dan karena itu, kami diizinkan secara hukum untuk menggunakan program semi-bebas secara “internal”.
285Bab 8. Studi Kasus: GNU/Linux
Tapi GNU tidak melakukannya, karena hal itu akan melemahkan upaya yang telah dilakukan untuk memperoleh
program yang dapat disertakan ke dalam GNU. Jika ada pekerjaan yang berhubungan dengan perangkat lunak,
maka sebelum kami memiliki program bebas untuk melakukan pekerjaan itu, sistem GNU memiliki
kesenjangan. Kami harus memberitahukan kepada para sukarelawan, “Kami belum memiliki program untuk
melakukan pekerjaan ini di GNU, jadi kami berharap Anda menulisnya sendiri.” Jika program semi-bebas
digunakan untuk untuk melakukan pekerjaan itu, hal itu akan melemahkan apa yang telah dijelaskan diatas; hal
itu akan menghancurkan motivasi (bagi pengembang GNU, dan orang lain yang memiliki pandangan yang sama)
untuk menulis substitusi yang bebas.
8.1.8. Perangkat Lunak Berpemilik
Perangkat lunak berpemilik ialah perangkat lunak yang tidak bebas atau pun semi-bebas. Seseorang dapat
dilarang, atau harus meminta izin, atau akan dikenakan pembatasan lainnya sehingga menyulitkan--jika
menggunakan, mengedarkan, atau memodifikasinya. Free Software Foundation mengikuti aturan bahwa
seseorang tidak dapat memasang program-program berpemilik di komputernya kecuali untuk sementara waktu
dengan maksud menulis pengganti bebas untuk program tersebut. Disamping itu, pihak perangkat lunak bebas
merasa tidak; ada alasan untuk memasang sebuah program berpemilik. Sebagai contoh, pengemban GNU merasa
sah dalam memasang Unix di komputer yang digunakan pada tahun 1980-an, sebab kami menggunakannya
untuk menulis pengganti bebas untuk Unix. Sekarang, karena sistem operasi bebas telah tersedia, alasan ini tidak
lagi dapat diterima; pihak GNU harus menghapus semua sistem operasi tidak bebas yang dimiliki, dan setiap
komputer yang dipasang harus berjalan pada sistem operasi yang benar-benar bebas. GNU tidak memaksa para
pengguna GNU atau para kontributor GNU untuk mengikuti aturan ini. Ini adalah aturan yang dibuat untuk diri
kami sendiri (GNU). Tapi kami berharap agar anda memutuskan untuk mengikutinya juga.
8.1.9. Freeware
Istilah “freeware” tidak terdefinisi dengan jelas, tapi biasanya digunakan untuk paket-paket yang mengizinkan
redistribusi tetapi bukan pemodifikasian (dan kode programnya tidak tersedia). Paket-paket ini bukan perangkat
lunak bebas, jadi jangan menggunakan istilah “freeware” untuk merujuk ke perangkat lunak bebas.
8.1.10. Shareware
Shareware ialah perangkat lunak yang mengizinkan orang-orang untuk meredistribusikan salinannya, tetapi
mereka yang terus menggunakannya diminta untuk membayar biaya lisensi. Shareware bukan perangkat lunak
bebas atau pun semi-bebas. Ada dua alasan untuk hal ini, yakni: Sebagian besar shareware, kode programnya
tidak tersedia; jadi anda tidak dapat memodifikasi program tersebut sama sekali. Shareware tidak mengizinkan
seseorang untuk membuat salinan dan memasangnya tanpa membayar biaya lisensi, tidak juga untuk
orang-orang yang terlibat dalam kegiatan nirlaba. Dalam prakteknya, orang-orang sering tidak mempedulikan
perjanjian distribusi dan tetap melakukan hal tersebut, tapi sebenarnya perjanjian tidak mengizinkannya.
8.1.11. Perangkat Lunak Komersial
Perangkat lunak komersial adalah perangkat lunak yang dikembangkan oleh kalangan bisnis untuk memperoleh
keuntungan dari penggunaannya. “Komersial” dan “kepemilikan” adalah dua hal yang berbeda! Kebanyakan
perangkat lunak komersial adalah berpemilik, tapi ada perangkat lunak bebas komersial, dan ada perangkat
lunak tidak bebas dan tidak komersial. Sebagai contoh, GNU Ada selalu didistribusikan di bawah perjanjian
GNU GPL, dan setiap salinannya adalah perangkat lunak bebas; tapi para pengembangnya menjual kontrak
penunjang. Ketika penjualnya bicara kepada calon pembeli, terkadang pembeli tersebut mengatakan, “Kami
286Bab 8. Studi Kasus: GNU/Linux
merasa lebih aman dengan kompilator komersial.” Si penjual menjawab, “GNU Ada ialah kompilator komersial;
hanya saja ia merupakan perangkat lunak bebas.” Bagi proyek GNU, penekanannya ada pada hal yang
sebaliknya: hal terpenting ialah GNU merupakan perangkat lunak bebas; terlepas komersial atau bukan, itu
bukan hal yang penting. Perkembangan GNU yang dihasilkan dari komersialisasinya adalah menguntungkan.
Harap sebarkan ke khalayak, perangkat lunak bebas komersial merupakan sesuatu yang mungkin. Sebaiknya,
anda jangan mengatakan “komersial” ketika maksud anda ialah “berpemilik”.
8.2. Sejarah dan Rancangan Dasar GNU/Linux
8.2.1. Sejarah
Linux adalah sebuah sistem operasi yang sangat mirip dengan sistem-sistem UNIX, karena memang tujuan
utama desain dari proyek Linux adalah UNIX compatible. Sejarah Linux dimulai pada tahun 1991, ketika
mahasiswa Universitas Helsinki, Finlandia bernama Linus Benedict Torvalds menulis Linux, sebuah kernel
untuk prosesor 80386, prosesor 32-bit pertama dalam kumpulan CPU intel yang cocok untuk PC.
Pada awal perkembangannya, source code Linux disediakan secara bebas melalui internet. Hasilnya,
pengembangan Linux merupakan kolaborasi para pengguna dari seluruh dunia, semuanya dilakukan secara
eksklusif melalui internet. Bermula dari kernel awal yang hanya mengimplementasikan subset kecil dari sistem
UNIX, kini sistem Linux telah tumbuh sehingga mampu memasukkan banyak fungsi UNIX.
Kernel Linux berbeda dengan sistem Linux. Kernel Linux merupakan sebuah perangkat lunak orisinil yang
dibuat oleh komunitas Linux, sedangkan sistem Linux, yang dikenal saat ini, mengandung banyak komponen
yang dibuat sendiri atau dipinjam dari proyek pengembangan lain.
8.2.2. Kernel Linux
Kernel Linux pertama yang dipublikasikan adalah versi 0.01, pada tanggal 14 Maret 1991. Sistem berkas yang
didukung hanya sistem berkas Minix. Kernel pertama dibuat berdasarkan kerangka Minix (sistem UNIX kecil
yang dikembangkan oleh Andy Tanenbaum). Tetapi, kernel tersebut sudah mengimplementasi proses UNIX
secara tepat.
Pada tanggal 14 Maret 1994 dirilis versi 1.0, yang merupakan tonggak sejarah Linux. Versi ini adalah kulminasi
dari tiga tahun perkembangan yang cepat dari kernel Linux. Fitur baru terbesar yang disediakan adalah jaringan.
Versi 1.0 mampu mendukung protokol standar jaringan TCP/IP. Kernel 1.0 juga memiliki sistem berkas yang
lebih baik tanpa batasan-batasan sistem berkas Minix. Sejumlah dukungan perangkat keras ekstra juga
dimasukkan ke dalam rilis ini. Dukungan perangkat keras telah berkembang termasuk diantaranya floppy-disk,
CD-ROM, sound card, berbagai mouse, dan keyboard internasional. Dukungan juga diberikan terhadap modul
kernel yang dynamically loadable dan unloadable.
Satu tahun setelah versi 1.0 dirilis, kernel 1.2 keluar. Kernel versi 1.2 ini mendukung variasi perangkat keras
yang lebih luas. Pengembang telah memperbaharui networking stack untuk menyediakan support bagi protokol
IPX, dan membuat implementasi IP lebih lengkap dengan memberikan fungsi accounting dan firewalling. Kernel
1.2 ini merupakan kernel Linux terakhir yang PC-only. Konsentrasi lebih diberikan pada dukungan perangkat
keras dan memperbanyak implementasi lengkap pada fungsi-fungsi yang ada.
Akhirnya pada bulan Juni 1996, Linux 2.0 dirilis. Versi 2.0 memiliki dua kemampuan baru yang penting, yaitu
dukungan terhadap multiple architecture dan multiprocessor architectures. Kode untuk manajemen memori telah
diperbaiki sehingga kinerja sistem berkas dan memori virtual meningkat. Untuk pertama kalinya, file system
caching dikembangkan ke networked file systems, juga sudah didukung writable memory mapped regions.
287Bab 8. Studi Kasus: GNU/Linux
Kernel 2.0 sudah memberikan kinerja TCP/IP yang lebih baik, ditambah dengan sejumlah protokol jaringan
baru. Kemampuan untuk memakai remote netware dan SMB (Microsoft LanManager) network volumes juga
telah ditambahkan pada versi terbaru ini. Tambahan lain adalah dukungan internal kernel threads, penanganan
dependencies antara modul-modul loadable, dan loading otomatis modul berdasarkan permintaan (on demand).
Konfigurasi dinamis dari kernel pada run time telah diperbaiki melalui konfigurasi interface yang baru dan
standar.
8.2.3. Sistem Linux
Dalam banyak hal, kernel Linux merupakan inti dari proyek Linux, tetapi komponen lainlah yang membentuk
secara komplit sistem operasi Linux. Dimana kernel Linux terdiri dari kode-kode yang dibuat khusus untuk
proyek Linux, kebanyakan perangkat lunak pendukungnya tidak eksklusif terhadap Linux, melainkan biasa
dipakai dalam beberapa sistem operasi yang mirip UNIX. Contohnya, sistem operasi BSD dari Berkeley, X
Window System dari MIT, dan proyek GNU dari Free Software Foundation.
Pembagian (sharing) alat-alat telah bekerja dalam dua arah. Sistem perpustakaan utama Linux awalnya dimulai
oleh proyek GNU, tetapi perkembangan perpustakaannya diperbaiki melalui kerjasama dari komunitas Linux
terutama pada pengalamatan, ketidak- efisienan, dan bugs. Komponen lain seperti GNU C Compiler, gcc,
kualitasnya sudah cukup tinggi untuk dipakai langsung dalam Linux. Alat-alat administrasi network di bawah
Linux berasal dari kode yang dikembangkan untuk 4.3 BSD, tetapi BSD yang lebih baru, salah satunya
FreeBSD, sebaliknya meminjam kode dari Linux, contohnya adalah perpustakaan matematika Intel
floating-point-emulation.
Sistem Linux secara keseluruhan diawasi oleh network tidak ketat yang terdiri dari para pengembang melalui
internet, dengan grup kecil atau individu yang memiliki tanggung jawab untuk menjaga integritas dari
komponen-komponen khusus. Dokumen ’File System Hierarchy Standard’ juga dijaga oleh komunitas Linux
untuk memelihara kompatibilitas ke seluruh komponen sistem yang berbeda-beda. Aturan ini menentukan
rancangan keseluruhan dari sistem berkas Linux yang standar.
8.2.4. Distribusi Linux
Siapa pun dapat menginstall sistem Linux, ia hanya perlu mengambil revisi terakhir dari komponen sistem yang
diperlukan melalui situs ftp lalu di-compile. Pada awal keberadaan Linux, operasi seperti di atas persis seperti
yang dilaksanakan oleh pengguna Linux. Namun, dengan semakin berkembangnya Linux, berbagai individu dan
kelompok berusaha membuat pekerjaan tersebut lebih mudah dengan cara menyediakan sebuah set bingkisan
yang standar dan sudah di-compile terlebih dahulu supaya dapat diinstall secara mudah.
Koleksi atau distribusi ini, tidak hanya terdiri dari sistem Linux dasar tetapi juga mengandung instalasi sistem
ekstra dan utilitas manajemen, bahkan paket yang sudah di- compile dan siap diinstall dari banyak alat UNIX
yang biasa, seperti news servers, web browsers, text-processing dan alat mengedit, termasuk juga games.
Distribusi pertama mengatur paket-paket ini secara sederhana, menyediakan sebuah sarana untuk memindahkan
seluruh file ke tempat yang sesuai. Salah satu kontribusi yang penting dari distribusi modern adalah
manajemen/pengaturan paket-paket yang lebih baik. Distribusi Linux pada saat ini melibatkan database packet
tracking yang memperbolehkan suatu paket agar dapat diinstall, di-upgrade, atau dihilangkan tanpa susah payah.
Distribusi SLS (Soft Landing System) adalah koleksi pertama dari bingkisan Linux yang dikenal sebagai
distribusi komplit. Walau pun SLS dapat diinstall sebagai entitas tersendiri, dia tidak memiliki alat-alat
manajemen bingkisan yang sekarang diharapkan dari distribusi Linux. Distribusi Slackware adalah peningkatan
yang besar dalam kualitas keseluruhan (walau pun masih memiliki manajemen bingkisan yang buruk);
Slackware masih merupakan salah satu distribusi yang paling sering diinstall dalam komunitas Linux.
288Bab 8. Studi Kasus: GNU/Linux
Sejak dirilisnya Slackware, sejumlah besar distribusi komersil dan non-komersil Linux telah tersedia. Red Hat
dan Debian adalah distribusi yang terkenal dari perusahaan pendukung Linux komersil dan perangkat lunak
bebas komunitas Linux. Pendukung Linux komersil lainnya termasuk distribusi dari Caldera, Craftworks, dan
Work-Group Solutions. Contoh distribusi lain adalah SuSE dan Unifix yang berasal dari Jerman.
8.2.5. Lisensi Linux
Kernel Linux terdistribusi di bawah Lisensi Publik Umum GNU (GPL), dimana peraturannya disusun oleh Free
Software Foundation. Linux bukanlah perangkat lunak domain publik: Public Domain berarti bahwa pengarang
telah memberikan copyright terhadap perangkat lunak mereka, tetapi copyright terhadap kode Linux masih
dipegang oleh pengarang-pengarang kode tersebut. Linux adalah perangkat lunak bebas, namun: bebas dalam
arti bahwa siapa saja dapat mengkopi, modifikasi, memakainya dengan cara apa pun, dan memberikan kopi
mereka kepada siapa pun tanpa larangan atau halangan.
Implikasi utama peraturan lisensi Linux adalah bahwa siapa saja yang menggunakan Linux, atau membuat
modifikasi dari Linux, tidak boleh membuatnya menjadi hak milik sendiri. Jika sebuah perangkat lunak dirilis
berdasarkan lisensi GPL, produk tersebut tidak boleh didistribusi hanya sebagai produk biner (binary-only).
Perangkat lunak yang dirilis atau akan dirilis tersebut harus disediakan sumber kodenya bersamaan dengan
distribusi binernya.
8.2.6. Linux Saat Ini
Saat ini, Linux merupakan salah satu sistem operasi yang perkembangannya paling cepat. Kehadiran sejumlah
kelompok pengembang, tersebar di seluruh dunia, yang selalu memperbaiki segala fiturnya, ikut membantu
kemajuan sistem operasi Linux. Bersamaan dengan itu, banyak pengembang yang sedang bekerja untuk
memindahkan berbagai aplikasi ke Linux (dapat berjalan di Linux).
Masalah utama yang dihadapi Linux dahulu adalah interface yang berupa teks (text based interface). Ini
membuat orang awam tidak tertarik menggunakan Linux karena harus dipelajari terlebih dahulu untuk dapat
dimengerti cara penggunaannya (tidak user-friendly). Tetapi keadaan ini sudah mulai berubah dengan kehadiran
KDE dan GNOME. Keduanya memiliki tampilan desktop yang menarik sehingga mengubah persepsi dunia
tentang Linux.
Linux di negara-negara berkembang mengalami kemajuan yang sangat pesat. Harga perangkat lunak (misalkan
sebuah sistem operasi) bisa mencapai US $100 atau lebih. Di negara yang rata-rata penghasilan per tahun adalah
US $200-300, US $100 sangatlah besar. Dengan adanya Linux, semua berubah. Karena Linux dapat digunakan
pada komputer yang kuno, dia menjadi alternatif cocok bagi komputer beranggaran kecil. Di negara-negara Asia,
Afrika, dan Amerika Latin, Linux adalah jalan keluar bagi penggemar komputer.
Pemanfaatan Linux juga sudah diterapkan pada supercomputer. Diberikan beberapa contoh:
• The Tetragrid, sebuah mega computer dari Amerika yang dapat menghitung lebih dari 13 trilyun kalkulasi per
detik (13.6 TeraFLOPS). Tetragrid dapat dimanfaatkan untuk mencari solusi dari masalah matematika
kompleks dan simulasi, dari astronomi dan riset kanker hingga ramalan cuaca.
• Evolocity, juga dari Amerika, dapat berjalan dengan kecepatan maksimum 9.2 TeraFLOPS(FLoating
Operations Per Second), menjadikannya sebagai salah satu dari lima supercomputer tercepat di dunia.
Jika melihat ke depan, kemungkinan Linux akan menjadi sistem operasi yang paling dominan bukanlah suatu hal
yang mustahil. Karena semua kelebihan yang dimilikinya, setiap hari semakin banyak orang di dunia yang mulai
berpaling ke Linux.
289Bab 8. Studi Kasus: GNU/Linux
8.2.7. Tux: Logo Linux
Gambar 8-1. Logo Linux. Sumber: . . .
Logo Linux adalah sebuah pinguin. Tidak sepert produk komersil sistem operasi lainnya, Linux tidak memiliki
simbol yang terlihat hebat. Melainkan Tux, nama pinguin tersebut, memperlihatkan sikap santai dari gerakan
Linux. Logo yang lucu ini memiliki sejarah yang unik. Awalnya, tidak ada logo yang dipilih untuk Linux, namun
pada waktu Linus (pencipta Linux) berlibur, ia pergi ke daerah selatan. Disanalah dia bertemu seekor pinguin
yang pendek cerita menggigit jarinya. Kejadian yang lucu ini merupakan awal terpilihnya pinguin sebagai logo
Linux.
Tux adalah hasil karya seniman Larry Ewing pada waktu para pengembang merasa bahwa Linux sudah
memerlukan sebuah logo (1996), dan nama yang terpilih adalah dari usulan James Hughes yaitu "(T)orvalds
(U)ni(X) -- TUX!". Lengkaplah sudah logo dari Linux, yaitu seekor pinguin bernama Tux.
Hingga sekarang logo Linux yaitu Tux sudah terkenal ke berbagai penjuru dunia. Orang lebih mudah mengenal
segala produk yang berbau Linux hanya dengan melihat logo yang unik nan lucu hasil kerjasama seluruh
komunitas Linux di seluruh dunia.
8.2.8. Prinsip Rancangan
Dalam rancangan keseluruhan, Linux menyerupai implementasi UNIX nonmicrokernel yang lain. Ia adalah
sistem yang multiuser, multitasking dengan seperangkat lengkap alat-alat yang compatible dengan UNIX. Sistem
berkas Linux mengikuti semantik tradisional UNIX, dan model jaringan standar UNIX diimplementasikan
secara keseluruhan. Ciri internal desain Linux telah dipengaruhi oleh sejarah perkembangan sistem operasi ini.
Walau pun Linux dapat berjalan pada berbagai macam platform, pada awalnya dia dikembangkan secara
eksklusif pada arsitektur PC. Sebagian besar dari pengembangan awal tersebut dilakukan oleh peminat
individual, bukan oleh fasilitas riset yang memiliki dana besar, sehingga dari awal Linux berusaha untuk
memasukkan fungsionalitas sebanyak mungkin dengan dana yang sangat terbatas. Saat ini, Linux dapat berjalan
baik pada mesin multiprocessor dengan main memory yang sangat besar dan ukuran disk space yang juga sangat
besar, namun tetap mampu beroperasi dengan baik dengan jumlah RAM yang lebih kecil dari 4 MB.
290Bab 8. Studi Kasus: GNU/Linux
8.2.9. Prinsip Desain Linux
Akibat dari semakin berkembangnya teknologi PC, kernel Linux juga semakin lengkap dalam
mengimplementasikan fungsi UNIX. Tujuan utama desain Linux adalah cepat dan efisien, tetapi akhir-akhir ini
konsentrasi perkembangan Linux lebih pada tujuan desain yang ketiga yaitu standarisasi. Standar POSIX terdiri
dari kumpulan spesifikasi dari beberapa aspek yang berbeda kelakuan sistem operasi. Ada dokumen POSIX
untuk fungsi sistem operasi biasa dan untuk ekstensi seperti proses untuk thread dan operasi real-time. Linux
didesain agar sesuai dengan dokumen POSIX yang relevan. Sedikitnya ada dua distribusi Linux yang sudah
memperoleh sertifikasi ofisial POSIX.
Karena Linux memberikan antarmuka standar ke programmer dan pengguna, Linux tidak membuat banyak
kejutan kepada siapa pun yang sudah terbiasa dengan UNIX. Namun interface pemrograman Linux merujuk
pada semantik SVR4 UNIX daripada kelakuan BSD. Kumpulan perpustakaan yang berbeda tersedia untuk
mengimplementasi semantik BSD di tempat dimana kedua kelakuan sangat berbeda.
Ada banyak standar lain di dunia UNIX, tetapi sertifikasi penuh dari Linux terhadap standar lain UNIX
terkadang menjadi lambat karena lebih sering tersedia dengan harga tertentu (tidak secara bebas), dan ada harga
yang harus dibayar jika melibatkan sertifikasi persetujuan atau kecocokan sebuah sistem operasi terhadap
kebanyakan standar. Bagaimanapun juga mendukung aplikasi yang luas adalah penting untuk suatu sistem
operasi, sehingga sehingga standar implementasi merupakan tujuan utama pengembangan Linux, walau pun
implementasinya tidak sah secara formal. Selain standar POSIX, Linux saat ini mendukung ekstensi thread
POSIX dan subset dari ekstensi untuk kontrol proses real-time POSIX.
8.2.10. Komponen Sistem Linux
Sistem Linux terdiri dari tiga bagian kode penting:
Kernel: Bertanggung jawab memelihara semua abstraksi penting dari sistem operasi, termasuk hal-hal seperti
memori virtual dan proses- proses.
Perpustakaan sistem: menentukan kumpulan fungsi standar dimana aplikasi dapat berinteraksi dengan kernel,
dan mengimplementasi hampir semua fungsi sistem operasi yang tidak memerlukan hak penuh atas kernel.
Utilitas sistem: adalah program yang melakukan pekerjaan manajemen secara individual.
8.2.11. Kernel
Walau pun berbagai sistem operasi modern telah mengadopsi suatu arsitektur message-passing untuk kernel
internal mereka, Linux tetap memakai model historis UNIX: kernel diciptakan sebagai biner yang tunggal dan
monolitis. Alasan utamanya adalah untuk meningkatkan kinerja, karena semua struktur data dan kode kernel
disimpan dalam satu address space, alih konteks tidak diperlukan ketika sebuah proses memanggil sebuah fungsi
sistem operasi atau ketika interupsi perangkat keras dikirim. Tidak hanya penjadualan inti dan kode memori
virtual yang menempati address space ini, tetapi juga semua kode kernel, termasuk semua device drivers, sistem
berkas, dan kode jaringan, hadir dalam satu address space yang sama.
Kernel Linux membentuk inti dari sistem operasi Linux. Dia menyediakan semua fungsi yang diperlukan untuk
menjalankan proses, dan menyediakan layanan sistem untuk memberikan pengaturan dan proteksi akses ke
sumber daya perangkat keras. Kernel mengimplementasi semua fitur yang diperlukan supaya dapat bekerja
sebagai sistem operasi. Namun, jika sendiri, sistem operasi yang disediakan oleh kernel Linux sama sekali tidak
mirip dengan sistem UNIX. Dia tidak memiliki banyak fitur ekstra UNIX, dan fitur yang disediakan tidak selalu
dalam format yang diharapkan oleh aplikasi UNIX. Interface dari sistem operasi yang terlihat oleh aplikasi yang
sedang berjalan tidak ditangani langsung oleh kernel, akan tetapi aplikasi membuat panggilan (calls) ke
perpustakaan sistem, yang kemudian memanggil layanan sistem operasi yang dibutuhkan.
291Bab 8. Studi Kasus: GNU/Linux
8.2.12. Perpustakaan Sistem
Perpustakaan sistem menyediakan berbagai tipe fungsi. Pada level yang paling sederhana, mereka membolehkan
aplikasi melakukan permintaan pada layanan sistem kernel. Membuat suatu system call melibatkan transfer
kontrol dari mode pengguna yang tidak penting ke mode kernel yang penting; detil dari transfer ini berbeda pada
masing-masing arsitektur. Perpustakaan bertugas untuk mengumpulkan argumen system-call dan, jika perlu,
mengatur argumen tersebut dalam bentuk khusus yang diperlukan untuk melakukan system call.
Perpustakaan juga dapat menyediakan versi lebih kompleks dari system call dasar. Contohnya, fungsi buffered
file-handling dari bahasa C semuanya diimplementasikan dalam perpustakaan sistem, yang memberikan kontrol
lebih baik terhadap file I/O daripada system call kernel dasar. Perpustakaan juga menyediakan rutin yang tidak
ada hubungan dengan system call, seperti algoritma penyusunan (sorting), fungsi matematika, dan rutin
manipulasi string (string manipulation). Semua fungsi yang diperlukan untuk mendukung jalannya aplikasi
UNIX atau POSIX diimplementasikan dalam perpustakaan sistem.
8.2.13. Utilitas Sistem
Sistem Linux mengandung banyak program-program pengguna-mode: utilitas sistem dan utilitas pengguna.
Utilitas sistem termasuk semua program yang diperlukan untuk menginisialisasi sistem, seperti program untuk
konfigurasi alat jaringan (network device) atau untuk load modul kernel. Program server yang berjalan secara
kontinu juga termasuk sebagai utilitas sistem; program semacam ini mengatur permintaan pengguna login,
koneksi jaringan yang masuk, dan antrian printer.
Tidak semua utilitas standar melakukan fungsi administrasi sistem yang penting. Lingkungan pengguna UNIX
mengandung utilitas standar dalam jumlah besar untuk melakukan pekerjaan sehari-hari, seperti membuat daftar
direktori, memindahkan dan menghapus file, atau menunjukkan isi dari sebuah file. Utilitas yang lebih kompleks
dapat melakukan fungsi text-processing, seperti menyusun data tekstual atau melakukan pattern searches pada
input teks. Jika digabung, utilitas-utilitas tersebut membentuk kumpulan alat standar yang diharapkan oleh
pengguna pada sistem UNIX mana saja; walau pun tidak melakukan fungsi sistem operasi apa pun, utilitas tetap
merupakan bagian penting dari sistem Linux dasar.
8.2.14. Modul Kernel Linux
8.2.14.1. Pengertian Modul Kernel Linux

Komentar

  1. Tulisannya itu...
    susah bacanya

    saran...
    ganti bentuk tulisan

    BalasHapus
  2. Sama Tema atau warna yang gampang di baca dan dilihat

    Salam anak Palembang

    BalasHapus

Posting Komentar