A. Klasifikasi Perangkat I/O
Pengolahan Perangkat Input/Output
merupakan pengolahan perangkat lunak yang mengatasi penggunaan perangkat
masukan dan keluaran. Pengelolaan perangkat I/O merupakan
aspek perancangan sistem operasi yang terluas karena beragamnya peralatan dan
begitu banyaknya aplikasi dari peralatan-peralatan itu.
Manajemen I/O mempunyai fungsi, di
antaranya:
·
Mengirim
perintah ke perangkat I/O agar menyediakan layanan.
·
Menangani
interupsi peralatan I/O
·
Menangani
kesalahan pada peralatan I/O
·
Memberi
interface ke pemakai.
Berdasarkan
sasaran komunikasi, klasifikasi perangkat I/O atau divice dibagi menjadi beberapa tipe. Tipe-tipe device
secara umum dibagi menjadi device
penyimpanan (disk, tape), transmission,
device (peralatan yang cocok untuk
komunikasi dengan peralatan-peralatan jarak jauh seperti modem) dan human-interface device (Peralatan yang terbaca oleh manusia seperti keyboard, mouse). Device- device
tersebut dikontrol oleh instruksi I/O.
Alamat-alamat yang dimiliki oleh device
akan digunakan oleh direct I/O
instruction dan memory-mapped
I/O .
Klasifikasi
lain yang dapat dilakukan terhadap peralatan I/O adalah berdasarkan unit
transfer yang dilakukan perangkat I/O, yaitu sbb:
a)
Perangkat berorientasi blok (block-oriented
devices) Peralatan mentransfer dari dan ke peralatan dengan satuan transfer adalah satu
blok (sekumpulan karakter) yant telah ditentukan.
b)
Perangkat berorientasi aliran karakter
(character-oriented devices) Peralatan mentransfer dari dan ke peralatan berupa
aliran karakter.
B. Teknik Pengoperasian Perangkat I/O
Teknik
Pengoperasian Perangkat I/O meliputi:
1)
Perangkat I/O terprogram (programmed I/O)
Merupakan perangkat I/O komputer yang dikontrol oleh
program. Contohnya, perintah mesin in, out, move. Perangkat I/O terprogram
tidak sesuai, untuk pengalihan data dengan kecepatan tinggi karena dua alasan
yaitu:
Ø Memerlukan
overhead (ongkos) yang tinggi, karena beberapa perintah program
harus dieksekusi untuk setiap kata data yang dialihkan antara peralatan eksternal dengan memori utama.
harus dieksekusi untuk setiap kata data yang dialihkan antara peralatan eksternal dengan memori utama.
Ø Banyak peralatan periferal kecepatan tinggi
memiliki mode operasi sinkron,
yaitu pengalihan data dikontrol oleh clock frekuensi tetap, tidak tergantung
CPU.
yaitu pengalihan data dikontrol oleh clock frekuensi tetap, tidak tergantung
CPU.
2)
Perangkat berkendalikan interupsi (Interrupt I/O)
Interupsi lebih dari sebuah mekanisme sederhana untuk
mengkoordinasi pengalihan I/O. Konsep interupsi berguna di dalam sistem operasi
dan pada banyak aplikasi kontrol di mana pemrosesan rutin tertentu harus diatur
dengan seksama,
a. Mekanisme Dasar Interupsi
Ketika CPU
mendeteksi bahwa sebuah controller
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 state terkini CPU --contohnya nilai
instruksi pointer, dan
memanggil interrupt handler agar
handler tersebut dapat melayani
controller atau alat yang
mengirim interupsi tersebut.
b. Fitur Tambahan pada Komputer Modern
Pada arsitektur komputer modern, 3 fitur disediakan oleh
CPU dan interrupt controller
(pada perangkat keras) untuk dapat menangani interrupsi dengan lebih bagus.
Fitur-fitur ini antara lain adalah kemampuan menghambat sebuah proses interrupt handling selama prosesi
berada dalam critical state,
efisiensi penanganan interupsi sehingga tidak perlu dilakukan polling untuk
mencari device yang mengirimkan
interupsi, dan fitur yang ketiga adalah adanya sebuah konsep multilevel interupsi sedemikian rupa
sehingga terdapat prioritas dalam penanganan interupsi (diimplementasikan
dengan interrupt priority level
system) .
c. 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 device controller
untuk meminta pelayanan CPU.
d. 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 interrupt
vector ).Tabel ini menyimpan alamat- alamat interrupt handler spesifik di dalam memori. Keuntu ngan dari
pemakaian vektor adalah untuk mengura ngi kebutuhan akan sebuah interrupt handler yang harus men cari
semua kemungkinan sumber interupsi untuk menemukan pengirim interupsi.
Akan tetapi, interrupt vector memiliki hambatan
karena pada kenyataannya, komputer yang ada memiliki device (dan interrupt
handler ) yang lebih banyak dibandingkan dengan jumlah alamat pada interrupt vector. Karena itulah,
digunakanlah teknik interrupt chaining
dimana setiap elemen dari interrupt
vector menunjuk / merujuk 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.
e. Penyebab Interupsi
Interupsi dapat disebabkan berbagai hal,
antara lain exception,page fault ,
interupsi yang diki- rimkan oleh device
controllers , dan system call
.Exception adalah suatu kondisi dimana terjadi sesuatu / dari sebuah
operasi didapat hasil tertentu yang dianggap khusus sehingga harus mendapat
perhatian lebih, contoh nya pembagian dengan 0 (nol), pengaksesan alamat memori
yang restricted atau bahkan
tidak valid, dan lain-lain. System
call adalah sebuah fungsi pada aplikasi (perangkat lunak) yang dapat mengeksekusikan
instruksi khusus berupa software
interrupt atau trap.
3)
DMA
(Direct Memory Address)
Merupakan suatu pendekatan alternatif yang digunakan
sebagai unit pengaturan khusus yang disediakan untuk memungkinkan pengalihan
blok data secara langsung antara peralatan eksternal dan memori utama tanpa
intervensi terus menerus oleh CPU.
a. Transfer DMA
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 / destinasi
transfer, dan jumlah byte yang ditransfer, ke memori. CPU kemudian
menuliskan alamat command block ini ke DMA controller, sehingga
DMA controller dapat kemudian mengoperasikan bus memori secara
langsung dengan menempatkan alamat-alamat pada bus tersebut untuk
melakukan trans fer tanpa bantuan CPU.
Tiga Langkah Dalam
Transfer DMA :
1.
Prosesor menyiapkan DMA transfer dengan menyedia kan data-data dari device , operasi yang akan ditampilkan, alamat memori yang menjadi
sumber dan tujuan data, dan banyaknya
byte yang di transfer.
2.
DMA controller memulai operasi
(menyiapkan bus, menyediakan alamat,
menulis dan membaca data), sampai
seluruh blok sudah di transfer.
3.
DMA controller meng-interupsi
prosesor, dimana selanjutnya akan
ditentukan tindakan berikutnya.
Pada dasarnya, DMA mempunyai dua metode yang berbeda
dalam mentransfer data. Metode yang pertama adalah metode yang sangat baku dan
simple disebut HALT, atau Burst Mode DMA, karena DMA controller
memegang kontrol dari sistem bus dan men-transfer semua blok data ke atau dari
memori pada single burst . Selagi transfer masih dalam progres, 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,
mengikutsertakan DMA controller 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 DMA controller
harus mempunyai kepintaran untuk merasakan waktu pada saat sistem bus terbuka.
b. Handshaking
Proses handshaking
antara DMA controller dan device controller dilakukan melalui
sepasang kabel yang disebut DMA- request dan DMA- acknowledge.
Device controller mengirimkan sinyal melalui DMA- request ketika akan
mentransfer data sebanyak satu word . Hal ini kemudian akan
mengakibatkan DMA controller memasukkan alamat- alamat yang dinginkan ke
kabel alamat memori, dan mengirimkan sinyal melalui kabel DMA- acknowledge.
Setelah sinyal melalui kabel DMA- acknowledge diterima, device
controller mengirimkan data yang dimaksud dan mematikan sinyal pada DMA-request
.
Hal ini
berlangsung berulang-ulang sehingga disebut handshaking . Pada saat DMA controller
mengambil alih memori, CPU sementara tidak dapat mengakses memori (dihalangi),
walaupun masih dapat mengaksees data pada cache primer dan sekunder. Hal ini
disebut cycle stealing, yang walaupun memperlambat komputasi CPU, tidak
menurunkan kinerja karena memindahkan pekerjaan data transfer ke DMA controller
meningkatkan performa sistem secara keseluruhan.
c. 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 adalah dapat mendukung transfer antara dua memory
mapped device tanpa intervensi CPU.
C. Penanganan Permintaan I/O
Sistem Operasi
yang modern mendapatkan fleksibilitas yang signifikan dari tahapan-tahapan
tabel lookup di jalur diantara
permintaan dan physical device
controller. Kita dapat mengenalkan devicedan 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 piranti keras untuk menentukan device apa yang ada, kemudian sistem
me-load ke dalam driver yang sesuai; baik sesegera
mungkin, maupun 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 device, dan nol atau lebih stream modules diantara 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.
1.
Sebuah
proses mengeluarkan sebuah blocking
read system call ke sebuah file
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
dijadwalkan. 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 menjadwalkan I/O. Pada akhirnya, driver mengirim perintah
ke device controller
dengan menulis ke register device control.
5.
Device controller mengoperasikan piranti
keras device 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 meggunakan interupsi
ketika trans- fer selesai.
7.
Interrupt handler yang sesuai mene-
rima 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 penjadwal (scheduler) mengembalikan
proses ke CPU, proses meneruskan eksekusi pada penyelesaian dari system
call.
D. 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.
E. 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.
a) 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.
b. 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.
c. 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.
d. 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.
e. 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.
f. 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.
Tidak ada komentar:
Posting Komentar