Jumat, 15 Maret 2019

 BAB III KONSEP PROSES


Bab III membahas konsep sistem operasi yang paling penting, yaitu proses. Pemahaman tentang konsep proses akan membantu pemahaman tentang komponen manajemen sistem operasi seperti manajemen proses, manajemen memori, manajemen device, dan manajemen berkas.


Proses merupakan abstraksi atau pemodulan terhadap eksekusi program. Dalam eksekusi suatu program, elemen yang terlibat bukan hanya kode instruksi program, tetapi melibatkan data-data yang akan diolah, berkas- berkas yang dibuka serta peranti I/O yang sedang diakses. Semua infor- masi tersebut perlu disimpan dan dilindungi selama eksekusi program tersebut.


Selain konsep proses, Bab V membahas pula sejumlah konsep lain yang berkaitan erat dengan manajemen proses, yaitu konsep multitasking dan konkurensi, terutama menjelaskan bagaimana konsep tersebut diimple- mentasikan pada sistem komputer. Bagian lainnya membahas tentang tahap-tahap yang dialami oleh proses selama siklus hidupnya, kemudian diikuti penjelasan mengenai struktur data yang digunakan untuk me- ngendalikan dan mengelola eksekusi proses.


Hal penting lain yang dibahas adalah mekanisme proteksi yang digunakan agar proses-proses dapat berjalan berdampingan secara aman dan tidak saling mengganggu pada lingkungan sistem operasi multitasking. Bagian terakhir menjelaskan konsep thread sebagai modul penstrukturan alur eksekusi dalam proses yang berguna meningkatkan unjuk kerja prosesor.




 3.1 PROSES


Pada masa awal perkembangan komputer, kode instruksi program dibaca dari suatu kartu plong, kemudian disalin ke memori utama dan akhirnya dieksekusi langsung oleh prosesor. osesor. Dewasa ini kode-kode instruksi pro-


52


Sistem Operasi


gram disimpan sebagai berkas pada media penyimpan sekunder seperti magnetic disk, floppy disk, CDROM ataupun DVDROM.


Kode-kode instruksi program tidak dapat diekseksusi langsung dari media penyimpannya. Ketika suatu program akan dieksekusi maka kode-kode instruksinya akan dibaca dari berkas dan disalinkan ke ruang memori utama. Selain untuk menyimpan kode-kode instruksi program, ruang memori yang dialokasikan diperlukan untuk mencatat berbagai informasi yang terkait dengan eksekusi program seperti status eksekusinya, alamat kode instruksi yang sedang dieksekusi serta sumber daya komputer yang sedang digunakan seperti data, berkas, dan peranti I/O. Intinya, eksekusi suatu program bukan sekedar eksekusi kode-kode instruksi program tapi melibatkan pengelolaan informasi eksekusinya juga.


Oleh sebab itu, dalam sistem operasi diperkenalkan konsep proses untuk mendeskripsi eksekusi program dan pengelolaan sumber daya komputer yang dipergunakannya. Secara sederhana, proses dapat didefinisikan sebagai program yang sedang berjalan atau dieksekusi. Pada pembahasan selanjutnya istilah proses akan digunakan untuk menggantikan istilah job atau tugas yang dikerjakan oleh prosesor.



 3.2 MULTITASKING DAN KONKURENSI


Awalnya, proses-proses dijalankan secara sekuensial atau berurut. Suatu proses akan dieksekusi sampai selesai baru kemudian berpindah ke proses berikutnya. Sistem yang sekuensial demikian memiliki kelemahan, yaitu tingkat penggunaan atau utilitas prosesor yang rendah. Ini dikarenakan ketika suatu proses sedang melakukan operasi I/O, prosesor harus menunggu sampai operasi I/O tersebut selesai dan prosesor tidak dapat dialokasikan ke proses berikutnya karena proses yang sedang berjalan belum selesai.


Masalah utilitas prosesor yang rendah ini mendorong lahirnya konsep multitasking atau multiprogramming pada sistem operasi. Sistem multi- tasking, yang merupakan subset dari sistem konkuren, berkebalikan dengan sistem sekuensial seperti ditunjukkan pada Gambar 3.1. Sistem


Konsep Proses


53


konkuren sendiri dapat didefinisikan sebagai sistem yang memiliki sejumlah aktivitas yang sedang bejalan secara "bersamaan".


Kata "bersamaan" di sini dapat memiliki sejumlah pengertian yang ber- beda. Sebagai contoh, ambil kasus pada sekelompok tukang yang sedang mengerjakan suatu rumah. Ada tukang yang mengerjakan keramik, ada yang mengerjakan pintu, dan lainnya mengerjakan bagian atap. Intinya masing-masing mengerjakan aktivitas yang berbeda tapi bersamaan. Ini merupakan pengertian "bersamaan" yang pertama. Pada sistem komputer, sistem yang seperti demikian disebut dengan sistem paralel atau multiprocessing. Sebagai contoh adalah sistem komputer yang memiliki dua atau lebih prosesor ataupun juga satu prosesor yang multicore. Sistem paralel dikelompokkan sebagai subset dari sistem multitasking.


Istilah "bersamaan" dalam sistem konkuren dapat juga memiliki penger- tian yang sedikit berbeda dengan penjelasan sebelumnya. Sebagai contoh, ambil kasus seorang tukang yang mendapat dua order pengerjaan rumah, misalkan rumah A dan rumah B. Karena masing-masing pemilik rumah menghendaki pengerjaan rumahnya dapat selesai secepatnya maka tukang tersebut harus menjadwal pengerjaan ke dua rumah tersebut. Misalkan, tukang tersebut menjadwal mengerjakan rumah A pada saat pagi dan siang hari, setelah itu dilanjutkan dengan mengerjakan rumah B pada saat sore dan malam. Jadi setiap hari tukang tersebut dikatakan mengerjakan rumah A dan rumah B. Setelah setahun, kedua rumah tersebut selesai. Sang tukang dikatakan telah mengerjakan kedua rumah tersebut secara bersamaan.


Perhatikan, sekalipun dikatakan secara bersamaan, tetapi sesungguhnya yang terjadi adalah tukang tersebut membagi atau menjadwal waktunya secara bergantian mengerjakan sebagian kecil dalam mengerjakan rumah A dan rumah B. Pada sistem komputer, sistem yang demikian disebut de- ngan sistem multitasking, tetapi tidak dapat dikatakan sebagai sistem paralel, karena pemrosesnya hanya berjumlah satu.


Dari penjelasan di atas, terlihat bahwa untuk membangun sistem yang multitasking, tidak harus senantiasa menggunakan komputer yang memi- liki lebih dari satu prosesor. Kunci implementasi sistem multitasking terletak pada sistem operasi yang dapat melakukan penjadwalan peng-


54


Sistem Operasi


gunaan prosesor untuk sejumlah aktivitas sehingga konkurensi dapat tercapai. Hubungan antara sistem sekuensial, sistem konkuren, sistem multitasking dan sistem paralel dapat dilihat pada Gambar 3.1. Sistem sekuensial dan sistem konkurens merupakan dua sistem yang terpisah satu sama lain. Sistem paralel merupakan subset dari sistem multitasking, yang artinya setiap sistem paralel pastilah sistem multitasking juga. Namun tidak semua sistem multitasking merupakan sistem paralel. Sistem multitasking sendiri merupakan subset dari sistem konkuren.


Sistem Konkurens


Sistem Sekuensial


Sistem Multitasking


Sistem Pararel













Gambar 3.1 Hubungan antara sistem konkuren, sistem sekuensial, sistem multitasking, dan sistem paralel


Konkurensi, dan khususnya multitasking, dapat dicapai pada sistem uni-- prosesor (berprosesor tunggal) dengan menjadwal eksekusi proses-proses secara bergantian (interleaving) seperti pada Gambar 3.2a. Pada gambar terlihat proses 1, proses 2, dan proses 3 secara bergantian dieksekusi oleh prosesor. Pergantian antar proses berlangsung dengan cepat sekali, dalam orde milidetik, sehingga pengguna komputer tidak akan menyadari terjadinya pergantian tersebut. Bagi pengguna, semua proses tampak berjalan bersamaan.


Pada sistem multiprosesor, konkurensi diimplementasikan dengan men- jalankan proses-proses secara bersamaan pada prosesor yang berbeda (overlapping) dan juga menjadwal proses-proses secara bergantian pada prosesor tertentu (interleaving) seperti pada Gambar 3.2b. Pada gambar tersebut diasumsikan terdapat dua prosesor. Terlihat pada saat proses 2 mulai melakukan eksekusi, proses 1 juga masih terus melakukan eksekusi.


Konsep Proses


55


Hal ini bisa terjadi karena eksekusi proses 1 dan proses 2 tersebut dilakukan pada prosesor yang berbeda (overlapping).


Proses 1


Proses 2


Proses 3


(a) interleaving


Proses 1


Proses 2


Proses 3


(a) interleaving dan overlapping

Gambar 3.2 Implementasi konkurensi (multitasking) pada sistem uniprosesor (a) dan multiprosesor (b)


Apakah konsekuensinya dari proses-proses yang berjalan secara konkuren pada suatu sistem multitasking? Berikut ini akan dijelaskan sejumlah pengaruh yang mungkin terjadi antara proses-proses yang berjalan bersamaan.


1. Proses tidak saling memengaruhi. Ini terjadi pada proses-proses yang tidak saling berhubungan dan tidak saling bekerja sama, kecuali dalam hal berbagai pakai prosesor. Sebagai contoh adalah aplikasi Microsoft Word dan Microsoft Media Player yang berjalan bersamaan.


2. Proses saling memengaruhi secara tidak langsung. Ini terjadi pada proses-proses yang tidak saling bekerja sama tetapi mengakses sumber daya yang sama sehingga proses-proses tersebut saling mempengaruhi satu sama lain. Sebagai contoh adalah aplikasi Microsoft Word dan Notepad yang sedang membuka suatu berkas yang sama.


3. Proses saling memengaruhi secara langsung. Ini terjadi pada proses-proses yang saling bekerja sama untuk untuk mencapai suatu tujuan khusus. Proses-proses yang saling bekerjasama dapat berjalan pada komputer yang sama maupun yang berlainan.


56


Sistem Operasi


Sebagai contoh adalah aplikasi akuntansi yang mengakses aplikasi server basis data lokal seperti MS SQL Server. Dalam kasus ini kedua proses aplikasi harus saling bekerja sama agar aliran data antar aplikasi dapat berjalan dengan baik. Contoh lain adalah aplikasi browser internet, seperti Internet Explorer (IE) yang mengakses dokumen pada suatu situs. Dalam kasus ini, antara proses browser internet dan proses web server saling bekerja sama secara langsung dan saling memengaruhi satu sama lain.


Terjadinya perebutan sumber daya pada proses-proses yang saling memengaruhi, baik secara langsung ataupun tidak, memunculkan sejumlah masalah yang harus ditangani oleh sistem operasi, antara lain: 1. Race condition (keadaanbalapan


Jika terdapat dua proses atau lebih yang berusaha mengakses dan melakukan operasi pada suatu sumber daya yang sama maka ada kemungkinan status sumber daya tersebut menjadi tidak valid dan tidak konsisten pada akhir seluruh operasi tersebut. Kondisi kompetisi seperti ini disebut dengan race condition dan sumber daya yang berada dalam kondisi ini disebut critical resource, sedangkan bagian dari kode instruksi program yang melakukan operasi tersebut disebut dengan critical section.


Kondisi race condition dapat ditangani dengan menerapkan mekanis- me sinkronisasi. Salah satu mekanisme sinkronisasi adalah mutual exclusive yang memastikan pada suatu waktu hanya satu proses yang diijinkan untuk menjalankan critical section. Pembahasan lebih lengkap mengenai sinkronisasi, mutual exclusive, dan mekanisme sinkronisasi lainnya akan dibahas pada Bab IV.


2. Deadlock


Deadlock merupakan kondisi kebuntuan dalam alokasi sumber daya yang dibutuhkan oleh proses dan akibatnya proses-proses yang ter- libat tidak dapat melanjutkan eksekusinya sama sekali. Deadlock terjadi ketika proses-proses yang terlibat saling membutuhkan sumber daya yang sedang digunakan oleh proses lainnya. Karena tidak ada satu pun proses yang bersedia mengalah, yaitu melepaskan sumber


Konsep Proses


57


daya yang sedang digunakannya, terjadilah kebuntuan. Pembahasan mengenai deadlock dan cara penanganannya akan dibahas di Bab IV.


3. Starvasion Starvasion merupakan kondisi di mana satu proses atau lebih selalu kalah dalam kompetisi untuk mendapatkan sumber daya yang diper- lukannya sehingga eksekusinya tertunda terus menerus. Berbeda dengan deadlock, penyebab utama starvasion bukanlah proses lain- nya, melainkan lebih oleh kebijakan alokasi sumber daya yang tidak adil dari sistem operasi.


Dari sejumlah penjelasan di atas terlihat bahwa di samping keuntungan- nya, yaitu peningkatan utilitas prosesor serta kemampuan multitasking, penerapan konkurensi pada sistem operasi juga menambah sejumlah kompleksitas baru, antara lain:


1. Sistem operasi harus dapat mengawasi berbagai proses yang aktif. Informasi untuk pengawasan dan pengelolaan masing-masing proses disimpan dalam suatu struktur data kendali yang disebut dengan Process Control Block (PCB).


2. Sistem operasi harus melakukan penjadwalan proses secara adil dan berusaha menjaga keoptimalan kinerja proses-proses secara kese- luruhan.


3. Sistem operasi harus melakukan alokasi dan dealokasi berbagai sumber daya (prosesor, memori, berkas, peranti I/O) untuk masing- masing proses yang aktif. Dalam melakukan alokasi sumber daya ini, sistem operasi harus mengantisipasi kemungkinan terjadinya kondisi deadlock dan starvasion.


4. Sistem operasi harus melindungi sumber daya yang sedang digunakan oleh suatu proses terhadap pengaksesan proses lain. Ketika terjadi peralihan eksekusi ke proses lain, sumber daya ini harus tetap dijaga agar tidak diakses oleh proses lainnya. Sistem operasi dapat melaku- kan hal ini dengan menggunakan mekanisme mutual exclusive (mutex), yang merupakan salah satu bentuk sinkronisasi.


5. Pada kasus tertentu, sistem operasi harus menjaga jumlah data yang dialirkan dari/ke peranti I/O selalu konstan. Sebagai contoh, jika

58


Sistem Operasi


aplikasi yang dijalankan adalah pemutar lagu maka sistem operasi bertanggung jawab agar aliran data ke kartu suara selalu konstan agar suara yang terdengar tidak terputus putus.


6. Sistem operasi pun harus memfasilitasi jika proses-proses konkuren memerlukan komunikasi satu sama lainnya.


Berbagai tugas pengelolaan oleh sistem operasi yang dijelaskan pada butir-butir di atas akan dibahas lebih rinci di Bab IV.


Pada sistem sekuensial, saat sebuah proses mulai dijalankan maka proses tersebut akan menguasai seluruh sumberdaya komputer dan berjalan sampai selesai. Tidak demikian halnya pada sistem multitasking, di mana proses akan mengalami sejumlah kondisi atau status selama siklus hidupnya. Kondisi ini terjadi karena secara berkala suatu proses harus menghentikan eksekusinya dan membiarkan sistem operasi menjadwal proses lainnya untuk menggunakan prosesor.

Terjadinya switching dari suatu proses ke proses lainnya berlangsung secara terus menerus selama komputer hidup. Secara umum siklus-hidup suatu proses serta status yang dialaminya diperlihatkan pada Gambar 3.3.

(new, ready, running, waiting, terminated, admitted interrupt,  exit, I/O or event completion, Scheduler dispatch, I/O or event wait, )

Gambar 3.3 Siklus-hidup Proses dan Statusnya

3.3.1 NEW


Proses yang berstatus new, masih dalam tahap inisiasi oleh prosedur atau rutin sistem operasi. Tahap inisiasi ini meliputi alokasi memori utama untuk proses, pengisian tabel proses, pembuatan struktur data kendali untuk menyimpan informasi, dan status proses. Proses dalam status ini belum siap untuk dieksekusi.

Sistem operasi menciptakan proses atas permintaan dari program aplikasi ataupun pengguna. Sejumlah kondisi yang memicu penciptaan proses baru, antara lain:

  1. Pengguna melakukan logon ke sistem operasi sehingga sistem operasi akan menciptakan proses antarmuka pengguna (shell).
  2. Permintaan eksekusi program oleh pengguna lewat aplikasi antar muka (shell).
  3. Suatu aplikasi menciptakan proses anak.
  4. Penciptaan proses baru sebagai bagian dari eksekusi batch.


3.3.2 READY


Proses yang telah berhasil diinisiasi akan ditempatkan (admit) ke dalam antrian penjadwalan prosesor dengan cara menyisipkan rekaman baru ke dalam antrian, yang berisi referensi atau pointer ke struktur data kendali proses. Antrian penjadwalan prosesor ini disebut juga antrian ready. Proses yang telah berhasil disisipkan ke dalam antrian penjadwalan akan diubah statusnya menjadi ready. Status ready menandakan suatu proses siap berkompetisi untuk mendapatkan alokasi waktu prosesor. Jadi proses-proses yang baru tercipta, tidak dapat langsung dieksekusi tetapi harus menunggu gilirannya.


Secara berkala atau dalam kondisi tertentu, sistem operasi akan melaku- kan penjadwalan prosesor, yaitu menghentikan eksekusi proses yang lagi berjalan, memilih salah satu dari proses-proses yang berada dalam antrian ready, dan mengeksekusinya. Rutin sistem operasi yang bertugas untuk melakukan pemilihan ini disebut scheduler.


3.3.3 RUNNING


Jika kemudian sebuah proses dalam antrian ready terpilih oleh scheduler untuk dijalankan maka proses yang terpilih akan mulai dieksekusi dan berubah statusnya menjadi running. Proses yang berstatus running me- nguasai prosesor sepenuhnya.


Proses yang berstatus running memiliki tiga kemungkinan peralihan ke status lainnya. Pertama jika proses sudah menyelesaikan aktivitasnya ma- ka proses akan berubah statusnya menjadi terminated. Peralihan ke status terminated dapat pula disebabkan terjadinya kesalahan yang tidak dapat dipulihkan, seperti kesalahan memori.


Kedua, jika jatah waktu (time-slice) yang dialokasikan untuk eksekusi proses sudah habis maka proses akan dialihkan statusnya menjadi ready. Pada sistem operasi multitasking umumnya setiap proses diberi jatah waktu eksekusi yang terbatas agar proses yang berdurasi panjang tidak menghambat eksekusi proses-proses lainnya. Pada saat jatah waktunya habis, pewaktu (timer) akan memberikan sinyal interupsi kepada pro- sesor. Akibatnya eksekusi proses akan terhenti dan dialihkan ke rutin sistem operasi yang selanjutnya akan menjalankan scheduler. Proses yang dihentikan akan diubah statusnya menjadi ready dan proses yang terseleksi oleh scheduler akan menjadi running.


Ketiga, proses running dapat beralih ke status blocked. Hal yang memicu peralihan ke blocked akan dijelaskan pada bagian berikut.


3.3.4 BLOCKED (WAITING)


Proses berstatus running beralih ke status blocked (waiting) karena membutuhkan pembacaan data dari peranti I/O. Sebagai contoh, suatu proses membutuhkan data berkas dari disk untuk melanjutkan pengolah- an datanya. Untuk memaksimalkan penggunaan prosesor maka proses yang sedang menunggu ini akan dialihkan statusnya menjadi blocked dan sistem operasi akan menjalankan scheduler untuk memilih proses lain untuk dieksekusi. Contoh lainnya adalah proses yang sedang menunggu event tertentu seperti penekanan keyboard ataupun pergerakan mouse sebagai data input untuk melanjutkan eksekusi. Kenyataannya keba-


nyakan aplikasi yang diakses langsung oleh pengguna menghabiskan sebagian besar siklus hidupnya dalam status blocked karena menunggu event atau aksi dari pengguna yang relatif lambat dibandingkan dengan kecepatan komputer. Proses-proses yang beralih ke status blocked akan disisipkan pada antrian penjadwalan peranti I/O atau event.


Jika event yang ditunggu sudah terjadi atau operasi I/O yang ditunggu sudah selesai, yang ditandai dengan terjadinya interupsi I/O sehingga eksekusi beralih ke rutin sistem operasi, maka rutin sistem operasi akan memindahkan proses yang berstatus blocked tersebut kembali ke antrian ready. Perhatikan, proses yang berstatus blocked tidak dapat langsung dieksekusi atau beralih ke running, tetapi harus dialihkan ke status ready terlebih dulu dan menunggu dipilih oleh scheduler agar dapat beralih ke running.


3.3.5 EXIT ATAU TERMINATED


Proses yang berubah statusnya menjadi exit atau terminated berarti proses tersebut telah dihentikan eksekusinya, baik secara normal (proses telah selesai) maupun tidak (misalnya terjadi kesalahan sistem yang tidak tertangani). Jika suatu proses telah selesai maka ruang memori yang ditempatinya akan dibersihkan (dealokasi) oleh rutin sistem operasi. Sejumlah hal yang dapat menyebabkan suatu proses selesai eksekusinya antara lain:

  1. Proses telah selesai secara normal
  2. Batas waktu total telah terlewati
  3. Kekurangan ruang memori
  4. Pelanggaran batas memori
  5. Pelanggaran proteksi berkas atau sumber daya lainnya
  6. Kesalahan aritmatika
  7. Waktu tunggu (operasi I/O) melebih batas yang ditetapkan
  8. Terjadi kegagalan I/O
  9. Instruksi yang tidak benar ataupun tidak valid.
  10. Terjadi usaha pemakaian instruksi yang tidak diijinkan
  11. Salah memakai data, seperti tipe data salah
  12. Campur tangan sistem operasi atau operator
  13. Penghentian proses induk
  14. Atas permintaan proses induk ataupun proses lainnya.

Model siklus hidup proses di atas sering disebut dengan model proses 3 status, karena umumnya status new dan exit tidak dianggap sebagai suatu status permanen karena bersifat sementara. Beberapa sistem operasi memperluas model 3 status menjadi model proses 5 status seperti pada Gambar 3.4.


Pada modus proses 3 status, proses yang sedang berada dalam status blocked mungkin tidak memiliki kejelasan mengenai kapan sumber daya atau event yang ditunggunya menjadi tersedia. Proses tersebut mungkin saja akan terus berstatus blocked untuk jangka waktu yang cukup lama. Hal ini sangat tidak menguntungkan dari segi penggunaan ruang memori utama, karena ruang memori utama yang ditempati oleh proses yang blocked tidak dapat dialokasi ke proses lainnya.


Itu sebabnya pada model proses 5 status, ketika suatu proses memasuki kondisi yang demikian, proses tersebut akan dialihkan statusnya menjadi Suspended Blocked agar sumber daya yang ada, misalkan memori utama, dapat dialokasikan untuk proses yang lain. Penundaan proses secara demikian dapat dilakukan oleh proses itu sendiri atau oleh proses lain. Pada sistem uniprosesor, proses yang running dapat menunda (suspend) eksekusi prosesnya sendiri. Sementara pada sistem multiprosesor, proses yang running dapat ditunda oleh proses yang berjalan pada prosesor lainnya.


Penundaan eksekusi proses yang berstatus blocked yang dilakukan oleh sistem ataupun proses lain akan menyebabkan status proses beralih menjadi Suspended Blocked. Proses yang berada dalam status Suspended- Blocked akan bertransisi menjadi SuspendedReady ketika event yang ditunggu terjadi atau operasi I/O yang ditunggu telah selesai. Proses- proses yang sedang berada dalam status Suspended Blocked dan SuspendedReady dapat dilanjutkan kembali (resume) setelah permasalah- an selesai sehingga kondisinya menjadi normal kembali.


(Submit, Timeout, State-state aksit, Ready, Dispatch, Running, Completion, Event occur, Event wait, Blocked, Resume, Suspend, Resume, VO completion, atau event completion, Suspend, Scate-etnie disuspend, SuspendedReady, SuspendedBlocked)

Gambar 3.4 Model Proses 5 status


 


DATA 

3.4 STRUKTUR KENDALI SISTEM OPERASI


Agar dapat melakukan pengelolaan alokasi sumber daya untuk proses- proses, sistem operasi harus memiliki informasi mengenai status setiap proses dan sumber daya yang sedang diaksesnya. Setiap saat sistem operasi harus mengetahui seluruh sumber daya baik memori, peranti I/O, mau- pun berkas yang sedang diakses oleh masing-masing proses. Sistem operasi membentuk dan memelihara struktur data yang menyimpan informasi mengenai setiap sumber daya yang dikelolanya. Karena menjadi dasar bagi sistem operasi mengendalikan seluruh sumber daya komputer. Pata struktur data ini disebut dengan struktur kendali.


Data Contoh ringkas struktur kendali sistem operasi dapat dilihat pada Gambar 3.5. Struktur kendali ini umumnya berupa tabel-tabel yang berisi daftar sumber daya beserta atributnya yang sedang digunakan oleh proses-proses yang aktif. Masing-masing bagian struktur kendali sistem operasi akan dijelaskan di bagian berikut.


64


Sistem Operasi


Memory Tables


Memory


Devices


I/O Tables


Files


File Tables


Processes


Proc


Proc


Proc


Proc ↓


Process Images

Gambar 3.5 Struktur kendali sistem operasi


Data.


3.4.1 TABEL MEMORI (MEMORY TABLE)


Tabel memori digunakan untuk mencatat alokasi memori utama (main memory) dan memori maya (virtual memory). Memori maya menempati ruang pada memori sekunder, seperti disk dapat dilihat sebagai perluasan atau ekstensi dari memori utama. Tabel ini berisi alokasi memori utama untuk proses-proses, alokasi memori maya untuk proses-proses, atribut proteksi terhadap memori utama dan maya, serta informasi yang diperlukan untuk mengatur memori maya.


3.4.2 TABEL I/O (I/O TABLE)


Tabel I/O digunakan untuk mencatat status peranti I/O dan mengetahui apakah saluran (channel) sistem komputer dalam keadaan bebas atau sedang terpakai. Sistem operasi pun perlu mengetahui status operasi I/O dan lokasi penyalinanan/pembacaan datanya di memori utama, baik sebagi lokasi tujuan ataupun lokasi asal.


3.4.3 TABEL BERKAS (FILE TABLE)


Tabel berkas mencatat informasi berkas-berkas yang diakses oleh proses seperti lokasinya di media penyimpan, statusnya pada saat ini, hak akses- nya, serta atribut berkas lainnya. Informasi-informasi yang dicatat pada tabel berkas akan digunakan oleh komponen manajemen berkas.


Proc


Konsep Proses


65


3.4.5 TABEL PROSES (PROCESS TABLE)


Tabel proses mencatat informasi mengenai status dari setiap proses. Informasi status dari proses-proses inilah yang akan digunakan sistem operasi untuk mengatur penjadwalan eksekusi proses. Umumnya tabel proses diimplementasikan sebagai suatu link list seperti tampak pada Gambar 3.5. Masing-masing rekaman pada list berisi referensi atau pointer ke image, alokasi memori utama dari proses.


Keseluruhan alokasi memori-utama untuk eksekusi suatu proses disebut process image. Lokasi process image tergantung dari mekanisme manajemen memori yang digunakan. Pada kasus yang sederhana, process image dialokasikan sebagai sebuah blok-berurutan (contiguous block) pada memori-utama. Pada sebagian besar sistem operasi modus, process image disimpan dalam kumpulan blok memori yang letaknya tidak harus berurutan. Blok-blok memori tersebut ukurannya dapat bervariasi (disebut Sistem Segmentasi) ataupun berukuran sama (disebut Sistem Halaman) ataupun kombinasi keduanya (disebut Sistem Hybrid).

Setiap rekaman di process table mengandung paling sedikit sebuah pointer ke sebuah process image. Jika process image memiliki beberapa blok memori maka informasi ini disimpan di process table atau lewat referensi-silang ke memory table. Sebuah process image memiliki elemen-elemen sebagai berikut:


1. Data pengguna (User Data)
Data pengguna merupakan bagian image proses yang dapat dimodifikasi, yang meliputi data-data program.


2. Kode program (User Program)
Kode program merupakan bagian image proses yang menyimpan kode-kode instruksi program yang akan dieksekusi.


3. Sistem Stack (User Stack)
Setiap proses memiliki satu/lebih sistem stack yang merupakan struktur data yang bekerja berdasarkan prinsip LIFO (Last In First Out). Area stack digunakan untuk menyimpan parameter dan alamat terpanggil dari prosedur atau system call.


4. Process Control Block(PCB)
Process Control Block merupakan bagian image proses yang menyimpan informasi yang diperlukan sistem operasi untuk mengontrol proses. PCB juga digunakan untuk menyimpan konteks prosesor, yaitu isi register prosesor saat terakhir eksekusi proses sebelum dialihkan ke proses lain ataupun karena terjadi interupsi.


3.5.1 ATRIBUT PROSES


Dalam suatu sistem operasi multitasking, banyak informasi yang perlu dikumpulkan dari masing-masing proses agar pengaturan dapat dilakukan dengan baik. Informasi ini terletak dalam sebuah Process Control Block (PCB). Elemen data yang terdapat pada suatu PCB dapat dikelompokkan dalam 3 kategori:


1. Process Identification
Kategori ini berkaitan dengan identifikasi proses secara unik, seperti proses yang menciptakannya serta identitas pengguna yang men- ciptakannya. Dengan identifikasi ini proses akan dikaitkan ke tabel- tabel lain. Elemen data yang termasuk dalam kategori ini adalah ID proses, ID proses parent yang menciptakannya, dan ID user.


2. Processor State Information
Kategori ini terdiri dari isi register-register prosesor. Pada saat proses berstatus running, informasi ini berada di register-register. Ketika proses diinterupsi, semua informasi register harus disimpan agar dapat dikembalikan pada saat proses dieksekusi kembali. Elemen-elemen dari kategori ini adalah user-visible register, control and status register, dan stack pointer.


3. Process Control Information
Kategori ini berisi informasi yang diperlukan sistem operasi untuk mengendalikan dan mengoordinasikan beragam proses aktif. Elemen elemen dari kategori ini adalah:

a. Scheduling and State Information
Berisi informasi yang digunakan dalam penjadwalan, antara lain status proses, prioritas, informasi yang berkaitan dengan penjadwalan (durasi eksekusi terakhir kali, durasi eksekusi dalam modus kernel, durasi eksekusi dalam modus user), serta identitas event.


b. Data Structuring
Proses dapat dikaitkan (link) dengan proses lain dalam sebuah antrian atau ring. Informasi ini merupakan pointer yang memben- tuk rantai link-list antrian ready.


c. Interprocess Communication
Flag, sinyal, dan pesan yang digunakan untuk komunikasi antar proses.


d. Process Privilages
Kewenangan proses atas memori dan tipe instruksi


e. Memory Management
Pointer ke tabel segmen ataupun tabel halaman dari memori maya.


f. Resource Ownership and Utilization
Berisi histori penggunaan sumberdaya yang akan digunakan untuk penjadwalan.

Setiap proses yang tercipta memiliki nomor ID sebagai tanda pengenal yang unik. Saat suatu proses menciptakan proses lainnya. ID proses pencipta akan digunakan untuk mengindikasi parent process dan sebagai informasi untuk melacak user yang bertanggung jawab atas proses baru bersangkutan.

PCB dari proses-proses yang sedang menunggu dieksekusi akan terangkai sebagai suatu link-list yang merupakan implementasi dari atrian ready. PCB suatu proses akan dipindahkan dari link-list (antrian ready) ke antrian I/O jika proses bersangkutan beralih ke status blocked karena me- nunggu pembacaan dari peranti I/O.


3.5.2 ATURAN PENGAKSESAN PCB


PCB memiliki peran yang penting bagi sistem operasi, karena berisi semua informasi mengenai proses-proses yang aktif. PCB dibaca dan dimodifikasi oleh hampir semua rutin sistem operasi seperti scheduler. rutin penanganan interupsi, rutin monitoring atau auditing sistem.

Mengingat pentingnya informasi yang terdapat pada PCB maka pengaksesan terhadap PCB harusnya diproteksi sedemikian rupa sehingga tidak menyebabkan informasi pada PCB menjadi korup. Selain itu struk- tur PCB tidak boleh berubah, karena jika berubah dapat menyebabkan rutin-rutin yang mengaksesnya tidak mengenalinya lagi sehingga rutin tersebut tidak berjalan dengan benar. Solusinya adalah sistem operasi menyediakan rutin-rutin khusus untuk mengakses (baca maupun tulis) PCB. Seluruh rutin sistem operasi lainnya hanya boleh mengakses PCB melalui pemanggilan rutin-rutin khusus tersebut. Kelemahan mekanisme ini adalah terjadinya overhead kinerja.


(PCB (Process Control Block), User Stack, Pointer, Status Proses, ID Proses ID Proses parent, dll., PC (Program Counter), Register CPU, Private User Address Space (Program, Data), Limit Memori, List file yang dibuka, Shared Address Space, Struktur Image proses, Diagram PCB)

Gambar 3.6 Struktur Image Proses dan PCB


 


3.6 PROTEKSI DAN MODUS EKSEKUSI PROSES


Suatu proses dapat berjalan dalam salah satu modus yaitu modus user atau modus kernel (system atau privileged). Sistem yang memungkinkan proses berjalan dalam salah satu dari 2 macam modus ini disebut dengan sistem terproteksi (protected). Modus eksekusi protected ini amatlah penting pada sistem operasi yang multitasking.


Dalam sistem operasi multitasking terjadi kompetisi pemakaian sumber daya komputer. Oleh sebab itu, kode-kode instruksi program untuk mengakses sumber daya-sumber daya yang kritis haruslah bersifat trusted, yaitu kode-kode yang telah teruji dan aman, yang berarti menjamin tidak terjadinya monopoli pemakaian sumber daya oleh suatu proses tertentu. Untuk menjamin hal ini maka umumnya kode-kode instruksi yang boleh mengakses secara langsung peranti I/O atau sumber daya kritis lainnya adalah kode-kode instruksi sistem operasi yang telah diuji dan terbukti keandalannya. Kode instruksi dari aplikasi pengguna tidak diijinkan menggunakan instruksi pengaksesan sumber daya tersebut secara langsung. Sebagai gantinya, kode instruksi program aplikasi hanya diijinkan memanggil rutin atau layanan dari sistem operasi.


Kebutuhan proteksi di atas dapat dianalogikan seperti kasus penarikan uang kas dari bank. Suatu bank menyimpan uang (sumber daya) yang di- titipkan kepadanya oleh sejumlah besar pelanggan. Jika seorang pelang- gan (kode program aplikasi) hendak mengambil uangnya, dia tidak akan diijinkan mengambil (instruksi pengaksesan yang harus dijamin ke- amanannya) uangnya langsung dari brankas bank (sumber daya kritis). Hanya petugas kasir bank (rutin, layanan sistem operasi) yang berhak melakukan hal tersebut.


Yang dapat dilakukan oleh pelanggan tersebut adalah mengisi slip penarikan uang (melakukan instruksi yang dijalankan dalam modus user) dan menyerahkan ke kasir (memanggil rutin sistem operasi), dan kasir (sebagai sistem operasi) yang kemudian mengambil dan menghitungkan uang yang hendak ditarik (melakukan instruksi yang dijalankan dalam modus kernel).


Sistem Operasi


70


Untuk memungkinkan mekanisme demikian maka diperlukan dukungan pada level perangkat keras. Dukungan untuk melakukan modus eksekusi protected mulai tersedia pada prosesor Intel yang dimulai pada kelas prosesor Intel 386. Pada prosesor yang mendukung modus eksekusi secara protected, terdapat suatu bit yang menentukan apakah prosesor sedang berjalan dalam modus kernel atau modus user.


Jika prosesor sedang berjalan dalam modus kernel maka semua kode instruksi yang dijalankan akan dianggap kode trusted. Jadi jika prosesor sedang dalam modus kernel, semua jenis instruksi yang didukung pro- sesor akan dieksekusi begitu saja. Sebaliknya jika prosesor sedang berjalan dalam modus user maka semua kode instruksi akan dicek sebelum dijalan- kan. Dalam modus user ini, tidak semua jenis instruksi akan dijalankan oleh prosesor. Jika program pengguna mengeksekusi instruksi yang "terlarang" maka prosesor akan membangkitkan sinyal kesalahan yang memberitahukan bahwa program user mengeksekusi instruksi yang privileged, yang tidak diijinkan dalam modus user. Yang dimaksud dengan kode-kode "terlarang" seperti pengaksesan peranti I/O dan memori.


        Sebuah proses dapat memiliki karakteristik (ciri/peran) sebagai unit of resource ownership atau unit of dispatching. Proses yang memiliki karakteristik sebagai unit of resource ownership akan mengabstraksi sebuah ruang alamat virtual untuk menyimpan process image, dan dari waktu ke waktu proses diberi memori utama ditambah kendali terhadap sumber daya lain, seperti saluran IVO, peranti I/O, dan berkas.

        Sementara proses yang memiliki karakteristik sebagai unit of dispatching akan memiliki satu jalur eksekusi (trace). Eksekusi ini mungkin berganti- an (interleaving) dengan proses lain. Sebuah proses memiliki status proses dan prioritas penjadwalan yang digunakan oleh sistem operasi sebagai informasi untuk melakukan penjadwalan prosesor.

        Kedua karakterisitik tersebut independen dan dapat diperlakukan secara independen oleh sistem operasi. Untuk membedakan keduanya, unit of dispatching biasanya disebut dengan thread atau lightweight process, sementara unit of resources ownership biasanya tetap disebut sebagai proses atau task.

        Yang paling menonjol dari konsep thread adalah dimungkinkan terdapat lebih dari satu thread dalam sebuah proses tunggal. Dalam kasus demikian, masing-masing thread memiliki informasi status eksekusi, pro- gram counter, stack, variabel lokal, serta konteks prosesornya sendiri- sendiri. Sementara akses ke berkas, variabel global, memori utama dibagi pakai antar thread tersebut. Dalam konsep thread, istilah proses digunakan sebagai abstraksi alokasi sumber daya yang diakses bersama oleh thread-thread tersebut.

        Keuntungan dari thread adalah peningkatan kinerja, yaitu waktu yang dibutuhkan untuk menciptakan thread jauh lebih kecil dibanding dengan menciptakan sebuah proses baru, sedikit waktu untuk mengakhiri, dan lebih sedikit waktu untuk berganti (switch) antara thread yang ada dalam proses yang sama. Jika ada sebuah aplikasi atau function yang diimple- mentasikan sebagai satu set unit eksekusi, akan jauh lebih efisien diker- jakan sebagai sekumpulan thread yang terpisah.

        Contoh aplikasi yang menggunakan thread adalah server, seperti web server di internet. Setiap kali terjadi akses dari browser internet ke suatu web server (situs), sebuah thread baru diciptakan untuk melayani per- mintaan tersebut, sedangkan thread utama akan kembali melayani per- mintaan pengguna lain. Karena sebuah web server akan menangani banyak permintaan, banyak thread akan diciptakan dan dihancurkan dalam sebuah periode waktu yang singkat. Jika server-nya merupakan komputer multiprocessor maka banyak thread dalam proses yang sama akan dieksekusi secara simultan pada prosesor yang berbeda. Thread berguna pula pada sebuah prosesor tunggal untuk menyederhanakan struktur sebuah program yang secara logis mengerjakan beberapa fungsi yang berbeda secara bersamaan. Contoh penggunaan thread yang efektif adalah untuk aplikasi pemrosesan komunikasi dan pengawasan proses transaksi.

        Thread memberikan pula efisiensi dalam komunikasi antara executing program yang berbeda. Dalam hampir semua sistem operasi, komunikasi antar proses yang independen membutuhkan intervensi dari kernel untuk menyediakan proteksi dan mekanisme yang diperlukan untuk komunikasi. Karena thread dalam proses yang sama berbagi-pakai memori dan berkas, mereka dapat berkomunikasi satu sama lain tanpa melibatkan kernel sistem operasi.

        Penjadwalan dan dispatching dikerjakan berbasis thread. Oleh karena itu. hampir semua informasi status yang berhubungan dengan eksekusi di- pelihara dalam struktur data tingkat thread. Bagaimanapun, ada beberapa aksi yang menggunakan semua thread dalam sebuah proses harus diatur sistem operasi pada level proses. Penundaan (suspension) melibatkan swapping ruang alamat keluar dari memori utama. Karena semua thread dalam sebuah proses berbagi-pakai ruang alamat yang sama, semua thread harus memasukkan status suspend pada saat yang sama. Pengakhiran sebuah proses akan mengakhiri semua thread dalam task.



 RANGKUMAN

  1. Sistem konkuren merupakan sistem yang di dalamnya terdapat sejumlah aktivitas yang sedang berjalan secara bersamaan.

  2. Konkurensi dalam sistem uniprosesor dapat dilakukan dengan melakukan interleaving terhadap proses-1 proses yang sedang berjalan.

  3. Konkurensi dalam sistem multiprosesor dapat dilakukan dengan melakukan interleaving dan overlapping terhadap proses-proses yang sedang berjalan.

  4. Mutual exclusion digunakan sistem operasi untuk memastikan hanya ada satu proses yang masuk dalam critical section pada satu waktu.

  5. Kondisi di mana dua atau lebih proses dalam gu sumber daya komputer yang digunakan oleh proses lainnya disebut deadlock.

  6. Penjadwalan proses yang menerapkan prioritas memungkinkan suatu proses yang memiliki prioritas rendah tidak pernah mendapat giliran untuk dieksekusi. Kondisi ini disebut star vision.

  7. Sistem operasi harus dapat mengawasi berbagai proses yang aktif. Informasi untuk pengawasan dan pengelolaan masing-masing proses tersebut disimpan dalam suatu struktur data kendali yang disebut PCB

  8. Scheduler adalah rutin sistem operasi yang melakukan pemilihan proses yang akan dieksekusi dari antrian proses-proses yang berstatus ready.

  9. Dalam siklusnya, sebuah proses dapat berubah status dari running menjadi waiting jika proses tersebut mengakses ke peranti I/O.

  10. Jika pada suatu proses yang running melakukan pelangaran batas memori maka proses tersebut akan diubah statusnya menjadi terminated.

  11. Proses yang berstatus suspendblocked akan berubah statusnya menjadi... jika operasi I/O sudah selesai atau event yang ditunggu sudah muncul. Sus padded ready.

  12. Pada sistem operasi modern, image proses disimpan dalam blok-blok memori yang ukurannya bervariasi (disebut...), berukuran sama (disebut.), atau kombinasi keduanya. Segmatatic.

  13.         digunakan sistem operasi untuk menyimpan informasi dan mengatur peranti I/O dan saluran (channel) sistem komputer.

  14. Dalam mengelola berbagai proses yang berjalan, sistem operasi menyimpan informasi proses-proses tersebut dalam Process Control Block (PCB). Informasi pada PCB dikelompokkan dalam 3 kategori, yaitu 1) Process Identification, 2) Processor State Information, 3) Process Control Information

  15. Sebuah proses dapat memiliki karakter sebagai unit of resource ownership atau unit of dispatching. Unit of dispatching biasanya disebut  Thread,  sementara unit of resource ownership tetap disebut sebagai proses.

Bab sebelumnya membahas konsep proses yang merupakan abstraksi terhadap pengalokasian sumber daya serta eksekusi suatu program. Bab IV akan membahas hal-hal yang dilakukan oleh sistem operasi untuk mengelola proses-proses yang berjalan di atasnya.

Secara umum, tugas utama manajemen proses meliputi: (1) mengelola siklus hidup proses-proses, (2) melakukan penjadwalan proses, (3) menangani komunikasi antar proses serta (4) mengelola alokasi sumber daya komputer ke proses. Sinkronisasi yang merupakan bentuk khusus komunikasi antar proses dalam pengaksesan sumber daya komputer akan dibahas secara khusus. Selain itu, masalah deadlock, yang merupakan kasus khusus dalam pengalokasian sumber daya pada proses-proses serta penanganannya akan dibahas pada bagian terakhir bab ini.

    Proses (Task) merupakan konsep inti dalam sistem operasi. Sistem operasi bertanggung jawab atas pengelolaan siklus hidup proses-proses yang berjalan di atasnya. Pengelolaan siklus hidup proses meliputi penciptaan proses, penghentian proses, serta pengalihan eksekusi proses.


4.1.1 PENCIPTAAN PROSES

    Terdapat sejumlah kondisi dan penyebab yang memicu penciptaan proses. Penciptaan proses dapat dipicu oleh permintaan pengguna untuk menjalankan suatu aplikasi melalui aplikasi shell, baik yang berbasis antarmuka teks maupun antarmuka grafis. Proses dapat juga diciptakan oleh suatu proses lain yang sedang berjalan, seperti aplikasi shell yang menciptakan proses aplikasi lain yang diminta pengguna. Selain itu, proses dapat pula diciptakan dalam suatu eksekusi batch seperti eksekusi shell script, misalnya eksekusi berkas autoexec.bat di sistem operasi keluarga Windows ataupun eksekusi berkas script berekstensi bash di sistem operasi Linux.

    Selama penciptaan, ada sejumlah tahap yang dilalui, yaitu:

1. Sistem operasi akan membangkitkan suatu nomor identitas atau ID unik untuk proses yang diciptakan.

2. Setelah itu sistem operasi akan membuat suatu rekaman data dengan nomor ID tersebut dan menyisipkan rekaman tersebut pada suatu struktur data di memori utama yang disebut dengan tabel proses (process table).

3. Setelah itu, sisem operasi mengalokasi ruang memori utama untuk menyimpan image proses yang terdiri atas bagian kode program, stack, dan PCB (Process Control Block).

4. Pada tahap berikutnya, sistem operasi akan melakukan inisialiasi PCB proses yang diikuti dengan proses no 5 berikut.

5. Penyisipan PCB proses ke antrian ready dan mengubah status proses menjadi ready.


4.1.2 PENGHENTIAN PROSES

    Pada bab sebelumnya mengenai siklus hidup proses, telah dijelaskan alasan-alasan suatu proses dihentikan. Penghentian proses yang normal terjadi karena aplikasi telah selesai. Adanya kondisi kesalahan serta hal- hal yang tidak dikehendaki dapat menyebabkan proses dihentikan secara paksa.

    Dalam penghentian proses secara normal, langkah-langkah yang di- lakukan oleh sistem operasi antara lain:

1. Mengembalikan hasil keluaran ke proses induk (parent process), yaitu proses yang menciptakan proses bersangkutan.

2. Menghapus rekaman proses di semua antrian dan di tabel proses.

3. Setelah itu, sistem operasi akan menghapus PCB serta image proses tersebut. Dalam penghentian proses, semua sumber daya yangdigunakan, seperti berkas maupun peranti I/O dibebaskan ataupun dikembalikan ke sistem operasi.

Setelah penghentian proses selesai, sistem operasi akan melakukan operasi penjadwalan (scheduling) untuk memilih proses lain untuk dieksekusi.


4.1.3 PENGALIHAN EKSEKUSI PROSES (PROCESS SWITCHING)

    Sistem operasi juga bertanggung jawab untuk pengalihan eksekusi proses. Ketika suatu proses yang sedang running sudah habis jatah waktu eksekusinya maka sistem operasi bertanggungjawab untuk mengalihkan eksekusi ke proses lainnya. Proses pengganti akan diseleksi menggunakan rutin scheduler, sedangkan pengalihan eksekusinya dilakukan mengguna- kan rutin yang disebut dengan dispatcher. Algoritma scheduler akan di- bahas pada bagian penjadwalan proses di subbab berikutnya. Subbagian ini akan menjelaskan tentang pengalihan eksekusi proses (process switching)

    Pengalihan eksekusi suatu proses ke proses lainnya dapat disebabkan karena suatu proses meminta operasi I/O (misalnya membaca berkas), me- nunggu suatu event (misalnya menggunakan inputan keyboard ataupun pergerakan mouse dari pengguna komputer), terjadi kesalahan eksekusi proses ataupun jatah waktu eksekusinya sudah habis.

Berbagai Penyebab Pengalihan Eksekusi Proses

    Secara teknis, kondisi di atas dapat disebabkan aksi dari proses itu sendiri ataupun dari luar. Contoh aksi dari luar adalah terjadinya interupsi. Se- mentara aksi dari dalam seperti pemanggilan layanan sistem opeasi (supervisor call atau system call) ataupun terjadinya trap, yaitu eksekusi proses yang menghasilkan kondisi kesalahan. Masing-masing penyebab di atas akan dijelaskan di bawah ini:

1. Interupsi

    Interupsi disebabkan oleh aksi eksternal, misalnya oleh peranti I/O. pewaktu (timer), ataupun kesalahan akses memori utama. Munculnya interupsi tidak bergantung pada proses yang pada saat itu sedang running. Pada saat muncul, kendali lebih dahulu diserahkan ke interrupt handler atau rutin penanganan interupsi. Secara umum, rutin tersebut akan terlebih dahulu melakukan penyimpanan konteks prosesor (processor context), yaitu isi seluruh register prosesor pada saat tersebut, ke PCB proses. Beberapa contoh interupsi dijelaskan berikut:

a. Interupsi waktu (Clock Interrupt)
    Interupsi ini digunakan untuk memeriksa pemakaian jatah waktu penggunaan prosesor. Jika jatah waktu telah habis (time-out) maka prosesor akan dialokasikan ke proses lain.

b. Interupsi I/O (I/O Interrupt)
    Interupsi ini dilakukan oleh peranti I/O untuk menginformasikan selesainya operasi I/O ataupun adanya data baru dari peranti I/O.

c. Interupsi Kesalahan Memori (Memory Fauk Interrupt)
    Interupsi ini umumnya terjadi jika prosesor mencoba mengakses alamat logika yang datanya belum disalinkan ke memori utama. Ketika interupsi ini terjadi, rutin penanganannya akan menyalin page/segment yang hendak diakses tersebut ke memori utama. Dengan kata lain, sistem operasi menggunakan interupsi seperti ini untuk mengelola penyalinan page/segment proses dari memori maya pada media sekunder ke memori utama.

2. Trap

    Trap adalah interupsi yang dipicu oleh terjadinya kesalahan eksekusi ataupun kondisi-kondisi khusus (exception condition) dari proses yang sedang running. Jika kesalahannya fatal maka dilakukan peng- alihan eksekusi ke proses lain atau yang disebut dengan process switching. Jika tidak fatal, sistem operasi dapat memberi peringatan ke pemakai atau menjalankan prosedur pemulihan dan kemudian melanjutkan eksekusi proses tersebut.

3. Supervisor Call atau System Call

    Supervisor call atau System Call merupakan pemanggilan layanan sistem operasi oleh proses yang sedang running. Penggunaan system call menyebabkan aliran eksekusi berpindah ke kode instruksi kernel sistem operasi. Eksekusi kode instruksi kernel ini dapat menyebabkan terjadinya pengalihan proses.

Tahapan Pengalihan Eksekusi Proses (Process Switching)

Gambar 4.1 menunjukkan contoh tahapan pengalihan proses Po ke Pi dan kembali ke Po. Tahapan pengalihan proses meliputi langkah-langkah berikut:

1. Sistem operasi menyimpan (backup) konteks prosesor, yaitu isi seluruh register prosesor, proses yang sedang running (Po) ke PCB proses tersebut (PCB)

2. Sistem operasi kemudian memperbarui isi PCB proses tersebut (PCB), termasuk mengubah status eksekusinya ke status blocked ataupun ready.

3. Selanjutnya, PCB (PCB) dipindahkan ke antrian yang sesuai, yaitu antrian ready jika status proses beralih ke status ready ataupun ke salah satu antrian I/O jika proses beralih ke status blocked.

4. Setelah itu, sistem operasi melakukan dispatch ke proses lainnya Pı, dengan memperbarui PCB proses baru (P1), termasuk mengubah status eksekusinya menjadi running.

5. Kemudian sistem operasi memperbarui isi struktur data manajemen memori yang berkaitan dengan proses baru (Pi).

6. Terakhir, sistem operasi akan menyalin (restore) konteks prosesor yang tersimpan di PCB proses baru (PCB) ke prosesor dan mulai mengeksekusi kode instruksi proses P1

    Jika jatah eksekusi proses Pı telah habis dan tidak ada proses lain dalam sistem selain Po maka prosesor akan dialihkan kembali ke Po mengikuti langkah-langkah di atas. Langkah yang paling penting adalah menyimpan konteks prosesor Pi ke PCB dan menyalinkan kembali (restore) konteks prosesor Po, yang tersimpan di PCBa, ke prosesor. Mekanisme backup dan restore konteks prosesor memungkinkan suatu proses dapat melanjutkan eksekusinya dari titik terakhir sebelum terjadi interupsi ataupun blocking.

Gambar 4.1 Proses pengalihan Sistem Operasi


4.1.4 PENGALIHAN KONTEKS EKSEKUSI (CONTEXT SWICTHING)

    Terjadinya interupsi tidak selalu memicu terjadinya pengalihan eksekusi proses (proses switching). Sebagai contoh adalah ketika suatu proses sedang berjalan dan menunggu inputan dari keyboard. Ketika pengguna memasukkan data lewat keyboard maka akan terjadi interupsi yang mengakibatkan pengalihan konteks eksekusi, yaitu dari proses ke rutin penanganan interupsi (interrupt handler) keyboard. Setelah rutin interupsi selesai dijalankan maka eksekusi dialihkan kembali ke proses bersangkutan. Selama terjadinya pengalihan konteks eksekusi ini, status eksekusi proses tidak berubah.

    Pengalihan konteks eksekusi (bukan pengalihan eksekusi proses) melaku- kan penyimpanan konteks prosesor proses ke stack, bukan ke PCB. Setelah itu eksekusi berpindah ke rutin interupsi dan setelah selesai, register prosesor diperbaharui kembali dengan konteks prosesor yang dibaca dari stack, dan eksekusi proses yang terhenti dilanjutkan kembali.

   Pengalihan konteks eksekusi (context switching) melibatkan tahapan yang lebih pendek dibandingkan pengalihan eksekusi proses (process switching). Itu sebabnya pengalihan eksekusi antar rutin sistem operasi umumnya memakai mekanisme context swicthing, bukan process switching.

    Selain mengelola siklus hidup proses, sistem operasi bertanggung jawab untuk melakukan penjadwalan proses. Sistem operasi modern umumnya merupakan sistem multitasking, yaitu sistem yang memiliki kemampuan untuk menjalankan sejumlah proses secara konkuren. Untuk mendapat- kan efek konkuren maka sistem operasi bertugas melakukan penjadwalan terhadap proses-proses untuk menggunakan prosesor secara berselang- seling. inter leaving

        Kompleksitas algoritma penjadwalan proses yang dibutuhkan oleh setiap sistem komputer berbeda satu sama lainnya. Sebagai contoh, pada sistem operasi mula-mula, yang mengeksekusi proses secara batch, tugas pen- jadwalan proses hanya mengalihkan eksekusi dari proses yang telah selesai ke proses berikutnya yang sudah menunggu. Sedangkan pada sis- tem mainframe yang melayani operasi batch dan juga timesharing sejumlah pengguna lewat terminal, algoritma penjadwalan harus melaku- kan seleksi dari sejumlah proses dan permintaan layanan secara interaktif dari pengguna. Umumnya permintaan interaktif dari pengguna akan diprioritaskan dalam algoritma penjadwalan agar memberikan tanggapan waktu (response time) yang baik dan cepat bagi pengguna.

    Sementara pada komputer desktop atau PC (Personal Computer) yang hanya mengakomodasi interaksi dengan satu pengguna pada setiap waktu algoritma penjadwalan umumnya akan memilih proses sedang dijalankan oleh pengguna dibandingkan proses sistem yang berjalan secara background.

     Pada sistem komputer yang saling terhubung dan berinteraksi lewa jaringan, proses-proses yang berjalan sering kali berebut waktu untuk memakai prosesor. Sebagai contoh, seorang pengguna sedang mengirim email serta melakukan download berkas dari internet. Dalam kasus ini, urutan penjadwalan akan sangat memengaruhi persepsi pengguna terhadap kinerja sistem.

        Sebagai contoh, jika proses download berkas yang umumnya cukup lama, misalnya membutuhkan 30 detik diprioritaskan maka waktu tunggu pe- ngiriman email yang sebenarnya hanya membutuhkan 2 detik akan terasa lama sekali, yaitu menjadi 32 detik. Pengguna akan mendapatkan persepsi bahwa pengiriman email lambat sekali, yaitu dari yang seharusnya 2 detik menjdai 32 detik.

        Namun jika yang diprioritas adalah pengiriman email maka proses download berkas akan menjadi 32 detik, dari yang seharusnya 30 detik. Dari persepsi pengguna, tambahan waktu tunggu 2 detik tidak terlalu terasa dan cenderung dapat diterima.

      Selain terkait sistem komputer yang digunakan, rancang bangun algorit- ma penjadwalan perlu memperhitungkan perbandingan antara jumlah operasi komputasi prosesor dengan jumlah operasi I/O dari suatu proses. Proporsi keduanya berbeda-beda dari satu proses ke proses lainnya.

        Sebagai catatan, proses yang sedang melakukan operasi I/O akan berstatus blocked dan tidak ikut dalam penjadwalan proses. Proses-proses yang banyak siklus operasi I/O nya atau disebut I/O-bound, umumnya memili- ki durasi komputasi dan penggunaan prosesor yang singkat. Sementara proses yang sebagian besar siklus hidupnya melakukan komputasi atau disebut dengan compute-bound, proporsi operasi I/O sangat kecil. Pada sistem yang demikian, prioritas diberikan pada proses yang VO bound. Jadi begitu proses yang I/O bound beralih dari blocked ke ready, sistem operasi segera menjadwalnya dan kemungkinan proses tersebut kemudian akan memanggil operasi I/O berikutnya. Dengan demikian, kesinam- bungan dari proses I/O bound tetap terjaga, sedangkan selama operasi I/Onya sistem operasi dapat menjadwal proses-proses yang compute bound. Cara yang demikian dapat meningkatkan keluaran per satuan waktu (throughput) proses secara keseluruhan.

        Subbab berikutnya akan menjelaskan definisi penjadwalan, komponen penjadwalan, kriteria dalam perancangan algoritma penjadwalan, strategi dasar penjadwalan serta hal-hal yang memicu terjadinya penjadwalan. Setelah itu akan dibahas berbagai macam algoritma penjadwalan proses yang ada.


4.2.1 DEFINISI DAN KOMPONEN PENJADWALAN PROSES

Penjadwalan proses dapat didefinisikan sebagai kumpulan kebijaksanaan dan mekanisme sistem operasi yang mengatur urutan dan jangka waktu eksekusi proses-proses yang aktif. Penjadwalan bertugas memilih proses, menentukan kapan serta berapa lama proses tersebut boleh menggunakan prosesor.

Untuk menjalankan penjadwalan proses, sistem operasi membutuhkan sejumlah komponen yang meliputi:


1. Antrian penjadwalan(Scheduling Queue)

Antrian penjadwalan meliputi antrian yang berisi proses-proses yang siap dieksekusi (ready queue), antrian untuk proses-proses yang menunggu layanan operasi dari suatu peranti I/O (peranti VO atau IVO queue seperti disk, magnetic tape dan terminal). Selain itu, terdapat job (long-term) queue yang berisi semua proses dalam sistem. Pada sistem uniprosesor, pada setiap saat, dari seluruh proses yang berada antrian ready, hanya ada satu proses yang akan dijalankan atau berstatus running, sedangkan sisanya akan berstatus ready. Sedangkan proses-proses yang berada di I/O queue selalu berstatus blocked.

Berbagai jenis antrian penjadwalan proses dapat dilihat pada Gambar 4.2. Umumnya antrian-antrian ini diimplementasikan dalam bentuk link-list. Header antrian berisi referensi atau pointer ke PCB suatu proses, yang pada gilirannya akan berisi referensi ke PCB proses lainnya. Header antrian juga berisi referensi ke PCB proses yang berada pada ujung antrian. Pada gambar terlihat proses 2 dan 7 berada pada antrian ready. Ini berarti salah satu dari proses 2 atau 7 berstatus running, sedangkan sisanya berstatus ready. Proses 3, 5, 6, 14 berstatus blocked karena menunggu operasi I/O. Proses 5 sedang menunggu input dari terminal dan ditempatkan pada antrian terminal unit 0, sedangkan proses 3, 6, 14 sedang menunggu operasi pada disk unit 0 dan ditempatkan pada antrian disk tersebut.



Gambar 4.2 Macam-macam Antrian Penjadwalan


2. Penjadwal (Scheduler)

Selain antrian, komponen lain dari penjadwalan proses adalah rutin penjadwal (scheduler). Penjadwal berupa rutin program dengan algoritma tertentu yang menyeleksi proses yang akan dieksekusi prosesor. Jenis scheduler dapat berupa:

a. Penjadwal Jangka Pendek (Short-term scheduler)

Penjadwalan ini bertugas untuk menyeleksi proses mana yang akan dijalankan di antara proses-proses yang ada di antrian ready. Penjadwal jangka pendek dijalankan setiap kali terjadi pengalihan eksekusi proses dengan tujuan memilih proses berikutnya yang akan dieksekusi prosesor.

b. Penjadwalan Jangka Menengah (Medium-term scheduler)

Jika ruang memori utama tidak cukup untuk proses yang sedang dieksekusi maka sistem operasi akan melakukan swapping, yaitu memindahkan image proses lain dari memori utama ke memori maya yang berada pada memori sekunder seperti disk. Umumnya yang dikorbankan untuk swapping adalah proses yang berstatus blocked yang sedang menunggu suatu event ataupun selesainya suatu operasi I/O. Ketika event ditunggu terjadi maka image proses yang sudah di-swapping ini harus dikembalikan semula ke memori utama. Penjadwal jangka menengah menyeleksi proses yang akan di-swapping (swap out) dan menyeleksi proses yang akan dikembalikan ke memori utama (swap in)

c. Penjadwal Jangka Panjang (Longterm-scheduler atau job scheduler)

Penjadwal jangka panjang berfungsi menyeleksi proses yang akan dialokasi ke memori utama dan disisipkan pada antrian ready. Dalam beberapa sistem operasi, proses yang baru diciptakan diinisiasi dalam kondisi swapped-out pada memori maya (di memori sekunder).


3. Dispatcher

Komponen penjadwalan proses lainnya adalah dispatcher. Dispatcher adalah suatu rutin sistem operasi yang berfungsi untuk melakukan pengalihan eksekusi dari proses yang running ke proses yang ter- seleksi oleh short-tem scheduler. Rutin ini memindahkan isi register prosesor, konteks prosesor, ke PCB proses yang dihentikan, kemudian mengubah statusnya menjadi ready, kemudian menginisiasi isi regis- ter prosesor menggunakan konteks prosesor yang tersimpan dalam PCB proses terpilih. Durasi waktu yang diperlukan untuk melakukan pengalihan (switching) disebut dengan dispatch latency.


4.2.2 KRITERIA PENJADWALAN PROSES

Dalam melakukan penjadwalan proses, sistem operasi mempertimbang- kan sejumlah faktor antara lain:


1. Keadilan (fairness)

Proses-proses harus diperlakukan sama, yaitu mendapatkan jatah waktu prosesor secara adil, namun tidak selalu berarti jatah waktu yang sama. Selain itu perlu dipastikan tidak terjadi starvation, yaitu terdapat proses yang tidak terlayani dalam jangka waktu yang lama.


2. Efisiensi (Processor utilization)

Penjadwalan menjaga agar prosesor terpakai secara terus menerus selama masih ada proses yang aktif di antrian ready. Umumnya proses-proses yang sedang menunggu inputan pengguna ataupun operasi I/O akan diblok dan berstatus blocked, sehingga tidak ikut dalam penjadwalan proses dan tidak memboroskan siklus hidup prosesor.


3. Waktu tanggapan (Response time)

Waktu tanggapan diusahakan seminimal dan sependek mungkin. Waktu tanggapan (response time) pada sistem interaktif adalah durasi waktu antara pengguna memberikan input dengan sistem operasi memberikan output atau umpan balik kepada pengguna. Faktor ini juga disebut dengan terminal response time. Pada sistem real-time response time merupakan durasi antara terjadinya suatu kejadian (event), baik eksternal maupun internal, dengan saat sistem memberikan tanggapan sehingga sering juga disebut dengan event response time.


4. Waiting time

Pada lingkungan sistem komputer konkuren berprosesor tunggal, dalam suatu waktu hanya satu proses yang running, sedangkan proses-proses lainnya menunggu di antrian ready. Waiting time merupakan durasi waktu yang dihabiskan suatu proses dalam antrian ready selama siklus hidupnya. Secara umum, algoritma penjadwalan yang baik menghasilkan rata-rata waiting time yang kecil untuk seluruh proses.


5. Turn around time

Terjadinya penjadwalan menyebabkan waktu total yang dibutuhkan suatu proses untuk menyelesaikan tugasnya menjadi lebih lama kare- na harus menunggu jika prosesor dijadwalkan ke proses lainnya. Turn around time merupakan durasi waktu dari saat suatu proses mulai aktif dalam sistem sampai proses tersebut selesai. Turn around time merupakan hasil penjumlahan antara durasi eksekusi proses (run- ning), durasi menunggu di antrian ready serta durasi proses terblok (blocked). Durasi proses terblok tergantung pada faktor luar seperti operasi I/O, interval penekanan keyboard oleh pengguna sehingga umumnya tidak diperhitungkan dalam menganalisa suatu algoritma penjadwalan. Sama halnya dengan waiting time, umumnya rata-rata turn around time yang kecil lebih dikehendaki.


6. Throughput

Throughput merupakan rata-rata proses yang dapat diselesaikan per satuan waktu. Algoritma penjadwalan yang baik memiliki nilai throughput yang tinggi. Ini artinya algoritma penjadwalan harus memastikan prosesor bekerja terus menerus serta meminimalkan hal- hal yang tidak berkaitan langsung dengan penyelesaian tugas proses, seperti proses switching. Jika process switching terlalu sering terjadi. berarti waktu prosesor banyak tersita untuk backup/restore konteks prosesor dan bukannya mengeksekusi kode instruksi proses.


Faktor-faktor di atas umumnya saling berbenturan satu sama lain. Misal- nya untuk mendapatkan throughput yang tinggi, proses switching perlu diminimalkan, tetapi dapat berdampak pada melambatnya waktu tang- gapan (response time) bagi pengguna. Penentuan faktor mana yang men jadi prioritas sangat bergantung pada jenis sistem komputernya. Misalnya pada sistem yang interaktif, multiuser, ataupun realtime, faktor response time menjadi faktor yang paling diprioritaskan dalam merancang algoritma penjadwalan proses. Sementara pada sistem batch, yang meng- eksekusi proses-proses secara sekuensial, faktor throughput dan processor utilization menjadi faktor yang paling diutamakan.


4.2.3 STRATEGI DASAR PENJADWALAN

Strategi penjadwalan proses secara umum dibedakan menjadi dua kelompok besar, yaitu penjadwalanan non-preemptive dan preemptive.


1. Non-preemptive (run-to-completion)

Pada strategy non-preemtive, begitu proses telah berjalan maka sistem operasi maupun proses lain tidak dapat mengambil alih eksekusi prosesor. Pengalihan hanya dapat terjadi jika proses yang running sudah selesai, baik secara normal maupun abnormal. Strategi ini membahayakan sistem dan proses lain, sebab jika proses yang sedang berjalan mengalami kegagalan, crash ataupun looping tak berhingga maka sistem operasi menjadi tidak berfungsi dan proses lain tidak mendapatkan kesempatan untuk dieksekusi. Strategi penjadwalan non-preemptive umumnya digunakan pada sistem batch atau sekuensial.


2. Preemptive

Pada strategi preemptive, sistem operasi dan proses lain dapat mengambil alih eksekusi prosesor tanpa harus menunggu proses yang sedang running menyelesaikan tugasnya. Penjadwalan preemptive merupakan fitur yang penting, terutama pada sistem di mana proses- proses memerlukan tanggapan prosesor secara cepat. Sebagai contoh adalah sistem real-time, di mana jika terjadi interupsi dan tidak segera dilayani maka dapat berakibat fatal. Contoh lain adalah sistem interaktif time-sharing, di mana pengguna sistem mengharapkan tanggapan yang cepat dari sistem. Secara umum, sistem konkuren seperti sistem operasi yang multitasking lebih menghendaki sistem penjadwalan preemptive.


4.2.4 PEMICU TERJADINYA PENJADWALAN


Kapan sesungguhnya penjadwalan itu dilakukan oleh sistem operasi? Gambar 4.3 menunjukkan kemungkinan transisi proses yang memicu terjadinya penjadwalan proses.


Gambar 4.3 Pemicu terjadinya penjadwalan proses

Sejumlah pemicu atau keadaan yang mengaktifkan fungsi penjadwalan proses antara lain:


1. Proses berubah dari status running ke blocked

Keadaan ini dapat disebabkan karena proses melakukan system call untuk meminta operasi I/O (I/O Request), seperti membaca berkas dari disk ataupun scanner atau karena menunggu suatu event atau interupsi (wait for an interrupt), seperti inputan keyboard oleh peng- guna. System call tersebut akan mengalihkan proses yang running ke status blocked dan kemudian memanggil rutin penjadwalan proses (scheduler) untuk memilih proses berikutnya yang akan dieksekusi.


2. Proses berubah dari status running ke ready

Keadaan ini disebabkan proses yang sedang running sudah habis time- slice-nya (time slice expired). Pengendalian jatah waktu eksekusi dilakukan oleh suatu pewaktu yang akan melakukan interupsi ke prosesor jika jatah waktu eksekusi suatu proses sudah habis. Rutin pe- nanganan interupsi pewaktu ini selanjutnya akan mengalihkan proses yang running ke status ready dan kemudian memanggil rutin penjadwalan proses untuk memilih proses berikutnya yang akan dieksekusi.


3. Proses berubah dari status blocked 'ke ready

Ketika permintaan akses I/O ataupun event yang ditunggu oleh suatu proses yang berstatus blocked telah terpenuhi maka akan terjadi interupsi. Akibatnya proses yang sedang running akan terhenti dan terjadi pengalihan konteks eksekusi ke rutin penanganan interupsi. Rutin ini akan mengalihkan proses yang meminta akses I/O dari status blocked menjadi ready atau dengan kata lain memindahkan proses tersebut dari antrian I/O ke antrian ready. Pada akhirnya rutin ini akan memanggil fungsi penjadwalan proses. Perhatikan, proses yang terpilih dapat berupa proses yang terakhir running atau proses yang baru dipindahkan ke antrian ready ataupun proses lain yang ada sudah berada di antrian ready.


4. Proses berhenti (Terminated)

Proses yang berhenti secara normal akan memanggil system call "exit", sedangkan proses yang berhenti secara abnormal umumnya disertai dengan terjadinya trap. Rutin system call exit maupun rutin penangan trap seperti itu akan melakukan penghapusan proses dari sistem dan diakhiri dengan memanggil fungsi penjadwalan proses.


Pada sistem yang menggunakan strategi penjadwalan non-preemptive, fungsi penjadwalan proses hanya dipicu oleh keadaan nomor 1 dan 4.


4.2.5 ALGORITMA PENJADWALAN

Bagian ini akan membahas bagaimana scheduler melakukan pemilihan proses. Ada berbagai macam algoritma pemilihan atau penjadwalan. Beberapa yang akan dibahas disini adalah algoritma FIFO (First in First Out) atau disebut juga FCFS (First Come First Serve), SJF (Shortest Job First) dan HRRN (Highest Response Ratio Next) Ketiga algoritma ini merupakan algoritma penjadwalan non-preemptive. Namun untuk SJF dan HRRN dimungkinkan membuat versi preemptive-nya.


Selain itu, akan dibahas sejumlah algoritma penjadwalan preemptive lain- nya seperti RR (Round Robin). SRT (Shortest Remaining Time), GS (Guaranteed Scheduling), MLQ (Multi Level Queueing), MFQ (Multi Level Feedback Queueing). Algoritma RR tidak menggunakan prioritas dalam penjadwalannya, sedangkan algoritma lainnya memberikan nilai prioritas yang dinamis pada proses setiap kali terjadi penjadwalan.


Algoritma Penjadwalan Non-Preemptive

1. FIFO (First In First Out) / FCFS (First Come First Serve)

FIFO/FCFC merupakan algoritma penjadwalan non-preemptive, tidak berprioritas. Setiap proses diberi jadwal eksekusi berdasarkan urutan waktu kedatangannya. Begitu proses mendapatkan jatah eksekusi maka proses akan dijalankan sampai selesai. FIFO jarang digunakan secara tersendiri tetapi dikombinasi dengan algoritma lain karena dapat menyebabkan job yang pendek harus menunggu selesainya job panjang, atau job yang penting harus menunggu job yang kurang penting. FIFO cocok untuk sistem batch yang sangat jarang berinteraksi dengan pengguna, tetapi sangat buruk untuk sistem interaktif dan sistem real-time, karena cenderung memberikan response time yang buruk.

Sebagai contoh, ada tiga proses, yaitu P1, P2, P3 yang sedang menunggu dijadwal dengan prediksi burst time (waktu eksekusi) 24 ms (millisecond atau milidetik), 3 ms, dan 3 ms secara berturut-turut. Diasumsikan ketiga proses masuk pada saat yang hampir bersamaan, yaitu detik ke 0.


Process


Burst Time


P1


24 ms


P2


3 ms


P3


3 ms


Misalnya urutan masuknya proses: p_{1} , P2, P3 maka Gantt Chart untuk penjadwalnya adalah:


Secara umum, untuk menghitung waiting time suatu proses, rumusnya adalah waktu selesai waktu mulai - burst time atau:


t_waiting = t_end - t_start - t_burst_time


a. Waiting time untuk PI=0: P2=24~ms P3=27 ms, sehingga


b. Rerata Waiting time: (0+24+27)/3=17 ms


Sementara jika urutan masuknya proses: P2, P3, P1, maka Gantt Chart untuk penjadwalnya adalah


a. Waiting time untuk Pl=6ms ; P2=0; P3=3 ms, sehingga

b. Rerata waiting time. (6+0+3)/3= 3ms

Nilai rerata waiting time ini lebih baik dari dari sebelumnya sekalipun burst time setiap proses adalah sama. Perbedaanya di sini adalah proses yang lebih pendek ditaruh di depan antrian. Ini merupakan ide dari algoritma penjadwalan berikutnya SJF.


2. SJF (Shortest Job First)

SJF merupakan penjadwalan non-preemptive, tidak berprioritas. Penjadwalan ini mengasumsikan waktu running (burst time) proses diketahui. Proses dengan waktu burs time paling pendek akan dijadwalkan terlebih dahulu dan dieksekusi sampai selesai. 

Sebagai contoh, jika diketahui:

(Tabel Data)


Gantt Chart untuk penjadwalnya adalah:

a. Waiting time P1=0ms, P2=6 ms, P3= 3ms, P4=7 ms, sehingga

b. Rerata waiting time = (0+6+3+7)/4 = 4 ms


3. HRRN (Highest Response Ratio Next)

HRRN merupakan penjadwalan non-preemptive menggunakan prioritas dinamis. Penjadwalan ini memperbaiki Shortest Job First. Prioritas proses tidak hanya merupakan fungsi waktu layanan, tetapi jumlah waktu tunggu proses. Prioritas dinamis HRRN dihitung berdasarkan rumus:


Prioritas = (waktu tunggu + waktu layanan) / waktu layanan

Dari rumusnya terlihat bahwa proses yang memiliki waktu eksekusi terpendek memiliki prioritas tinggi. Begitu juga untuk proses yang telah menunggu lama.


Algoritma Penjadwalan Preemptive


1. RR (Round Robin)

RR merupakan penjadwalan preemptive tanpa prioritas. Proses disela oleh sistem operasi berdasarkan lama waktu berjalannya proses. Semua proses dianggap penting dan diberi jatah waktu pemakaian prosesor yang disebut time slice atau quantum. Ketentuan algoritma round robin adalah sebagai berikut:


a. Jika quantum habis dan proses belum selesai maka proses akan dialihkan statusnya menjadi ready dan penjadwal akan dijalankan untuk memilih proses lain untuk dieksekusi.


b. Jika quantum belum habis dan proses sedang menunggu suatu event ataupun operasi I/O maka status proses menjadi blocked dan penjadwal akan dijalankan untuk memilih proses lain untuk dieksekusi.


c. Jika quantum belum habis, tetapi proses telah selesai maka proses diakhiri dan penjadwal akan dijalankan untuk memilih proses lain untuk dieksekusi.


Sebagi contoh:


Process


PI


53 ms


P2


P3


17 ms


68 ms


P4


Burst Time


24 ms


Dengan asumsi quantum time = 20 ms maka Gantt Chart penjadwalan prosesnya adalah:

a. Waiting time P1=(134-0-53)= 81ms, P2=(37-20-17)= 0ms, P3=(162-37-68)= 58ms, P4=(121-57-24) 40 ms, sehingga

b. Rerata waiting time adalah (81+0+58+40)/4=59,7~ms Umumnya algoritma round robin memiliki rata-rata turnaround time yang lebih tinggi dibanding SJF, tetapi dengan response time yang lebih baik.


2. SRT (Shortest-Remaining Time)

SRT merupakan penjadwalan preemptive menggunakan prioritas dinamis. Penjadwalan ini melengkapi SJF. SJF umumnya merupakan penjadwalan non-preemptive, sedangkan SRT merupakan penjadwalan preemptive untuk timesharing. Menggunakan algoritma SRT, proses dengan estimasi sisa waktu burst-time terpendek akan dijalankan terlebih dahulu, termasuk proses-proses baru. Proses yang sedang running dapat diambil alih oleh proses baru yang memiliki sisa burst- time yang lebih kecil.


Sebagai contoh, jika diketahui:


Gantt Chart untuk penjadwalnya adalah:

a. Waiting time P1= 9ms, P2= 1ms, P2= 0 ms, P4= 2 ms, sehingga

b. Rerata waiting time =(9+1+0+2)/4= 3 ms.


3. PS (Priority Sheduling)

PS merupakan algoritma penjadwalan preemptive. Menggunakan PS, setiap proses diberi nilai prioritas. Nilai prioritas proses ini dapat bersifat statis ataupun dinamis (berubah terus dari waktu ke waktu). Proses dengan prioritas yang lebih tinggi akan dijadwal lebih dahulu. Jika ada proses baru yang masuk dengan prioritas lebih tinggi dari proses yang sedang berjalan maka akan terjadi preemption dan prosesor akan dialihkan ke proses yang baru tersebut.


4. GS (Guaranteed Schedulling)

GS merupakan penjadwalan preemptive menggunakan prioritas dinamis. Jika terdapat N pemakai, setiap pemakai diusahakan senan- tiasa mendapat (1/N) waktu prosesor. Pada saat terjadi penjadwalan dihitung rasio waktu running semenjak login setiap pemakai dan waktu pemakaian prosesor secara keseluruhan. Penjadwal akan men- jalankan proses dengan rasio terendah atau dengan kata lain proses yang paling sedikit mendapatkan jatah yang seharusnya.


5. MLQ (Multi Level Queues)

MLQ merupakan penjadwalan preemptive. Proses-proses dibagi atas group dan ditempatkan pada antrian yang berbeda. Perhatikan Gambar 4.4, setiap antrian memiliki prioritas yang berbeda dan jatah waktu eksekusi atau quantum yang berbeda. Algoritma penjadwalan pada masing-masing antrian dapat saja berbeda, misalnya satu antrian menggunakan RR sedangkan antrian lainnya menggunakan FCFS ataupun GS. Sementara algoritma penjadwalan antar antrian dapat menggunakan Priority Scheduling (PS) sedangkan Round Robin (RR). Jika dengan PS maka seluruh proses ses pada antrian yang berprioritas lebih tinggi akan dijadwal dahulu sampai selesai semuanya, baru penjadwalan dilakukan pada proses-proses yang berada pada antrian berprioritas lebih rendah berikutnya. Jika dengan RR maka setiap antrian akan mendapatkan jatah penjadwalan secara bergilir. Antrian yang berprioritas lebih tinggi diberi waktu quantum yang lebih lama.

Gambar 4.4 Model penjadwalan MLO


6. MFQ (Multi Level Feedback Queues)

MFQ merupakan algoritma penjadwalan preemptive berprioritas di- namis berdasarkan jumlah quantum time. MFQ menggunakan sejumlah antrian dengan prioritas dan quantum time yang berbeda. Misalnya antrian dengan prioritas tertinggi memiliki quantum time 8 ms, sedangkan antrian dengan prioritas berikutnya memiliki quantum time 16 ms, dan seterusnya, seperti ditunjukkan pada Gambar 4.5.


Gambar 4.5 Algoritma MFQ

Suatu proses baru selalu dimasukkan pada antrian berprioritas tertinggi. Jika dalam waktu 1 quantum proses tersebut belum selesai maka proses bersangkutan akan dipindahkan ke antrian berikutnya yang memiliki quantum time yang lebih besar. Jika pada antrian berprioritas lebih tinggi masih terdapat proses maka penjadwalan akan memilih proses tersebut lebih dahulu sampai semuanya selesai ataupun dipindahkan ke antrian level bawahnya.

Pada antrian level paling bawah, proses-prosesnya akan dijadwal seca- ra batch dengan FCFS. Variasi algoritma penjadwalan pada masing- masing antrian sangat mungkin dilakukan. Keuntungan algoritma penjadwalan ini adalah, proses yang pendek ataupun proses baru tidak perlu menunggu proses panjang yang sedang berjalan. Proses baru akan segera dieksekusi, dan jika waktu eksekusinya pendek maka proses tersebut akan selesai dalam 1 quantum. Algoritma ini cen- derung memberikan nilai response time yang baik serta rerata waiting time yang kecil.