PENJADWALAN PROSES
Tujuan
dari multiprogramming adalah untuk memiliki sejumlah proses yang berjalan pada
sepanjang waktu, untuk memaksimalkan penggunaan CPU.
Tujuan
dari pembagian waktu adalah untuk mengganti CPU diantara proses-proses yang
begitu sering sehingga pengguna dapat berinteraksi dengan setiap program sambil
CPU bekerja. Untuk sistem uniprosesor, tidak akan ada lebih dari satu proses
berjalan. Jika ada proses yang lebih dari itu, yang lainnya akan harus menunggu
sampai CPU bebas dan dapat dijadualkan kembali.
I.1. Penjadualan
Antrian (Scheduling Queue)
Ketika
proses memasuki sistem, mereka diletakkan dalam antrian job. Antrian ini
terdiri dari seluruh proses dalam sistem. Proses yang hidup pada memori utama
dan siap dan menunggu/ wait untuk mengeksekusi disimpan pada sebuah daftar
bernama ready queue. Antrian ini biasanya disimpan sebagai daftar penghubung.
Sebuah header ready queue berisikan penunjuk kepada PCB-PCB awal dan akhir.
Setiap PCB memiliki pointer field yang menunjukkan proses selanjutnya dalam
ready queue.
Juga ada antrian lain dalam sistem. Ketika
sebuah proses mengalokasikan CPU, proses tersebut berjalan/bekerja sebentar
lalu berhenti, di interupsi, atau menunggu suatu kejadian tertentu, seperti penyelesaian suatu permintaan I/O.
Pada kasus ini sebuah permintaan I/O, permintaan seperti itu mungkin untuk
sebuah tape drive yang telah diperuntukkan, atau alat yang berbagi, seperti
disket. Karena ada banyak proses dalam sistem, disket bisa jadi sibuk dengan
permintaan I/O untuk proses lainnya. Maka proses tersebut mungkin harus
menunggu untuk disket tersebut. Daftar dari proses yang menunggu untuk
peralatan I/O tertentu disebut sebuah device queue. Tiap peralatan memiliki
device queuenya sendiri (Lihat Gambar 3.4).
Gambar 3.4. Device Queue
Reprensentasi
umum untuk suatu diskusi mengenai penjadualan proses adalah diagram antrian, seperti pada
Gambar 5. Setiap kotak
segi empat menunjukkan sebuah antrian. Dua tipe antrian menunjukan
antrian yang siap dan suatu perangkat device queues. Lingkaran menunjukkan
sumber-sumber yang melayani sistem. Sebuah proses baru pertama-tama ditaruh
dalam ready queue. Lalu menunggu dalam ready queue sampai proses tersebut
dipilih untuk dikerjakan/lakukan atau di dispatched. Begitu proses tersebut mengalokasikan CPU
dan menjalankan/ mengeksekusi,
satu dari beberapa kejadian dapat
terjadi.
·
Proses
tersebut dapat mengeluarkan sebuah permintaan I/O, lalu di tempatkan dalam
sebuah antrian I/O.
·
Proses tersebut
dapat membuat subproses
yang baru dan
menunggu terminasinya sendiri.
·
Proses
tersebut dapat digantikan secara paksa dari CPU, sebagai hasil dari suatu
interupsi, dan diletakkan kembali dalam ready queue.
Gambar
3.5. Diagram Antrian
I.2. Penjadwal
/ Scheduler
Sebuah proses
berpindah antara berbagai
penjadualan antrian selama
umur hidupnya. Sistem operasi harus
memilih, untuk keperluan penjadualan, memproses antrian-antrian ini dalam cara
tertentu. Pemilihan proses dilaksanakan oleh penjadual yang tepat/ cocok. Dalam
sistem batch, sering ada lebih banyak proses yang diserahkan daripada yang
dapat dilaksanakan segera. Proses ini dipitakan/ disimpan pada suatu alat
penyimpan masal (biasanya disket), dimana proses tersebut disimpan untuk
eksekusi dilain waktu. Penjadualan long term, atau penjadual job, memilih
proses dari pool ini dan mengisinya kedalam memori eksekusi.
Sebuah
proses dapat mengeksekusi
untuk hanya beberapa
milidetik sebelum menunggu permintaan
I/O. Seringkali, penjadualan shorterm mengeksekusi paling sedikit sekali setiap 100
milidetik. Karena durasi waktu
yang pendek antara
eksekusi, penjadualan shorterm haruslah cepat. Jika memerlukan 10 mili
detik untuk menentukan suatu proses eksekusi selama 100 mili detik, maka
10/(100 + 10) = 9 persen CPU sedang digunakan (terbuang) hanya untuk pekerjaan
penjadualan.
Penjadualan longterm pada sisi lain,
mengeksekusi jauh lebih sedikit. Mungkin ada beberapa menit antara pembuatan
proses baru dalam sistem. Penjadualan longterm mengkontrol derajat
multiprogramming (jumlah
proses dalam memori).
Jika derajat multiprogramming
stabil, lalu tingkat rata-rata dari penciptaan proses harus sama dengan tingkat
kepergian rata rata dari proses yang meninggalkan sistem. Maka penjadwalan
longterm mungkin diperlukan untuk dipanggil hanya ketika suatu proses
meninggalkan sistem. Karena interval yang lebih panjang antara eksekusi,
penjadualan longterm dapat memakai waktu yang lebih lama untuk menentukan
proses mana yang harus dipilih untuk dieksekusi.
Adalah
penting bagi penjadualan longterm membuat seleksi yang hati-hati. Secara umum, kebanyakan
proses dapat dijelaskan sebagai I/O bound atau CPU bound. Sebuah proses
I/O bound adalah salah
satu yang membuang
waktunya untuk mengerjakan I/O
dari pada melakukan perhitungan. Suatu proses CPU-bound, pada sisi lain, adalah
salah satu yang jarang menghasilkan permintaan I/O, menggunakan lebih banyak
waktunya melakukan banyak komputasi daripada yang digunakan oleh proses I/O
bound. Penting untuk penjadualan longterm memilih campuran proses yang baik
antara proses I/O bound dan CPU bound. Jika seluruh proses adalah I/O bound,
ready queue akan hampir selalu kosong, dan penjadualan short term akan memiliki
sedikit tugas. Jika seluruh proses adalah CPU bound, I/O waiting queue akan
hampir selalu kosong, peralatan akan tidak terpakai, dan sistem akan menjadi
tidak imbang. Sistem dengan kinerja yang terbaik akan memiliki kombinasi proses
CPU bound dan I/O bound.
Gambar 3.6.Penjadual
Medium-term.
Pada
sebagian sistem, penjadual long term dapat tidak turut serta atau minimal.
Sebagai contoh, sistem time-sharing seperti UNIX sering kali tidak memiliki
penjadual long term. Stabilitas sistem-sistem ini bergantung pada keterbatasan
fisik (seperti jumlah terminal yang ada) atau pada penyesuaian sendiri secara alamiah
oleh manusia sebagai pengguna. Jika kinerja
menurun pada tingkat yang
tidak dapat diterima, sebagian pengguna akan berhenti.
Sebagian sistem
operasi, seperti sistem
time sharing, dapat
memperkenalkan sebuah tambahan, penjadualan tingkat
menengah. Penjadual medium-term
ini digambarkan pada Gambar 6. Ide utama/kunci dibelakang sebuah
penjadual medium term adalah kadang kala akan menguntungkan untuk memindahkan proses
dari memori (dan dari pengisian
aktif dari CPU),
dan maka untuk
mengurangi derajat dari multiprogramming. Dikemudian waktu,
proses dapat diperkenalkan kedalam memori dan eksekusinya dapat dilanjutkan
dimana proses itu di tinggalkan/ diangkat. Skema ini disebut swapping. Proses
di swapped out, dan lalu di swapped in, oleh penjadual jangka menengah.
Swapping mungkin perlu untuk meningkatkan pencampuran proses, atau karena suatu
perubahan dalam persyaratan
memori untuk dibebaskan.
Swapping dibahas pada bab selanjutnya.
I.3. Alih
Konteks / Switch Context
Mengganti CPU ke proses lain memerlukan penyimpanan suatu
keadaan proses lama (state of old process) dan kemudian beralih ke proses yang
baru. Tugas tersebut diketahui sebagai alih konteks (context switch). Alih
konteks sebuah proses digambarkan dalam PCB
suatu proses; termasuk nilai dari CPU register, status proses (lihat
Gambar 7). dan informasi managemen memori. Ketika alih konteks terjadi, kernel menyimpan
konteks dari proses lama kedalam PCB nya dan mengisi konteks yang telah
disimpan dari process baru yang telah terjadual untuk berjalan. Pergantian
waktu konteks adalah murni overhead, karena sistem melakukan pekerjaan yang
tidak perlu. Kecepatannya bervariasi dari mesin ke mesin, bergantung pada kecepatan
memori, jumlah register yang harus di copy, dan keberadaan instruksi khusus
(seperti instruksi tunggal untuk mengisi atau menyimpan seluruh register).
Tingkat kecepatan umumnya berkisar antara 1 sampai 1000 mikro detik.
Gambar
7. Alih Konteks
Waktu
alih konteks sangat begantung pada dukungan perangkat keras. Sebagai contoh,
prosesor seperti UltraSPARC menyediakan dua rangkap register. Sebuah alih konteks
hanya memasukkan perubahan pointer ke perangkat register yang ada. Tentu
saja, jika ada
lebih proses-proses aktif yang
ada dari pada yang ada di perangkat register, sistem menggunakan bantuan untuk
meng-copy data register pada dan dari memori, sebagaimana sebelumnya. Semakin
sistem operasi kompleks, makin banyak pekerjaan yang harus dilakukan selama
alih konteks. Sebagaimana dilihat pada Bab 4, teknik managemen memori tingkat lanjut dapat
mensyaratkan data tambahan untuk diganti dengan tiap konteks. Sebagai contoh,
ruang alamat dari proses yang ada harus dijaga sebagai ruang pada pekerjaan
berikutnya untuk digunakan. Bagaimana ruang alamat di jaga, berapa banyak
pekerjaan dibutuhkan untuk menjaganya, tergantung pada metoda managemen memori
dari sistem operasi. Alih konteks telah
menjadi suatu keharusan, bahwa
programmer menggunakan struktur (threads) untuk menghindarinya kapan pun
memungkinkan.
Gambar
3.8. Pohon Proses