Penjadwalan 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 bisa meningkatkan waktu
akses dan bandwidth dengan menjadwalkan 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
Penjadwalan SCAN dan
C-SCAN
Pada algoritma
SCAN, head bergerak ke silinder paling ujung dari disk.
Setelah sampai disana maka headakan berbalik arah menuju silinder
di ujung yang lainnya. Head akan melayani permintaan yang
dilaluinya selama pergerakannya ini. Algoritma ini disebut juga sebagai Elevator
Algorithm karena sistem kerjanya yang sama seperti yang digunakan
elevator di sebuah gedung tinggi dalam melayani penggunanya. Elevator akan
melayani pengguna yang akan menuju ke atas dahulu sampai lantai tertinggi, baru
setelah itu dia berbalik arah menuju lantai terbawah sambil melayani
penggunanya yang akan turun atau sebaliknya. Jika melihat analogi yang seperti
itu maka dapat dikatakan head hanya melayani permintaan yang
berada di depan arah pergerakannya. Jika ada permintaan yang berada di belakang
arah geraknya, maka permintaan tersebut harus menunggu sampai head menuju
silinder di salah satu disk, lalu berbalik arah untuk melayani
permintaan tersebut.
Jika head sedang
melayani permintaan silinder 25, dan arah pergerakan disk arm-nya
sedang menuju ke silinder yang terkecil, maka permintaan berikutnya yang akan
dilayani secara berurutan adalah 20 dan 10 lalu menuju ke silinder 0. Setelah
sampai disini head akan berbalik arah menuju silinder yang
terbesar yaitu silinder 99. Dan dalam pergerakannya itu secara berurutan head akan
melayani permintaan 35, 45, 50, 65, 80, 85, dan 90. Sehingga total
pergerakan head-nya adalah 115 silinder.
Salah satu behavior yang
dimiliki oleh algoritma ini adalah, dia memiliki batas atas untuk total
pergerakanhead-nya, yaitu 2 kali jumlah silinder yang dimiliki
oleh disk. Jika dilihat dari cara kerjanya yang selalu menuju ke
silinder terujung, maka dapat dilihat kelemahan dari algoritma ini yaitu
ketidakefisienannya. Mengapa head harus bergerak ke silinder
0, padahal sudah tidak ada lagi permintaan yang lebih kecil dari silinder 10?.
Bukankah akan lebih efisien jika head langsung berbalik arah
setelah melayani permintaan silinder 10.
Penjadwalan SCAN
Kelemahan lain dari
algoritma SCAN adalah dapat menyebabkan permintaan lama menunggu pada
kondisi-kondisi tertentu. Misalkan penyebaran banyaknya permintaan yang ada
di queue tidak sama. Permintaan yang berada di depan arah
pergerakan head sedikit sedangkan yang berada di ujung satunya
lebih banyak. Maka head akan melayani permintaan yang lebih
sedikit (sesuai arah pergerakannya) dan berbalik arah jika sudah sampai di
ujung disk. Jika kemudian muncul permintaan baru di dekat head yang
terakhir, maka permintaan tersebut akan segera dilayani, sehingga permintaan
yang lebih banyak yang berada di ujung silinder yang satunya akan semakin
kelaparan. Jadi, mengapa head tidak melayani
permintaan-permintaan yang lebih banyak itu terlebih dahulu? Karena adanya
kelemahan inilah maka tercipta satu modifikasi dari algoritma SCAN, yaitu
C-SCAN yang akan dibahas berikutnya.
Algoritma C-SCAN
atau Circular SCAN merupakan hasil modifikasi dari SCAN untuk
mengurangi kemungkinan banyak permintaan yang menunggu untuk dilayani.
Perbedaan yang paling mendasar dari kedua algoritma ini adalah pada behavior saat
pergerakan head yang berbalik arah setelah sampai di
ujung disk. Pada C-SCAN, saat head sudah berada di
silinder terujung disk, head akan berbalik arah
dan bergerak secepatnya menuju silinder di ujung disk yang
satu lagi, tanpa melayani permintaan yang dilalui dalam pergerakannya.
Sedangkan pada SCAN akan tetap melayani permintaan saat bergerak berbalik arah
menuju ujung yang lain.
Untuk contoh
permintaan seperti SCAN, setelah head sampai di silinder 99
(permintaan silinder 35, 45, 50, 65, 80, 85 dan 90 telah dilayani secara
berurutan), maka head akan secepatnya menuju silinder 0 tanpa
melayani silinder 20 dan 10. Permintaan tersebut baru dilayani ketika head sudah
berbalik arah lagi setelah mencapai silinder 0.
Penjadwalan CSCAN