Penggabungan Thread Thread Java

Bab 13. Konsep Penjadwalan

13.1. Pendahuluan

Kita mengenal istilah multiprograming, yang bertujuan untuk memaksimalkan penggunaan CPU dengan cara mengatur alokasi waktu yang digunakan oleh CPU, sehingga proses berjalan sepanjang waktu dan memperkecil waktu idle. Akibatnya sistem operasi dapat membuat komputer lebih produktif. Oleh karena itu perlu adanya penjadwalan proses-proses yang ada pada sistem. Penjadwalan CPU adalah suatu proses pengaturan atau penjadwalan proses-proses yang ada di dalam komputer. Dimana proses-proses tersebut berjalan dalam pola yang disebut Siklus Burst yang akan dijelaskan pada bab ini. Penjadwalan CPU secara garis besar dibagi menjadi 2, yaitu Penjadwalan Preemptive dan Penjadwalan Non Preemptive. Bab ini juga akan memaparkan mengenai kriteria yang baik bagi suatu konsep penjadwalan dan penjelasan mengenai dispatcher, yaitu suatu komponen yang turut terlibat dalam penjadwalan. Penjadwalan sangat penting dalam menentukan performance sebuah komputer karena mengatur alokasi resource dari CPU untuk menjalankan proses-proses di dalam komputer. Penjadwalan CPU merupakan suatu konsep dasar dari multiprograming, karena dengan adanya penjadwalan dari CPU itu sendiri maka proses-proses tersebut akan mendapatkan alokasi resource dari CPU.

13.2. Siklus Burst CPU – MK

Keberhasilan dari penjadwalan CPU tergantung dari beberapa properti prosesor. Pengeksekusian dari proses tersebut terdiri atas siklus CPU ekskusi dan MK Wait. Proses hanya akan bolak-balik dari dua state ini, inilah yang disebut Siklus Burst CPU-MK. Pengeksekusian proses dimulai dengan Burst CPU, setelah itu diikuti oleh Burst MK, kemudian Burst CPU lagi lalu Burst MK lagi, dan seterusnya dilakukan secara bergiliran. Burst CPU terakhir akan berakhir dengan permintaan sistem untuk mengakhiri pengeksekusian melalui Burst MK lagi. Kejadian siklus Burst akan dijelaskan pada Figure 13.1. Gambar 13.1. Siklus Burst 91 Dari gambar dapat kita lihat bahwa Burst CPU time yang lama jarang terjadi karena kebanyakan proses akan melakukan antara output ke layar atau file, maupun meminta input dari user atau file sehingga situasi dimana proses bekerja dengan memory dan register dalam jangka waktu lama tidak terlalu banyak ditemukan.

13.3. Penjadwalan Preemptive

Penjadwalan CPU mungkin akan dijalankan ketika proses dalam keadaan: 1. Berubah dari running ke waiting state. 2. Berubah dari running ke ready state. 3. Berubah dari waiting ke ready state. 4. Dihentikan. Penjadwalan Preemptive mempunyai arti kemampuan sistem operasi untuk memberhentikan sementara proses yang sedang berjalan untuk memberi ruang kepada proses yang prioritasnya lebih tinggi. Penjadwalan ini bisa saja termasuk penjadwalan proses atau MK. Penjadwalan Preemptive memungkinkan sistem untuk lebih bisa menjamin bahwa setiap proses mendapat sebuah slice waktu operasi. Dan juga membuat sistem lebih cepat merespon terhadap event dari luar contohnya seperti ada data yang masuk yang membutuhkan reaksi cepat dari satu atau beberapa proses. Membuat penjadwalan yang Preemptive mempunyai keuntungan yaitu sistem lebih responsif daripada sistem yang memakai penjadwalan Non Preemptive. Dalam waktu-waktu tertentu, proses dapat dikelompokkan ke dalam dua kategori: proses yang memiliki Burst MK yang sangat lama disebut IO Bound, dan proses yang memiliki Burst CPU yang sangat lama disebut CPU Bound. Terkadang juga suatu sistem mengalami kondisi yang disebut busywait, yaitu saat dimana sistem menunggu request input seperti disk, keyboard, atau jaringan. Saat busywait tersebut, proses tidak melakukan sesuatu yang produktif, tetapi tetap memakan resource dari CPU. Dengan penjadwalan Preemptive, hal tersebut dapat dihindari. Dengan kata lain, penjadwalan Preemptive melibatkan mekanisme interupsi yang menyela proses yang sedang berjalan dan memaksa sistem untuk menentukan proses mana yang akan dieksekusi selanjutnya. Penjadwalan nomor 1 dan 4 bersifat Non Preemptive sedangkan lainnya Preemptive. Penjadwalan yang biasa digunakan sistem operasi dewasa ini biasanya bersifat Preemptive. Bahkan beberapa penjadwalan sistem operasi, contohnya Linux 2.6, mempunyai kemampuan Preemptive terhadap system call-nya preemptible kernel. Windows 95, Windows XP, Linux, Unix, AmigaOS, MacOS X, dan Windows NT adalah beberapa contoh sistem operasi yang menerapkan penjadwalan Preemptive. Lama waktu suatu proses diizinkan untuk dieksekusi dalam penjadwalan Preemptive disebut time slicequantum. Penjadwalan berjalan setiap satu satuan time slice untuk memilih proses mana yang akan berjalan selanjutnya. Bila time slice terlalu pendek maka penjadwal akan memakan terlalu banyak waktu proses, tetapi bila time slice terlau lama maka memungkinkan proses untuk tidak dapat merespon terhadap event dari luar secepat yang diharapkan.

13.4. Penjadwalan Non Preemptive

Penjadwalan Non Preemptive ialah salah satu jenis penjadwalan dimana sistem operasi tidak pernah melakukan context switch dari proses yang sedang berjalan ke proses yang lain. Dengan kata lain, proses yang sedang berjalan tidak bisa di- interupt. Penjadwalan Non Preemptive terjadi ketika proses hanya: 1. Berjalan dari running state sampai waiting state. 2. Dihentikan. Ini berarti CPU menjaga proses sampai proses itu pindah ke waiting state ataupun dihentikan proses tidak diganggu. Metode ini digunakan oleh Microsoft Windows 3.1 dan Macintosh. Ini adalah metode yang dapat digunakan untuk platforms hardware tertentu, karena tidak memerlukan perangkat keras khusus misalnya timer yang digunakan untuk menginterupt pada metode penjadwalan Preemptive. 92