Wednesday, April 25, 2012

Penjadwalan Komputer


Penjadwalan adalah fungsi dasar dari suatu sistem operasi. Hampir semua sumber komputer dijadwal sebelum digunakan. CPU salah satu sumber dari komputer yang penting yang menjadi sentral dari sentral penjadwal di sistem operasi. Dalam suatu sistem operasi, operasi yang membuat pilihan dinamakan scheduler (penjadwalan), sedangkan algoritma yang digunakan dinamakan schedulling algorithm (algoritma 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.

Dalam suatu sistem operasi, operasi yang membuat pilihan dinamakan scheduler (penjadwalan), sedangkan algoritma yang digunakan dinamakan schedulling algorithm (algoritma penjadwalan)[1]. Penjadwalan atau scheduling adalah sebuah metode dalam sistem operasi yang mengatur proses-proses yang akan berjalan dalam suatu sistem operasi[1]. Hal ini sangat diperlukan karena pada saat ini komputer berbasiskan multiprogramming. Multiprogramming 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 system[1]. Penjadwalan CPU adalah suatu proses pengaturan atau penjadwalan proses-proses yang ada di dalam computer[1]. Dimana proses-proses tersebut berjalan dalam pola yang disebut Siklus Burst[2]. Keberhasilan dari penjadwalan CPU tergantung dari beberapa properti prosesor. Pengeksekusian dari proses tersebut terdiri atas siklus CPU ekskusi dan I/O Wait[2]. Proses hanya akan bolak-balik dari dua state ini, inilah yang disebut Siklus Burst CPU-I/O. Jika dalam suatu proses Burst CPU jauh lebih besar daripada Burst I/O maka disebut CPU Bound. Demikian juga sebaliknya disebut dengn I/O Bound. [2]

Penjadwalan CPU mungkin akan dijalankan ketika proses dalam keadaan: berubah dari running ke waiting state, berubah dari running ke ready state, berubah dari waiting ke ready state atau terminates. Proses running ke waiting state dan  terminates adalah  proses Non Preemptive, dimana proses tersebut tidak bisa di- interrupt, sedangkan proses running ke ready state dan waiting ke ready state adalah proses Preemptive, dimana proses boleh di interrupt. [3]

Bagian dari sistem Komponen yang lain yang terlibat dalam penjadwalan CPU adalah dispatcher. Dispatcher adalah modul yang memberikan kontrol CPU kepada proses yang sedang terjadwal. Fungsinya adalah sebagai Context switching yaitu mengganti state dari suatu proses dan mengembalikannya untuk menghindari monopoli CPU time. Context switching dilakukan untuk menangani suatu interrupt (misalnya menunggu waktu I/O)[2]. Untuk menyimpan state dari proses-proses yang terjadwal sebuah Process Control Block harus dibuat untuk mengingat proses-proses yang sedang diatur schedule[2]r. Selain state suatu proses, PCB juga menyimpan process ID, program counter(posisi saat ini pada program), prioritas proses dan data-data tambahan lainnya. Fungsi lain dari dispatcher adalah sebagai Switching to user mode dari kernel mode dan lompat dari suatu bagian di progam user untuk mengulang program. Waktu yang diperlukan oleh dispatcher untuk menghentikan suatu proses dan memulai proses yang lain disebut dengan dispatch latency[2].

A.       Tipe Penjadwalan
Terdapat 3 tipe penjadwal berada secara bersama-sama pada sistem operasi yangm kompleks, yaitu:
1.         Penjadwal jangka pendek (short term scheduller)
          Bertugas menjadwalkan alokasi pemroses di antara proses-proses ready di memori utama. Penjadwalan dijalankan setiap terjadi pengalihan proses untuk memilih proses berikutnya yang harus dijalankan[3].
2.         Penjadwal jangka menengah (medium term scheduller)
          Setelah eksekusi selama suatu waktu, proses mungkin menunda sebuah eksekusi karena membuat permintaan layanan masukan/keluaran atau memanggil suatu system call. Proses-proses tertunda tidak dapat membuat suatu kemajuan menuju selesai sampai kondisi-kondisi yang menyebabkan tertunda dihilangkan. Agar ruang memori dapat bermanfaat, maka proses dipindah dari memori utama ke memori sekunder agar tersedia ruang untuk proses-proses lain. Kapasitas memori utama terbatas untuk sejumlah proses aktif[3].
          Aktivitas pemindahan proses yang tertunda dari memori utama ke memori sekunder disebut swapping. Proses-proses mempunyai kepentingan kecil saat itu sebagai proses yang tertunda. Tetapi, begitu kondisi yang membuatnya tertunda hilang dan proses dimasukkan kembali ke memori utama dan ready[3].
3.         Penjadwal jangka panjang (long term scheduller)
          Penjadwal ini bekerja terhadap antrian batch dan memilih batch berikutnya yang harus dieksekusi. Batch biasanya adalah proses-proses dengan penggunaan sumber daya yang intensif (yaitu waktu pemroses, memori, perangkat masukan/keluaran), program-program ini berprioritas rendah, digunakan sebagai pengisi (agar pemroses sibuk) selama periode aktivitas job-job interaktif rendah[3].
B.       Strategi penjadwalan
Terdapat dua strategi penjadwalan, yaitu :
1.         Penjadwalan nonpreemptive (run to completion)
Proses diberi jatah waktu oleh pemroses, maka pemroses tidak dapat diambil alih oleh proses lain sampai proses itu selesai[3].
2.         Penjadwalan preemptive
Proses diberi jatah waktu oleh pemroses, maka pemroses dapat diambil alih proses lain, sehingga proses disela sebelum selesai dan harus dilanjutkan menunggu jatah waktu pemroses tiba kembali pada proses itu. Berguna pada sistem dimana proses-proses yang mendapat perhatian/tanggapan pemroses secara cepat, misalnya :
a.         Pada sistem realtime, kehilangan interupsi (tidak layani segera) dapat
berakibat fatal[3].
Pada sistem interaktif, agar dapat menjamin waktu tanggap yang memadai. Penjadwalan secara preemptive baik tetapi harus dibayar mahal. Peralihan proses memerlukan overhead (banyak tabel yang dikelola). Supaya efektif, banyak proses harus berada di memori utama sehingga proses-proses tersebut dapat segera running begitu diperlukan. Menyimpan banyak proses tak running benar-benar di memori utama merupakan suatu overhead tersendiri[3].

Penjadwalan berkaitan dengan permasalahan memutuskan proses mana yang akan dilaksanakan dalam suatu sistem. Proses yang belum mendapat jatah alokasi dari CPU akan mengantri di ready queue. Algoritma penjadwalan berfungsi untuk menentukan proses manakah yang ada di ready queue yang akan dieksekusi oleh CPU.  Terdapat berbagai macam algoritma, antara lain:

a.       First Come First Serve. Algoritma ini mendahulukan proses yang lebih dulu datang. Kelemahannya, waiting time rata-rata cukup lama.
b.      Shortest Job First. Algoritma ini mendahulukan proses dengan CPU burst terkecil sehingga akan mengurangi waiting time rata-rata.
c.       Priority Scheduling. Algoritma ini mendahulukan prioritas terbesar. Kelemahannya, prioritas kecil tidak mendapat jatah CPU Hal ini dapat diatasi dengan aging yaitu semakin lama lama menunggu, prioritas semakin tinggi.
d.      Round Robin. Algoritma ini menggilir proses-proses yang ada diantrian dengan jatah time quantum yang sama. Jika waktu habis, CPU dialokasikan ke proses selanjutnya.
e.       Multilevel Queue. Algoritma ini membagi beberapa antrian yang akan diberi prioritas berdasarkan tingkatan. Tingkatan lebih tinggi menjadi prioritas utama.
f.       Multilevel Feedback Queue. Pada dasarnya sama dengan Multilevel Queue, yang membedakannya adalah pada algoritma ini diizinkan untuk pindah antrian.

Keenam algoritma penjadwalan memiliki karakteristik beserta keunggulan dan kelemahannya masing-masing. Namun, Multilevel Feedback Queue Scheduling sebagai algoritma yang paling kompleks, adalah algoritma yang paling banyak digunakan saat ini[3].
Preemptive, menggunakan konsep :
a.         RR (Round Robin).
Merupakan Penjadwalan yang paling tua, sederhana, adil,banyak digunakan algoritmanya,dan mudah diimplementasikan. Penjadwalan ini bukan dipreempt oleh proses lain tetapi oleh penjadwal,berdasarkan lama waktu berjalannya proses (preempt by time). Berasumsi bahwa semua proses memiliki kepentingan yang sama, sehingga tidak ada prioritas tertentu. Semua proses dianggap penting sehingga diberi sejumlah waktu oleh pemroses yang disebut kwanta (quantum) atau time slice dimana proses itu berjalan. Jika proses masih running sampai akhir quantum, maka CPU akan mempreempt proses itu dan memberikannya ke proses lain[4].
b.        SRF (Shortest Remaining First).
            Penjadwalan berprioritas.dinamis. yang  preemptive untuk timesharing serta melengkapi SJF. Pada SRF, proses dengan sisa waktu jalan diestimasi terendah dijalankan, termasuk proses-proses yang baru tiba[4].
            SRF perlu menyimpan waktu layanan yang telah dihabiskan , menambah overhead. Secara teoritis, SRF memberi waktu tunggu minimum tetapi karena overhead peralihan, maka pada situasi tertentu SFJ bisa memberi kinerja lebih baik dibanding SRF[4].
c.         PS (Priority Schedulling)
            Adalah tiap proses diberi prioritas dan proses yang berprioritas tertinggi mendapat jatah waktu lebih dulu (running). Berasumsi bahwa masing-masing proses memiliki prioritas tertentu, sehingga akan dilaksanakan berdasar prioritas yang dimilikinya[4].
               Ilustrasi yang dapat memperjelas prioritas tersebut adalah dalam komputer militer, dimana proses dari jendral berprioritas 100, proses dari kolonel 90, mayor berprioritas 80, kapten berprioritas 70, letnan berprioritas 60 dan seterusnya. Dalam UNIX perintah untuk mengubah prioritas menggunakan perintah nice.
d.        GS (Guaranteed Schedulling)
            Penjadualan ini memberikan janji yang realistis (memberi daya pemroses yang sama) untuk membuat dan menyesuaikan performance adalah jika ada N pemakai, sehingga setiap proses (pemakai) akan mendapatkan 1/N dari daya pemroses CPU. Untuk mewujudkannya, sistem harus selalu menyimpan informasi tentang jumlah waktu CPU untuk semua proses sejak login dan juga berapa lama pemakai sedang login[4]. Kemudian jumlah waktu CPU, yaitu waktu mulai login dibagi dengan n, sehingga lebih mudah menghitung rasio waktu CPU. Karena jumlah waktu pemroses tiap pemakai dapat diketahui, maka dapat dihitung rasio antara waktu pemroses yang sesungguhnya harus diperoleh, yaitu 1/N waktu pemroses seluruhnya dan waktu pemroses yang telah diperuntukkan proses itu[4].


REFERENSI
[1]. Pangera, Abas Ali, Dony Ariyus. Sistem Operasi. Andi. ISBN9797318400, 9789797318406.
[2]. Utami, Ema. Teori, Analisa dan Implementasi Jaringan Tanpa Disk pada GNU/Linux. Andi. ISBN9797310736, 9789797310738.
[3].Tanenbaum, Andrew S and Woodhull, Albert S. 1997 . Operating Systems Design and Implementation . Second Edition. Prentice-Hall.
[4]. Silberschatz, Abraham and  Galvin, Peter and Gagne, Greg. 2002 . Applied Operating Systems. Sixth Edition. John Wiley & Sons.

Previous Post
Next Post

0 komentar:

"Kalau mau Copy-Paste artikel boleh saja, tapi sumbernya ke blog ini"