1. Pengertian
Starvation
Perkembangan sistem komputer mendatang adalah menuju ke sistem multi-processing,
multiprogramming, terdistribusi dan paralel yang mengharuskan adanya proses-proses yang berjalan bersama dalam waktu yang bersamaan. Hal
demikian merupakan masalah yang perlu perhatian dari perancang sistem operasi. Kondisi dimana pada saat yang bersamaan
terdapat lebih dari satu proses disebut dengan
kongkurensi (proses-proses yang kongkuren). Dan dalam kongruensi ini pasti ada
masalah yang salah satunya adalah STARVATION. Starvation adalah kondisi yang
biasanya terjadi setelah deadlock. Proses yang kekurangan resource (karena
terjadi deadlock) tidak akan pernah mendapat resource yang
dibutuhkan sehingga mengalami starvation (kelaparan).Ilustrasi
starvation dengan deadlock seperti pada gambar di bawah ini.
Dalam kasus diatas,
antrian di sebelah kiri menunggu antrian kanan untuk mengosongkan jembatan (resource), begitu juga
dengan antrian kanan. Akhirnya tidak terjadi kemajuan dalam kerja dua antrian
tersebut.Misal ada proses A mempunyai resource
X, proses B mempunyai resource
Y. Kemudian kedua proses ini dijalankan bersama, proses A memerlukan resource Y dan proses B
memerlukan resource
X, tetapi kedua proses tidak akan memberikan resource
yang dimiliki sebelum proses dirinya sendiri selesai dilakukan. Sehingga akan
terjadi tunggu-menunggu.
Namun, starvation juga bisa terjadi tanpa deadlock. Hal ini ketika terdapat kesalahan dalam sistem sehingga terjadi ketimpangan dalam pembagian resouce. Satu proses selalu mendapat resource, sedangkan proses yang lain tidak pernah mendapatkannya. Ilustrasi starvation tanpa deadlock di dunia nyata dapat dilihat di bawah ini. Pada gambar di bawah ini:
Namun, starvation juga bisa terjadi tanpa deadlock. Hal ini ketika terdapat kesalahan dalam sistem sehingga terjadi ketimpangan dalam pembagian resouce. Satu proses selalu mendapat resource, sedangkan proses yang lain tidak pernah mendapatkannya. Ilustrasi starvation tanpa deadlock di dunia nyata dapat dilihat di bawah ini. Pada gambar di bawah ini:
pada
antrian kanan terjadi starvation karena resource (jembatan) selalu
dipakai oleh antrian kiri, dan antrian kanan tidak mendapatkan giliran. Jika dua proses ingin mengakses satu sumber daya tunggal maka sistem
operasi mengalokasikan untuk salah satu proses dan mengharuskan proses lain
menunggu. Proses yang ditolak pengaksesan menjadi melambat. Jika terlalu parah
maka proses di-blocked terus-menerus sehingga tidak pernah mengakses sumber
daya. Proses tidak pernah dapat berakhir dengan suskses.
Dalam beberapa cara Starvation dapat diselsaikan dengan sumber daya yang dialokasikan dengan dengan melibatkan sistem operasi, dengan pengendaliain persaingan ini proses-proses seperti ini akan teratasi. Kerjasama ini meliputi sistem operasi yang saling berinteraksi tanpa dinyatakan dengan eksplisit. Sistem operasi ini sudah terprogram melalui sistem call jadi antara proses satu dengan yang lain tidak ada pembedaan yang mengakibatkan persaingan antara proses-proses tersebut. Program ini sudah dimasukkan dalam sistem operasi yang sudah sesuai dengan mutual exclusion.
Starvation dapat terjadi pada proses penjadwalan yang menggunakan prinsip “proses yang paling cepat diselesaikan didahulukan”, seperti pada Shortest Job First (SJF) dan Penjadwalan Prioritas.
Logikanya, jika kita mempunyai banyak kebutuhan, kita akan memilahnya mana yang didahulukan berdasarkan sesuatu. Setelah kita selesai menyusunnya, ternyata ada kebutuhan lain yang datang (misalkan kebutuhan A) dan ternyata kebutuhan itu mengalahkan salah satu kebutuhan kita. Sebelum kebutuhan A terpenuhi, datang lagi kebutuhan lain yang mengalahkan kebuthan awal. Jika hal ini terjadi secara terus menerus, maka ada kebuthan awal kita yang tidak terpenuhi (starvation).
Contoh nyatanya, pada kehidupan mahasiswa. Seorang mahasiswa telah memiliki 3 tugas dan ingin juga menonton film baru. Mahasiswa tersebut mendahulukan menyelesaikan tugas dibandingkan menonton. Sebelum ketiga tugas tersebut selesai, dosen lain memberinya tugas baru. Keesokan harinya ada tugas dari asisten untuk praktikum berikutnya. Ketika tugas satu belum selesai, sudah ada tugas lain dari dosen atau asisten. Hal ini terus berulang, sehingga keinginan mahasiswa tersebut untuk menonton film baru bisa tidak terlaksana atau tidak terpenuhi.
3. Mengatasi Starvation
Dalam beberapa cara Starvation dapat diselsaikan dengan sumber daya yang dialokasikan dengan dengan melibatkan sistem operasi, dengan pengendaliain persaingan ini proses-proses seperti ini akan teratasi. Kerjasama ini meliputi sistem operasi yang saling berinteraksi tanpa dinyatakan dengan eksplisit. Sistem operasi ini sudah terprogram melalui sistem call jadi antara proses satu dengan yang lain tidak ada pembedaan yang mengakibatkan persaingan antara proses-proses tersebut. Program ini sudah dimasukkan dalam sistem operasi yang sudah sesuai dengan mutual exclusion.
2. Algoritma Starvation
Starvation dapat terjadi pada proses penjadwalan yang menggunakan prinsip “proses yang paling cepat diselesaikan didahulukan”, seperti pada Shortest Job First (SJF) dan Penjadwalan Prioritas.
Logikanya, jika kita mempunyai banyak kebutuhan, kita akan memilahnya mana yang didahulukan berdasarkan sesuatu. Setelah kita selesai menyusunnya, ternyata ada kebutuhan lain yang datang (misalkan kebutuhan A) dan ternyata kebutuhan itu mengalahkan salah satu kebutuhan kita. Sebelum kebutuhan A terpenuhi, datang lagi kebutuhan lain yang mengalahkan kebuthan awal. Jika hal ini terjadi secara terus menerus, maka ada kebuthan awal kita yang tidak terpenuhi (starvation).
Contoh nyatanya, pada kehidupan mahasiswa. Seorang mahasiswa telah memiliki 3 tugas dan ingin juga menonton film baru. Mahasiswa tersebut mendahulukan menyelesaikan tugas dibandingkan menonton. Sebelum ketiga tugas tersebut selesai, dosen lain memberinya tugas baru. Keesokan harinya ada tugas dari asisten untuk praktikum berikutnya. Ketika tugas satu belum selesai, sudah ada tugas lain dari dosen atau asisten. Hal ini terus berulang, sehingga keinginan mahasiswa tersebut untuk menonton film baru bisa tidak terlaksana atau tidak terpenuhi.
3. Mengatasi Starvation
Ada beberapa cara untuk mengatasi Starvation,
salah satunya dengan Aging. Pada flowchart di atas, proses awal yang ada diberi
urutan ( N ) pemrosesan dengan rumus N = ( P+T ) / P. N maksimum akan mulai
dikerjakan dan proses yang lain dinaikkan tingkat urutan prosesnya agar nanti
jika ada proses lain yang masuk, proses terdahulu mendapatkan bagian resource dan dapat
dikerjakan. Jika ada beberapa proses yang memiliki N maksimum, maka diantara
proses tersebut dilihat dari waktu yang dibutuhkan untuk menyelesaikannya. Jika
masih sama juga, maka dilihat waktu kedatangannya.
Selain itu, Starvation juga
dapat diatasi dengan pemrosesan dengan cara Round Robin. Pada Round Robin,
proses yang masuk akan dimasukkan ke dalam antrian menurut kedatangan proses
tersebut. Dalam penyelesainnya, suatu proses tidak akan langsung selesai jika
waktu yang dibutuhkan melebihi waktu kuantum yang diberikan. Waktu kuantum
adalah waktu yang diberikan untuk menyelesaikan suatu proses. Ketika sutu
proses telah mencapai batas waktu kuantum, sisa dari proses tersebut
dikembalikan ke antrian
paling belakang dan resource dipindahkan ke proses selanjutnya. Dengan cara
ini, semua proses yang mengantri, akan mendapatkan resource secara bergantian (
tidak ada proses yang memonopoli resource ) sehingga semua proses dapat
diselesaikan.