Kamis, 14 Februari 2013

Penjadwalan Disk


Penjadwalan Disk

Salah satu tanggung jawab sistem operasi adalah menggunakan hardware dengan efisien. Khusus untuk disk drives, efisiensi yang dimaksudkan di sini adalah dalam hal waktu akses yang cepat dan aspek bandwidth disk. Waktu akses memiliki dua komponen utama yaitu waktu pencarian dan waktu rotasi disk. 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 rotasi atau perputaran disk, sehingga sektor yang diinginkan dapat dibaca oleh head. Pengertian Bandwidth adalah total jumlah bytes yang ditransfer dibagi dengan total waktu antara permintaan pertama sampai seluruh bytes selesai ditransfer. Untuk meningkatkan kecepatan akses dan bandwidth, kita dapat melakukan penjadwalan pelayanan atas permintaan I/O dengan urutan yang tepat.
Sebagaimana kita ketahui, jika suatu proses membutuhkan pelayanan I/O dari atau menuju disk, maka proses tersebut akan melakukan system call ke sistem operasi. Permintaan tersebut membawa informasi-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
Jika disk drive beserta controller tersedia untuk proses tersebut, maka proses akan dapat dilayani dengan segera. Jika ternyata disk drive dan controller tidak tersedia atau sedang sibuk melayani proses lain, maka semua permintaan yang memerlukan pelayanan disk tersebut akan diletakkan pada suatu antrian penundaan permintaan untuk disk tersebut. Dengan demikian, jika suatu permintaan telah dilayani, maka sistem operasi memilih permintaan tertunda dari antrian yang selanjutnya akan dilayani.

Penjadwalan FCFS

Bentuk paling sederhana dalam penjadwalan disk adalah dengan sistem antrian (queue) atau First-come first-served (FCFS). Algoritma ini secara intrinsik bersifat adil, tetapi secara umum algoritma ini pada kenyataannya tidak memberikan pelayanan yang paling cepat. Sebagai contoh, antrian permintaan pelayanan disk untuk proses I/O pada blok dalam silinder adalah sebagai berikut: 98, 183, 37, 122, 14, 124, 65, 67. Jika head pada awalnya berada pada 53, maka head akan bergerak dulu dari 53 ke 98, kemudian 183, 37, 122, 14, 124, 65, dan terakhir 67, dengan total pergerakan head sebesar 640 silinder.
Permasalahan dengan menggunakan penjadwalan jenis ini dapat diilustrasikan dengan pergerakan dari 122 ke 14 dan kembali lagi ke 124. Jika permintaan terhadap silinder 37 dan 14 dapat dikerjakan/dilayani secara bersamaan, baik sebelum maupun setelah permintaan 122 dan 124, maka pergerakan total head dapat dikurangi secara signifikan, sehingga dengan demikian pendayagunaan akan meningkat.

Penjadwalan SSTF

Sangat berasalasan jika kita menutup semua pelayanan pada posisi head saat ini, sebelum menggerakkan head ke tempat lain yang jauh untuk melayani suatu permintaan. Asumsi ini mendasari algoritma penjadwalan kita yang kedua yaitu shortest-seek-time-first (SSTF). Algoritma ini memilih permintaan dengan berdasarkan waktu pencarian atau seek time paling minimum dari posisi head saat itu. 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 saat itu.
Perhatikan contoh antrian permintaan yang kita sajikan pada penjadwalan FCFS, permintaan paling dekat dengan posisi head saat itu (53) adalah silinder 65. Jika kita penuhi permintaan 65, maka yang terdekat berikutnya adalah silinder 67. Dari 67, silinder 37 letaknya lebih dekat ke 67 dibandingkan silinder 98, jadi 37 dilayani duluan. Selanjutnya, dilanjutkan ke silinder 14, 98, 122, 124, dan terakhir adalah 183. Metode penjadwalan ini hanya menghasilkan total pergerakan head sebesar 236 silinder -- kira-kira sepertiga dari yang dihasilkan penjadwalan FCFS. Algoritma SSTF ini memberikan peningkatan yang cukup signifikan dalam hal pendayagunaan atau performance sistem.
Penjadwalan SSTF merupakan salah satu bentuk dari penjadwalan shortest-job-first (SJF), dan karena itu maka penjadwalan SSTF juga dapat mengakibatkan starvation pada suatu saat tertentu. Kita ketahui bahwa permintaan dapat datang kapan saja. Anggap kita memiliki dua permintaan dalam antrian, yaitu untuk silinder 14 dan 186. Selama melayani permintaan 14, kita anggap ada permintaan baru yang letaknya dekat dengan 14. Karena letaknya lebih dekat ke 14, maka permintaan ini akan dilayani dulu sementara permintaan 186 menunggu gilirannya. Jika kemudian berdatangan lagi permintaan-permintaan yang letaknya lebih dekat dengan permintaan terakhir yang dilayani jika dibandingkan dengan 186, maka permintaan 186 bisa saja menunggu sangat lama. Kemudian jika ada lagi permintaan yang lebih jauh dari 186, maka juga akan menunggu sangat lama untuk dapat dilayani.
Walaupun algoritma SSTF secara substansial meningkat jika dibandingkan dengan FCFS, tetapi algoritma SSTF ini tidak optimal. Seperti contoh diatas, kita dapat menggerakkan head dari 53 ke 37, walaupun bukan yang paling dekat, kemudian ke 14, sebelum menuju 65, 67, 98, 122, dan 183. Strategi ini dapat mengurangi total gerakan head menjadi 208 silinder.

Penjadwalan SCAN

Pada algoritma SCAN, pergerakan disk arm dimulai dari salah satu ujung disk, kemudian bergerak menuju ujung yang lain sambil melayani permintaan setiap kali mengunjungi masing-masing silinder. Jika telah sampai di ujung disk, maka disk arm bergerak berlawanan arah, kemudian mulai lagi melayani permintaan-permintaan yang muncul. Dalam hal ini disk arm bergerak bolak-balik melalui disk.
Kita akan menggunakan contoh yang sudah dibarikan diatas. Sebelum melakukan SCAN untuk melayani permintaan-permintaan 98, 183, 37, 122, 14, 124, 65, dan 67, kita harus mengetahui terlebih dahulu pergerakan head sebagai langkah awal dari 53. Jika disk arm bergerak menuju 0, maka head akan melayani 37 dan kemudian 14. Pada silinder 0, disk arm akan bergerak berlawanan arah dan bergerak menuju ujung lain dari disk untuk melayani permintaan 65, 67, 98, 122, 124, dan 183. Jika permintaan terletak tepat pada head saat itu, maka akan dilayani terlebih dahulu, sedangkan permintaan yang datang tepat dibelakang head harus menunggu dulu head mencapai ujung disk, berbalik arah, baru kemudian dilayani.
Algoritma SCAN ini disebut juga algoritma lift/elevator, karena kelakuan disk arm sama seperti elevator dalam suatu gedung, melayani dulu orang-orang yang akan naik ke atas, baru kemudian berbalik arah untuk melayani orang-orang yang ingin turun ke bawah.
Kelemahan algoritma ini adalah jika banyak permintaan terletak pada salah satu ujung disk, sedangkan permintaan yang akan dilayani sesuai arah arm disk jumlahnya sedikit atau tidak ada, maka mengapa permintaan yang banyak dan terdapat pada ujung yang berlawanan arah dengan gerakan disk arm saat itu tidak dilayani duluan? Ide ini akan mendasari algoritma penjadwalan berikut yang akan kita bahas.

Penjadwalan C-SCAN

Circular-SCAN adalah varian dari algoritma SCAN yang sengaja didesain untuk menyediakan waktu tunggu yang sama. Seperti halnya SCAN, C-SCAN akan menggerakkan head dari satu ujung disk ke ujung lainnya sambil melayani permintaan yang terdapat selama pergerakan tersebut. Tetapi pada saat head tiba pada salah satu ujung, maka head tidak berbalik arah dan melayani permintaan-permintaan, melainkan akan kembali ke ujung disk asal pergerakannya. Jika head mulai dari ujung 0, maka setelah tiba di ujung disk yang lainnya, maka head tidak akan berbalik arah menuju ujung 0, tetapi langsung bergerak ulang dari 0 ke ujung satunya lagi.

Penjadwalan LOOK

Perhatikan bahwa SCAN dan C-SCAN menggerakkan disk arm melewati lebar seluruh disk. Pada kenyataanya algoritma ini tidak diimplementasikan demikian (pergerakan melewati lebar seluruh disk). Pada umumnya, arm disk bergerak paling jauh hanya pada permintaan terakhir pada masing-masin arah pergerakannya. Kemudian langsung berbalik arah tanpa harus menuju ujung disk. Versi SCAN dan C-SCAN yang berprilaku seperti ini disebut LOOK SCAN dan LOOK C-SCAN, karena algoritma ini melihat dulu permintaan-permintaan sebelum melanjutkan arah pergerakannya.

Pemilihan Algoritma Penjadwalan Disk

Dari algoritma-algoritma diatas, bagaimanakah kita memilih algoritma terbaik yang akan digunakan? 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. Untuk antrian permintaan tertentu, mungkin saja kita dapat mendefinisikan urutan akses dan pengambilan data dari disk yang optimal, tapi proses komputasi membutuhkan penjadwalan optimal yang tidak kita dapatkan pada SSTF atau SCAN.
Dengan algoritma penjadwalan yang manapun, kinerja sistem sangat tergantung pada jumlah dan tipe permintaan. Sebagai contoh, misalnya kita hanya memiliki satu permintaan, maka semua algoritma penjadwalan akan dipaksa bertindak sama, karena algoritma-algoritma tersebut hanya punya satu pilihan dari mana menggerakkan disk head: semuanya berprilaku seperti algoritma penjadwalan FCFS.
Perlu diperhatikan pula bahwa pelayanan permintaan disk dapat dipengaruhi pula oleh metode alokasi file. Sebuah program yang membaca alokasi file secara terus menerus mungkin akan membuat beberapa permintaan yang berdekatan pada disk, menyebabkan pergerakan head menjadi terbatas. File yang memiliki link atau indeks, dilain pihak, mungkin juga memasukkan blok-blok yang tersebar luas pada disk, menyebabkan pergerakan head yang sangat besar.
Lokasi blok-blok indeks dan directory juga tidak kalah penting. Karena file harus dibuka sebelum digunakan, proses pembukaan file membutuhkan pencarian pada struktur directory, dengan demikian directory akan sering diakses. Kita anggap catatan directory berada pada awal silinder, sedangkan data file berada pada silinder terakhir. Pada kasus ini, disk head harus bergerak melewati sepanjang lebar disk. Membuat tempat penyimpanan sementara dari blok-blok indeks dan directory ke dalam memori dapat membantu mengurangi pergerakan disk arm, khususnya untuk permintaan membaca disk.
Karena kerumitan inilah, maka algoritma penjadwalan disk harus ditulis dalam modul terpisah dari sistem operasi, jadi dapat saling mengganti dengan algoritma lain jika diperlukan. Baik SSTF maupun LOOK keduanya merupakan pilihan yang paling masuk akal sebagai algoritma yang paling dasar.

Struktur Disk

Disk menyediakan penyimpanan sekunder bagi sistem komputer modern. Magnetic tape sebelumnya digunakan sebagai media penyimpanan sekunder, tetapi waktu aksesnya lebih lambat dari disk. Oleh karena itu, sekarang tape digunakan terutama untuk backup ,untuk penyimpanan informasi yang tidak sering, sebagai media untuk mentransfer infromasi dari satu sistem ke sistem yang lain, dan untuk menyimpan sejumlah data yang terlalu besar untuk sistem disk.
Disk drive modern dialamatkan sebagai suatu array satu dimensi yang besar dari blok lojik, dimana blok lojik merupakan unit terkecil dari transfer. Ukuran dari blok lojik biasanya adalah 512 bytes , walaupun sejumlah disk dapat diformat di level rendah (low level formatted) untuk memilih sebuah ukuran blok lojik yang berbeda, misalnya 1024 bytes.
Array satu dimensi dari blok lojik dipetakan ke bagian dari disk secara sekuensial. Sektor 0 adalah sektor pertama dari trek pertama di silinder paling luar (outermost cylinder ). Pemetaan kemudian memproses secara berurutan trek tersebut, kemudian melalui trek selanjutnya di silinder tersebut, dan kemudian sisa silinder dari yang paling luar sampai yang paling dalam.
Dengan menggunakan pemetaan, kita dapat -minimal dalam teori- mengubah sebuah nomor blok logikal ke sebuah alamat disk yang bergaya lama (old-style disk address) yang terdiri atas sebuah nomor silinder, sebuah nomor trek di silinder tersebut, dan sebuah nomor sektor di trek tersebut. Dalam prakteknya, adalah sulit untuk melakukan translasi ini, dengan 2 alasan. Pertama, kebanyakan disk memiliki sejumlah sektor yang rusak, tetapi pemetaan menyembunyikan hal ini dengan mensubstitusikan dengan sektor yang dibutuhkan dari mana-mana di dalam disk. Kedua, jumlah dari sektor per trek tidaklah konstan. Semakin jauh sebuah trek dari tengah disk, semakin besar panjangnya, dan juga semakin banyak sektor yang dipunyainya. Oleh karena itu,disk modern diatur menjadi zona-zona silinder. Nomor sektor per trek adalah konstan dalam sebuah zona. Tetapi seiring kita berpindah dari zona dalam ke zona luar, nomor sektor per trek bertambah. Trek di zona paling luar tipikalnya mempunyai 40 persen sektor lebih banyak daripada trek di zona paling dalam.
Nomor sektor per trek telah meningkat seiring dengan peningkatan teknologi disk, dan adalah lazim untuk mempunyai lebih dari 100 sektor per trek di zona yang lebih luar dari disk. Dengan analogi yang sama, nomor silinder per disk telah meningkat, dan sejumlah ribuan silinder adalah tak biasa.

Manajemen Disk

Memformat Disk

Sebuah disk magnetik yang baru sebenarnya hanyalah sebuah slate kosong yang berupa piringan magnetik untuk menyimpan sesuatu. Sebelum disk tersebut dapat menyimpan data, harus dilakukan proses low-level formatting/physical format ting, yaitu membagi disk menjadi beberapa sektor dan mengisinya dengan struktur data tertentu (biasanya header, area data, dan trailer) agar dapat dibaca dan ditulis oleh disk controller.
Salah satu informasi yang dibutuhkan oleh disk controller adalah error-correcting code (ECC). Disebut seperti itu karena jika terdapat satu atau dua bit data yang corrupt, controller dapat mengidentifikasi bit mana yang berubah dan mengoreksi nya. Proses ini otomatis dilakukan oleh controller setiap membaca atau menulis pada disk.
Low-level formatting berfungsi agar pihak manufaktur dapat mengetes disk dan menginisialisasi mapping dari lojikal nomor blok ke pendeteksi sektor kosong. Semakin besar ukuran sektor yang diformat, semakin sedikit sektor yang dapat diisi pada masing-masing track dan semakin sedikit header dan trailer yang ditulis pada setiap track. Hal ini berarti ruang yang dapat digunakan untuk data semakin besar.
Agar disk dapat menggunakan suatu berkas, sistem operasi membutuhkan untuk menyimpan struktur datanya pada disk. Langkah pertama adalah membagi disk menjadi satu/lebih silinder (partition), sehingga sistem operasi dapat memperlakukannya sebagai disk yang terpisah. Langkah kedua adalah logical formatting, atau membuat sistem berkas. Pada langkah ini, sistem operasi menyimpan struktur data yang telah diinisialisasi ke disk.
Raw I/O adalah array pada blok lojikal yang memiliki kemampuan untuk menggunakan suatu partisi disk tanpa struktur data dari sistem berkas. Dengan partisi raw ini, untuk beberapa aplikasi tertentu akan lebih efisien dari segi penyimpanan. Tetapi kebanyakan aplikasi akan berjalan lebih baik dengan servis sistem berkas biasa.

Boot Block

Ketika pertama kali menjalankan komputer, dibutuhkan program yang sudan diinisialisasi, yaitu bootstrap. Yang diinisialisasi adalah segala aspek sistem, dari CPU register sampai device controller dan isi dari main memory, kemudian menjalankan sistem operasi. Untuk itu bootstrap mencari kernel sistem operasi pada disk, me loadnya ke memori, dan menggunakan alamat yang telah diinisialisasi untuk mulai menjalankan sistem operasi.
Hampir semua komputer menyimpan bootstrap pada Read-Only Memory (ROM). Alasannya karena ROM tidak membutuhkan inisialisasi dan berada pada lokasi yang tetap dimana prosesor tetap dapat mengeksekusinya ketika komputer baru dinyalakan/ di-reset. Kelebihan lainnya karena ROM read- only, ia tidak dapat terkena virus. Tetapi masalah yang timbul adalah jika kita mengubah kode bootstrap berarti mengubah chip ROM juga. Untuk mengatasinya, sistem menyimpan bootstrap loader di ROM, yang hanya berfungsi untuk memasukkan seluruh program bootstrap dari disk. Boot blocks adalah suatu partisi untuk menyimpan seluruh program bootstrap. Boot disk atau system disk adalah disk yang memiliki partisi boot.

Bad Blocks

Bad blocks adalah satu/lebih sektor yang rusak pada suatu disk. Pada disk sederhana, bad blocks diatasi secara manual. Untuk disk yang lebih kompleks seperti disk SCSI, bad blocks diatasi dengan sector sparing atau forwarding,yaitu controller dapat mengganti sektor yang rusak dengan sebuah sektor yang terpisah. Alternatif lainnya adalah mengganti sektor tersebut dengan cara sector slipping.
Mengganti blok yang rusak bukan sepenuhnya merupakan proses yang otomatis, karena data-data yang tersimpan sebelum nya akan terhapus.

Penanganan Swap-Space

Penanganan (management) swap-space (tempat pertukaran; tetapi karena istilah swap-space sudah umum dipakai, maka untuk seterusnya kita tetap memakai istilah swap-space) adalah salah satu dari low-level task pada sebuah sistem operasi. Virtual memory (memori virtual) menggunakan disk space sebagai perpanjangan (atau space tambahan) dari memori utama. Karena kecepatan akses disk lebih lambat daripada kecepatan akses memori, menggunakan swap-space akan mengurangi performa sistem secara signifikan. Tujuan utama dari perancangan dan implementasi swap-space adalah untuk menghasilkan kinerja memori virtual yang optimal. Dalam sub-bab ini, kita akan membicarakan bagaimana swap-space digunakan, dimana letak swap-space pada disk, dan bagaimana penanganan swap-space.

Penggunaan Swap-Space

Penggunaan swap-space pada berbagai macam sistem operasi berbeda-beda, tergantung pada algoritma memory management yang diimplementasikan. Sebagai contoh, sistem yang mengimplementasikan swapping mungkin akan menggunakan swap-space untuk menyimpan (dan mengerjakan) sebuah proses, termasuk segmen kode dan datanya. Sistem yang menggunakan paging hanya akan menyimpan page (atau "halaman " proses) yang sudah dikeluarkan dari memori utama. Besarnya swap-space yang dibutuhkan sebuah sistem bermacam-macam, tergantung dari banyaknya physical memory (RAM, seperti EDO DRAM, SDRAM, RD RAM), memori virtual yang disimpan di swap-space , dan caranya memori virtual digunakan. Besarnya bervariasi, antara beberapa megabytes sampai ratusan megabytes atau lebih.
Beberapa sistem operasi, seperti UNIX, menggunakan swap-space sebanyak yang diperlu kan. Swap-space ini biasanya disimpan dalam beberapa disk yang terpisah, jadi beban yang diterima oleh sistem I/O dari paging dan swapping bisa didistribusikan ke berbagai I/O device pada sistem.
Harap dicatat bahwa menyediakan swap-space yang berlebih lebih aman daripada kekurangan swap-space, karena bila kekurangan maka ada kemungkinan sistem terpaksa menghentikan sebuah atau lebih proses atau bahkan membuat sistem menjadi crash . Swap-space yang berlebih memang membuang disk space yang sebenarnya bisa digunakan untuk menyimpan berkas ( file), tapi setidaknya tidak menimbulkan resiko yang lain.

Lokasi Swap-Space

Ada dua tempat dimana swap-space bisa berada : swap-space bisa diletakkan pada partisi yang sama dengan sistem operasi, atau pada partisi yang berbeda. Apabila swap-space yang dipakai hanya berupa sebuah file yang besar di dalam sistem file, maka fi le-system yang dipakai bisa digunakan untuk membuat, menamakan, dan mengalokasikan tempat swap- space. Maka dari itu, pendekatan seperti ini mudah untuk diimplementasikan. Sayangnya, juga tidak efisien. Menelusuri struktur direktori dan struktur data alokasi disk memakan waktu , dan berpotensi untuk mengakses disk lebih banyak dari yang diperlukan. Fragmentasi eksternal bisa membuat swapping lebih lama dengan memaksakan pencarian sekaligus banyak (multiple seeks) ketika sedang membaca atau menulis sebuah proses. Kita bisa meningkatkan performa dengan meng-cache informasi lokasi blok pada physical memory , dan dengan menggunakan aplikasi khusus untuk mengalokasikan blok -blok yang contiguous (tidak terputus) untuk swap file-nya, dengan waktu tambahan untuk menelusuri struktur data file- system masih tetap ada.
Metode yang lebih umum adalah untuk membuat swap-space di partisi yang terpisah. Tidak ada sis tem file atau struktur direktori di dalam partisi ini. Justru sebuah swap-space stora ge manager yang terpisah digunakan untuk mengaloka sikan dan melepaskan blok-blok yang digunakan. Mana ger ini menggunakan algoritma yang dioptimalkan un tuk kecepatan, daripada efisiensi tempat. Fragmentasi internal mungkin akan meningkat, tetapi ini bisa diterima karena data dalam swap-space biasanya umurnya lebih singkat daripada data-data di sistem file , dan swap area-nya diakses lebih sering. Pendekatan ini membuat besar swap-space yang tetap selagi mempar tisi disk. Menambah jumlah swap-space bisa dilakukan hanya me lalui mempartisi ulang disk (dimana juga termasuk memindahkan atau menghancurkan dan mengembalikan partisi file-system lainnya dari backup), atau dengan menambahkan swap-space di tempat lain.
Beberapa sistem operasi cukup fleksibel dan bisa swapping baik di partisi mentah (raw, belum di-format) dan di file-system. Contohnya Solaris 2. Policy dan implementasinya terpi sah, sehingga administrator mesinnya (komputernya) bisa memutus kan mana yang akan digunakan. Pertimbangannya adalah antara kemu dahan alokasi dan pengelolaan file-system , dan performa dari swapping pada partisi yang raw .

Pengelolaan Swap-Space

Untuk mengilustrasikan metode-metode yang digunakan untuk me ngelola swap-space, kita sekarang akan mengikuti evolusi dari swapping dan paging pada UNIX. Seperti yang akan dibahas sepenuhnya pada Bab 20, UNIX memulai dengan implemen tasi swapping yang mengkopi seluruh proses antara daerah disk yang contiguous (tidak terputus) dan memori. UNIX berevolusi men jadi kombinasi dari swapping dan paging dengan tersedianya hardware untuk paging.
Dalam 4.3BSD, swap-space dialo kasikan untuk proses ketika sebuah proses dimulai. Tempat yang cu kup disediakan untuk menampung program, yang juga dikenal sebagai halaman-halaman teks (text pages) atau segmen teks, dan segmen data dari proses itu. Alokasi dini tempat yang dibutuhkan dengan cara seperti ini umumnya mencegah sebuah proses untuk kehabisan swap-space selagi proses itu dikerjakan. Ketika proses mulai , teks di dalamnya di-page dari fi le system. Halaman-halaman (pages) ini akan ditaruh di swap bila perlu, dan dibaca kembali dari sana, jadi sistem file akan diakses sekali untuk setiap text page. Halaman-halaman dari segmen data dibaca dari sistem file, atau dibuat (bila belum sebelumnya), dan ditaruh di swap space dan di-page kembali bila perlu. Satu contoh optimisasi (sebagai contoh, ketika dua user menggunakan editor yang sama) adalah proses-proses dengan text page yang identik membagi halaman-halaman (pages ) ini, baik di memori maupun di swap- space.
Dua peta swap untuk setiap proses digunakan oleh kernel untuk melacak penggunaan swap- space. Segmen teks besarnya tetap, maka swap space yang dialokasikan sebesar 512K setiap potong (chunks), kecuali untuk potongan terakhir, yang menyimpan sisa halaman-halaman ( pages) tadi, dengan kenaikan ( increments) sebesar 1K.
Peta swap dari Segmen data lebih rumit, karena segmen data bisa mem besar setiap saat. Petanya sendiri besarnya tetap, tapi menyimpan a lamat-alamat swap untuk blok-blok yang besarnya bervariasi. Misalkan ada index i, bla-bla-bla, dengan besar maksimun 2 megabytes. Data struktur ini ditunjukkan oleh gambar 13.8. (Besar minimum dan maksi mum blok bervariasi, dan bisa diubah ketika me-reboot sistem.) Keti ka sebuah proses mencoba untuk memperbesar segmen datanya melebihi blok yang dialokasikan di tempat swap, sistem operasi mengalokasikan blok lain lagi, dua kali besarnya yang pertama. Skema ini menyebab kan proses-proses yang kecil menggunakan blok-blok kecil. Ini juga meminimalisir fragmentasi. Blok-blok dari proses yang besar bisa di temukan dengan cepat, dan peta swap tetap kecil.
Pada Solaris 1 (SunOS 4), para pembuatnya membuat perubahan pada me tode standar UNIX untuk meningkatkan efisiensi dan untuk mencermin kan perubahan teknologi. Ketika sebuah proses berjalan, halaman-hala man (pages) dari segmen teks dibawa kembali dari sistem file, diak ses di memori utama, dan dibuang bila diputuskan untuk di-pageout. A kan lebih efisien untuk membaca ulang sebuah halaman (page) dari sis tem file daripada menaruhnya di swap-space dan membacanya ulang dari sana.
Lebih banyak lagi perubahan pada Solaris 2. Perubahan terbesar ada lah Solaris 2 mengalokasikan swap-space hanya ketika sebuah halaman (page) dipaksa keluar dari memori, daripada ketika halaman (page) da ri memori virtual pertama kali dibuat. Perubahan ini memberikan per forma yang lebih baik pada komputer-komputer modern, yang sudah mem punyai memori lebih banyak daripada komputer-komputer dengan sistem yang sudah lama, dan lebih jarang melakukan paging.




Realibilitas Disk

Disk memiliki resiko untuk mengalami kerusakan. Kerusakan ini dapat berakibat turunnya performa ataupun hilangnya data. Meskipun 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.
Berikut adalah beberapa macam penyebab terjadinya hilangnya data :
1.      Ketidaksengajaan dalam menghapus
Bisa saja user secara tidak sengaja menghapus suatu file, hal ini dapat dicegah seminimal mungkin dengan cara melakukan backup data secara reguler
2.      Hilangnya tenaga listrik
Hilangnya tenaga listrik dapat mengakibatkan adanya corrupt data
3.      Blok rusak pada disk
Rusaknya blok pada disk dapat saja disebabkan dari umur disk tersebut. Seiring dengan waktu, banyaknya blok pada disk yang rusak dapat terus terakumulasi. Blok yang rusak pada disk, tidak akan dapat dibaca.
4.      Rusaknya Disk
Bisa saja karena suatu kejadian disk rusak total. Sebagai contoh, dapat saja disk jatuh ataupun ditendang ketika sedang dibawa.
5.      System Corrupt
Ketika komputer sedang dijalankan, bisa saja terjadi OS error, program error, dan lain sebagainya. Hal ini tentu saja dapat menyebabkan hilangnya data
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 pararel. Ditambah dengan sinkronisasi pada rotasi masing-masing disk, maka kinerja dari disk dapat ditingkatkan. Cara ini dikenal sebagai RAID(redundant array of independent disks). Selain masalah kinerja RAID juga dapat meningkatkan reabilitas dari disk dengan jalan melakukan redundansi data.
Salah satu cara yang digunakan pada RAID adalah dengan mirroring atau shadowing, yaitu dengan membuat duplikasi dari tiap-tiap disk. Pada cara ini, berarti 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 2 kali lipat. Hal ini dikarenakan setengah dari permintaan membaca dapat dikirim ke masing-masing disk. Cara lain yang digunakan pada RAID adalah block interleaved parity. Pada cara ini, digunakan sebagian kecil dari disk untuk penyimpanan parity block. Sebagai contoh, dimisalkan terdapat 10 disk pada array. Karenanya setiap 9 data block yang disimpan pada array, 1 parity block juga akan disimpan. Bila terjadi kerusakan pada salah satu block pada disk maka dengan adanya informasi pada parity block ini, ditambah dengan data block lainnya, diharapkan kerusakan pada disk tersebut dapat ditanggulangi, sehingga tidak ada data yang hilang. Penggunaan parity block ini juga akan menurunkan kinerja sama seperti halnya pada mirroring. Pada parity block ini, tiap kali subblock data ditulis, akan terjadi perhitungan dan penulisan ulang pada parity block.

Soal Latihan

Perangkat Keras I/O
1.      Gambarkan diagram dari Interrupt Driven I/O Cycle.
2.      Sebutkan langkah-langkah dari transfer DMA !
3.      Apakah perbedaan dari polling dan interupsi ?
4.      Apa hubungan arsitektur kernel yang di-thread dengan implemen tasi interupsi?
Interface Aplikasi I/O
1.      Kenapa dibutuhkan interface pada aplikasi I/O?
2.      Apa tujuan adanya device driver? Berikan contoh keuntungan yang kita dapatkan dengan adanya hal ini!
Kernel I/O Subsystem
1.      Apakah yang dimaksud dengan proses pooling ? (jelaskan dengan jelas)
2.      Mengapa diperlukan proses pooling?
3.      Apakah yang dimaksud dengan buffer ?
4.      Jelaskan dengan singkat mengenai I/O Scheduling!
Penanganan Permintaan I/O
1.      Apakah kegunaan dari Streams pada Sistem V UNIX?
2.      Jelaskan lifecycle dari permintaan pembacaan blok!
Performa I/O
1.      Gambarkan bagan mengenai komunikasi antar komputer
2.      Bagaimana cara meningkatkan efisiensi performa I/O
3.      Jelaskan mengenai implementasi dari fungsi I/O
Struktur Disk
1.      Sebutkan bagian-bagian dari disk
2.      Apa keuntungan penggunaan pemetaan pada disk?
Penjadwalan Disk
1.      Buatlah dengan pemikiran Anda sendiri, strategi penjadwalan disk yang tepat dan efisien menurut Anda
2.      Menurut Anda, diantara algoritma-algoritma penjadwalan disk diatas manakah yang paling cepat, manakah yang paling efisien (hemat/tidak mahal), dan manakah yang paling lambat dan tidak efisien? Jelaskan!
Manajemen Disk
1.      Bagaimana cara disk SCSI me-recovery blok yang rusak? Jelaskan selengkap mungkin!
Penanganan Swap-Space
1.      Bagaimana penanganan swap space pada disk?
2.      Bagaimana pengelolaan swap space pada disk?
Realibilitas Disk
1.      Terangkan bagaimana RAID dapat meningkatkan reliabilitas dari disk?
2.      Adakah batas waktu hidup suatu disk? Jika ada, berapa lama? Jika tidak, kenapa?
Implementasi Stable-Storage
1.      Sebutkan kemungkinan-kemungkinan dari disk write!
2.      Bagaimanakah suatu operasi output dieksekusi?
Tertiary-Storage Structure
1.      Sebutkan kelebihan tertiary storage structure?
2.      Apakah kegunaan EOT pada tapes? Jelaskan cara kerjanya?
3.      Jelaskan tugas sistem operasi terhadap tertiary-storage structure?

Referensi

1.      Applied Operating System Concept, Silberschatz, Galvin, Gagne, 1999
2.      http://linas.org/linux/raid.html - RAID and Data Protection Solutions for Linux
3.      http://www.eso.org/projects/iridt/irace/aboutirace.html - DMA Interface
4.      http://www.ebiz.com.pk/pakistan/dma.doc - I/O Transfer Method
I/O = I/O (Input/Output)
hardware -> perangkat keras
device = device
storage device -> device penyimpanan
disk = disk
transmission = transmission
processor -> prosesor
human-interface device = human-interface device
instruction -> instruksi
direct I/O instruction = direct I/O instruction
memory-mapped I/O = memory-mapped I/O
port = port (perangkat keras)
bus = bus (perangkat keras)
daisy chain = daisy chain
shared direct access = shared direct access
controller = controller
host adapter = host adapter
command-ready =command-ready
busy = busy
error = error
host = host
polling = polling
looping = looping
status register -> register status
service = service
CPU processing = CPU processing
Interrupt -> Interupsi
request line = request line
pointer = pointer
interrupt handler/ing = interrupt handler/ing
interrupt controller = interrupt controller
critical state = critical state, efisiensi
interrupt priority level system = interrupt priority level system
interrupt request line = interrupt request line
nonmaskable interrupt = nonmaskable interrupt
maskable interrupt = maskable interrupt
critical instruction sequence = critical instruction sequence
interrupt vector = interrupt vector
interrupt chaining = interrupt chaining
offset = offset
overhead = overhead
exception = exception
page fault = page fault
system call = system call
software interrupt = software interrupt
trap = trap
DMA = Direct Memory Access
command block = command block
transfer destination -> destinasi transfer
address -> alamat (istilah komputer dalam penunjukkan lokasi)
block -> blok
burst mode = burst mode
single burst = single burst
microprocessor -> mikroprosesor
idle = idle
cycle stealing mode = cycle stealing mode
handshaking = handshaking
DMA request = DMA request
DMA acknowledge = DMA acknowledge
memory-address -> alamat memori
cycle stealing = cycle stealing
virtual address -> alamat virtual
physical memory -> memori fisik
performance -> performa
device driver = device driver
memory bus -> bus memori
controller = controller
physical memory = physical memory
application space data = application space data
context switch = context switch
device = device
interrupt -> interupsi
smart controller = smart controller
polling = polling
concurrency = concurrency
channel = channel
memory subsystem = memory subsystem
bus = bus
application code = kode aplikasi
bugs = bugs
reboot = reboot
reload = reload
overhead = overhead
internal kernel -> kernel internal
messaging = messaging
threading = threading
locking = locking
debug = debug
crash = crash
block reads = block reads
write = write
workload = workload
secondary storage -> penyimpanan sekunder
magnetic tape = magnetic tape
tape = tape
backup = backup
disk drive = disk drive
logic block -> blok lojik
bytes = bytes
low level formatted = low level formatted
logical block number -> nomor blok lojikal
disk address -> alamat disk
sector -> sektor
hardware = hardware
disk drives = disk drives
bandwith disk = bandwith disk
seek time -> waktu pencarian
disk arm = disk arm
head = head
disk = disk
bandwith = bandwith
bytes = bytes
input = input
output = output
controller = controller
memory address = alamat memori
First-come First-serve = First-com First-serve
shortest-seek-time-first = shortest-seek-time-first
shortest-job-first = shortest-job-first
starvation = starvation
schedulling -> penjadwalan
disk arm = disk arm
Circular-SCAN = Circular-SCAN
variance -> varian
index -> indeks
directory = directory
disk head = disk head
magnetic disk = disk magnetik
slate = slate
low-level formatting = low-level formatting
physical formatting = physical formatting
trailer = trailer
disk controller = disk controller
partition = partition
I/O = I/O
logical block -> blok lojikal
raw I/O = raw I/O
main memory = main memory
bootstrap = boostrap
boot disk = boot disk
bad blocks = bad blocks
sector slipping = sector slipping
interface = interface
I/O Application -> aplikasi I/O
software layering = software layering
device driver = device driver
layer -> lapisan
disk drive = disk drive
block device = block device
random-access = random-access
stream character -> karakter stream
library = library
network device -> peralatan jaringan
interface socket = interface socket
local socket = local socket
remote socket = remote socket
clock -> jam
timer = timer
trigger = trigger
programmable interval timer = programmable interval timer
scheduler = scheduler
timer request = timer request
hardware timer = hardware timer
blocking (application) = blocking (application)
nonblocking (application) = nonblocking (application)
wait queue = wait queue
run queue = run queue
physical action = physical action
asynchronous = asynchronous