PENGATURAN PROSES A. Konsep proses dalam sistem operasi Process: Program yang sedang dieksekusi Proses tidak hanya sekedar suatu kode program (text section), melainkan meliputi beberapa aktivitas yang bersangkutan seperti program counter dan stack. Sebuah proses juga melibatkan stack yang berisi data sementara (parameter fungsi/metode, return address, dan variabel lokal) dan data section yang menyimpan variabel-variabel global.. Sistem Operasi mengeksekusi proses dengan dua cara yaitu Batch System yang mengeksekusi jobs dan Time-shared System yang mengatur pengeksekusian program pengguna (user) atau tasks. Perbedaan antara program dengan proses adalah program merupakan entitas yang pasif, yaitu suatu file yang berisi kumpulan instruksi-instruksi yang disimpan di dalam disk (file executable), sedangkan proses merupakan entitas yang aktif, dengan sebuah program counter yang menyimpan alamat instruksi selanjut yang akan dieksekusi dan seperangkat sumber daya (resource) yang dibutuhkan agar sebuah proses dapat dieksekusi. Peran sistem operasi dalam kegiatan proses adalah mengelola semua proses di sistem dan mengalokasikan sumber daya ke proses tersebut. Banyak proses yang dijalankan bersamaan, dimana setiap proses mendapat bagian memori dan kendali sendiri-sendiri (peran SO), sehingga setiap proses (program) memiliki prinsip : a. Independent, artinya program-program tersebut berdiri sendiri, terpisah dan saling tidak bergantung. b. One program at any instant, artinya hanya terdapat satu proses yang dilayani pemroses pada satu saat. Dalam multiprogramming, teknik penanganan proses adalah denganM mengeksekusi satu proses dan secara cepat beralih ke proses lainnya (bergiliran), sehingga menimbulkan efek paralel semu (pseudoparallelism). Status Proses Meskipun tiap-tiap proses terdiri dari suatu kesatuan yang terpisah namun adakalanya proses-proses tersebut butuh untuk saling berinteraksi. Satu proses bisa dibangkitkan dari output proses lainnya sebagai input. Pada saat proses dieksekusi, akan terjadi perubahan status. Status proses didefiniskan sebagai bagian dari aktivitas proses yang sedang berlangsung saat itu. 1/13 Status proses terdiri dari : a. New: proses sedang dibuat. b. Running: proses sedang dieksekusi. c. Waiting: proses sedang menunggu beberapa event yang akan terjadi (seperti menunggu untuk menyelesaikan I/O atau menerima sinyal). d. Ready: proses menunggu jatah waktu dari CPU untuk diproses. e. Terminated: proses telah selesai dieksekusi. Gambar 3.1 menunjukkan diagram status proses. Terminasi Proses Suatu proses diterminasi ketika proses tersebut telah selesai mengeksekusi perintah terakhir serta meminta sistem operasi untuk menghapus perintah tersebut dengan menggunakan system call exit. Proses dapat mengembalikan data keluaran kepada proses induk-nya melalui system call wait Process Control Block (PCB) Masing-masing proses direpresentasikan oleh Sistem Operasi dengan menggunakan Process Control Block (PCB), seperti yang terlihat pada Gambar 3-2. 2/13 Informasi yang terdapat pada setiap proses meliputi : a. Status Proses. New, ready, running, waiting dan terminated. b. Program Counter. Menunjukkan alamat berikutnya yang akan dieksekusi oleh proses tersebut. c. CPU Registers. Register bervariasi tipe dan jumlahnya tergantung arsitektur komputer yang bersangkutan. Register-register tersebut terdiriatas: accumulator, index register, stack pointer, dan register serbaguna dan beberapa informasi tentang kode kondisi. Selama Program Counter berjalan, status informasi harus disimpan pada saat terjadi interrupt. Gambar 3-3 menunjukkan switching proses dari satu proses ke proses berikutnya. d. Informasi Penjadwalan CPU. Informasi tersebut berisi prioritas dari suatu proses, pointer ke antrian penjadwalan, dan beberapa parameter penjadwalan yang lainnya. e. Informasi Manajemen Memori. Informasi tersebut berisi nilai (basis) dan limit register, page table, atau segment table tergantung pada sistem memory yang digunakan oleh SO. f. Informasi Accounting. Informasi tersebut berisi jumlah CPU dan real time yang digunakan, time limits, account numbers, jumlah job atau proses, dll. g. Informasi Status I/O. Informasi tersebut berisi deretan I/O device (seperti tape driver) yang dialokasikan untuk proses tersebut, deretan file yang dibuka, dll. 3/13 B. Penjadwalan proses Dalam pemroses tunggal, hanya satu proses yang dapat dijalankan pada saat tertentu, sedangkan yang lain harus menunggu CPU bebas dan dijadwal ulang. Multiprogramming merupakan cara untuk menjalankan proses setiap waktu sehingga memaksimalkan penggunaan CPU. Penjadwalan merupakan salah satu fungsi dasar dari sistem operasi. Hampir semua sumber daya komputer dijadwalkan sebelum digunakan. Penjadwalan adalah suatu pekerjaan yang dilakukan untuk mengalokasikan CPU time untuk tasks yang berbeda-beda dalam sistem operasi. Untuk linux ada aspek lain yang penting dalam penjadwalan: seperti menjalankan dengan berbagai kernel tasks. Linux mempunyai dua algoritma penjadwalan yaitu a. algoritma time-sharing untuk penjadwalan preemptive yang adil diantara sekian banyak proses. b. algoritma yang kedua didesain untuk tugas real-time dimana proritas mutlak lebih utama daripada keadilan mendapatkan suatu pelayanan. 3 Konsep Penjadwalan Decision Mode Priority Function Arbitration Rule Algoritma Penjadwalan : First In First Out Algoritma ini merupakan algoritma penjadwalan yang paling sederhana yang digunakan CPU. Dengan menggunakan algoritma ini seiap proses yang berada pada status ready dimasukkan ke dalam antrian FIFO sesuai dengan waktu kedatangannya. Proses yang tiba terlebih dahulu yang akan dieksekusi terlebih dahulu. Kelemahan dari algoritma ini: a. Waiting time rata-ratanya cukup lama. b. Terjadinya convoy effect, yaitu proses-proses menunggu lama untuk menunggu satu proses besar yang sedang dieksekusi oleh CPU. Algoritma ini juga menerapkan konsep non-preemptive, yaitu setiap proses yang sedang dieksekusi oleh CPU tidak dapat di-interrupt oleh proses yang lain. Priority Scheduling Priority Scheduling merupakan algoritma penjadwalan yang mendahulukan proses dengan nilai prioritas tertinggi. Setiap proses memiliki prioritasnya masing-masing. Prioritas suatu proses dapat ditentukan melalui beberapa karakteristik antara lain: a. Batas waktu b. Kebutuhan Memori 4/13 c. Akses file d. Perbandingan antara I/O Burst dengan CPU Burst e. Tingkat kepentingan proses Kelemahan pada penjadwalan prioritas adalah dapat terjadinya indefinite blocking (starvation) yaitu suatu proses dengan prioritas yang rendah memiliki kemungkinan untuk tidak dieksekusi jika terdapatpros es lain yang memiliki prioritas lebih tinggi darinya. Solusi dari permasalahan ini adalah aging, yaitu meningkatkan prioritas dari setiap proses yang menunggu dalam antrian secara bertahap. Last In First Out Shortest Job Next Shortest Remaining Time Round Robin Algoritma ini didesin untuk sistem time-sharing. Proses akan mendapat jatah sebesar time quantum dengan nilai quantum umumnya sebesar 10-100 ms. Jika time quantum-nya habis atau proses sudah selesai CPU akan dialokasikan ke proses berikutnya. Tentu proses ini cukup adil karena tak ada proses yang diprioritaskan, semua proses mendapat jatah waktu yang sama dari CPU (1/n), dan tak akan menunggu lebih lama dari (n-1)/q. Permasalahan utama pada Round Robin adalah menentukan besarnya time quantum. Jika time quantum yang ditentukan terlalu kecil, maka sebagian besar proses tidak akan selesai dalam 1 time quantum. Hal ini tidak baik karena akan terjadi banyak switch, padahal CPU memerlukan waktu untuk beralih dari suatu proses ke proses lain (disebut dengan context switches time). Sebaliknya, jika time quantum terlalu besar, algoritma Round Robin akan berjalan seperti algoritma First Come First Served. Time quantum yang ideal adalah jika 80% dari total proses memiliki CPU burst time yang lebih kecil dari 1 time quantum. Multilevel Feedback Algoritma ini mirip sekali dengan algoritma Multilevel Queue. Perbedaannya ialah algoritma ini mengizinkan proses untuk pindah antrian. Jika suatu proses menyita CPU terlalu lama, maka proses itu akan dipindahkan ke antrian yang lebih rendah. Ini menguntungkan proses interaksi, karena proses ini hanya memakai waktu CPU yang sedikit. Demikian pula dengan proses yang menunggu terlalu lama. Proses ini akan dinaikkan tingkatannya. Biasanya prioritas tertinggi diberikan kepada proses dengan CPU burst terkecil, dengan begitu CPU akan dimanfaatkan penuh dan I/O dapat terus sibuk. Semakin rendah tingkatannya, panjang CPU burst proses juga semakin besar. Antrian Penjadwalan Penjadwalan direpresentasikan dalam bentuk antrian yang disimpan sebagai linkedlist dan berisi pointer awal dan akhir PCB. Tiap-tiap PCB memiliki suatu pointermfield yang menunjuk ke proses berikutnya. 5/13 Jenis-jenis antrian penjadwalan adalah sebagai berikut : • Job Queue. Semua proses yang masuk pada suatu sistem akan diletakkan ke dalam job queue. • Ready Queue. Sedangkan proses-proses yang ada di memori utama dan menunggu untuk dieksekusi diletakkan pada suatu list yang disebut dengan ready queue. • Device Queue. Deretan proses yang sedang menunggu peralatan I/O tertentu disebut dengan device queue. Setiap proses dapat berpindah dari satu antrian ke antrian lain. Gambar 3-4 menunjukkan contoh ready queue dan device queue. Representasi dari penjadwalan proses dapat dilihat pada Gambar 3-5. 6/13 Penjadwal (Scheduler) Terdapat dua bentuk penjadwal, yaitu: a. Longterm-Scheduler (job scheduler), menyeleksi proses-proses mana yang harus dibawa ke ready queue. b. Short-term Scheduler (CPU scheduler), memilih proses-proses yang siap untuk dieksekusi, dan mengakolakasikan CPU ke salah satu dari proses-proses tersebut. Selain kedua jenis penjadwal diatas terdapat satu jenis penjadwal yang disebut dengan medium-term scheduler. Short-term scheduler terjadi sangat sering (dalam milidetik), jadi setiap proses dijadwal dengan cepat, sedangkan long-term scheduler terjadi sangat jarang (dalam detik atau menit), sehingga setiap proses dijadwal dengan lambat. Longterm scheduler digunakan untuk mengontrol tingkat multiprogramming. Secara umum, proses dapat digambarkan sebagai : • I/O bound process, yaitu proses-proses yang membutuhkan lebih banyak waktu untuk menjalankan I/O daripada melakukan komputasi, sehingga CPU burst yang dibutuhkan lebih singkat. • CPU bound process, yaitu proses-proses yang membutuhkan lebih banyak waktu untuk melakukan komputasi daripada menjalankan I/O sehingga CPU burst yang dibutuhkan lebih lama. Context Switch Ketika CPU berpindah dari proses satu ke proses lainnya, sistem harus menyimpan status dari proses yang lama dan membuka state proses baru yang sudah disimpan. Contex switch adalah proses penyimpanan status proses dan 7/13 mengambil status proses yang baru pada saat terjadi switching. Pada saat terjadi perpindahan proses, sistem tidak bekerja. Waktu context switch tergantung pada perangkat keras yang digunakan. C. Deadlock Deadlock dalam arti sebenarnya adalah kebuntuan. Kebuntuan yang dimaksud dalam sistem operasi adalah kebuntuan proses. Jadi Deadlock ialah suatu kondisi dimana proses tidak berjalan lagi atau tidak ada komunikasi lagi antar proses. Deadlock disebabkan karena proses yang satu menunggu sumber daya yang sedang dipegang oleh proses lain, proses lain itu pun sedang menunggu sumber daya yang dipegang olehnya. Dengan kata lain setiap proses dalam set menunggu untuk sumber yang hanya dapat dikerjakan oleh proses lain dalam set sedang menunggu. Contoh: Deadlock yang terjadi pada persimpangan jalan. Karakteristik Deadlock Kondisi yang menyebabkan deadlock: 1. Mutual exclusion. Hanya ada satu proses yang boleh memakai sumber daya, dan proses lain yang ingin memakai sumber daya tersebut harus menunggu hingga sumber daya tadi dilepaskan atau tidak ada proses yang memakai sumber daya tersebut. 2. Hold and wait. Proses yang sedang memakai sumber daya boleh meminta sumber daya lagi maksudnya menunggu hingga benar-benar sumber daya yang diminta tidak dipakai oleh proses lain, hal ini dapat menyebabkan kelaparan sumber daya sebab dapat saja sebuah proses tidak mendapat sumber daya dalam waktu yang lama. 8/13 3. No preemption. Sumber daya yang ada pada sebuah proses tidak boleh diambil begitu saja oleh proses lainnya. Untuk mendapatkan sumber daya tersebut, maka harus dilepaskan terlebih dahulu oleh proses yang memegangnya, selain itu seluruh proses menunggu dan mempersilahkan hanya proses yang memiliki sumber daya yang boleh berjalan. 4. Circular wait. Kondisi seperti rantai, yaitu sebuah proses membutuhkan sumber daya yang dipegang proses berikutnya. Ketiga syarat pertama merupakan syarat perlu (necessary conditions) bagi terjadinya deadlock. Keberadaan deadlock selalu berarti terpenuhi kondisikondisi diatas, tak mungkin terjadi deadlock bila tidak ada ketiga kondisi itu. Deadlock terjadi berarti terdapat ketiga kondisi itu, tetapi adanya ketiga kondisi itu belum berarti terjadi deadlock. Deadlock baru benar-benar terjadi bila syarat keempat terpenuhi. Kondisi keempat merupakan keharusan bagi terjadinya peristiwa deadlock. Bila salah satu saja dari kondisi tidak terpenuhi maka deadlock tidak terjadi Deadlock dapat digambarkan lebih presisi dengan menggunakan graph berarah yang disebut resource allocation graph. METODE MENANGANI DEADLOCK Terdapat tiga metode untuk menangani permasalahan deadlock yaitu : Menggunakan protocol untuk menjamin bahwa sistem tidak pernah memasuki status deadlock Mengijinkan sistem memasuki status deadlock dan kemudian memperbaikinya. Mengabaikan permasalahan dan seakan-akan deadlock tidak pernah terjadi pada sistem. Model ini yang banyak digunakan pada sistem operasi termasuk UNIX. MENCEGAH DEADLOCK Metode ini berkaitan dengan pengkondisian sistem agar menghilangkan kemungkinan terjadinya deadlock. Pencegahan merupakan solusi yang bersih dipandang dari sudut tercegahnya deadlock. Metode ini sering menghasilkan utilisasi sumber daya yang buruk. Pencegahan deadlock merupakan metode yang banyak dipakai. Untuk mencegah deadlock dilakukan dengan meniadakan salah satu dari syarat perlu sebagai berikut : • Mencegah Mutual Exclusion Mutual exclusion benar-benar tak dapat dihindari. Hal ini dikarenakan tidak ada sumber daya yang dapat digunakan bersama-sama, jadi sistem harus membawa 9/13 sumber daya yang tidak dapat digunakan bersama-sama. • Mencegah Hold and Wait Untuk mencegah hold and wait, sistem harus menjamin bila suatu proses meminta sumber daya, maka proses tersebut tidak sedang memegang sumber daya yang lain. Proses harus meminta dan dialokasikan semua sumber daya yang diperlukan sebelum proses memulai eksekusi atau mengijinkan proses meminta sumber daya hanya jika proses tidak membawa sumber daya lain. Model ini mempunyai utilitas sumber daya yang rendah dan kemungkinan terjadi starvation jika proses membutuhkan sumber daya yang popular sehingga terjadi keadaan menunggu yang tidak terbatas karena setidaknya satu dari sumber daya yang dibutuhkannya dialokasikan untuk proses yang lain. • Mencegah Non Preemption Peniadaan non preemption mencegah proses-proses lain harus menunggu. Seluruh proses menjadi preemption, sehingga tidak ada tunggu menunggu. Cara mencegah kondisi non preemption : a. Jika suatu proses yang membawa beberapa sumber daya meminta sumber daya lain yang tidak dapat segera dipenuhi untuk dialokasikan pada proses tersebut, maka semua sumber daya yang sedang dibawa proses tersebut harus dibebaskan. b. Proses yang sedang dalam keadaan menunggu, sumber daya yang dibawanya ditunda dan ditambahkan pada daftar sumber daya. c. Proses akan di restart hanya jika dapat memperoleh sumber daya yang lama dan sumber daya baru yang diminta. • Mencegah Kondisi Menunggu Sirkular Sistem mempunyai total permintaan global untuk semua tipe sumber daya. Proses dapat meminta proses kapanpun menginginkan, tapi permintaan harus dibuat terurut secara numerik. Setiap proses yang membutuhkan sumber daya dan memintanya maka nomor urut akan dinaikkan. Cara ini tidak akan menimbulkan siklus. Masalah yang timbul adalah tidak ada cara pengurutan nomor sumber daya yang memuaskan semua pihak. MENDETEKSI DEADLOCK Jika sistem tidak menyediakan algoritma mencegah deadlock dan menghindari deadlock, maka terjadi deadlock. Pada lingkungan ini sistem harus menyediakan: Algoritma yang menguji state sistem untuk menentukan apakah deadlock telah terjadi. Algoritma untuk memperbaiki dari deadlock. 10/13 PERBAIKAN DARI DEADLOCK Terdapat dua pilihan untuk membebaskan deadlock. Satu solusi sederhana adalah dengan menghentikan satu atau beberapa proses untuk membebaskan kondisi menunggu sirkular. Pilihan kedua adalah menunda beberapa sumber daya dari satu atau lebih proses yang deadlock. Terminasi Proses Untuk memperbaiki deadlock dengan terminasi proses, dapat diguankan salah satu dari dua metode di bawah ini : • Menghentikan (abort) semua proses yang deadlock • Menghentikan satu proses setiap waktu sampai siklus deadlock hilang. Untuk menentukan urutan proses yang harus dihentikan ada beberapa faktor yang harus diperhatikan : • Prioritas proses. • Berapa lama proses dijalankan dan berapa lama lagi selesai. • Sumber daya yang digunakan proses. • Sumber daya proses yang diperlukan untuk menyelesaikan task. • Berapa proses yang perlu diterminasi. • Apakah proses interaktif atau batch. Menunda Sumber Daya Untuk menghilangkan deadlock dengan menunda sumber daya, sumber daya dari proses harus ditunda dan memberikan sumber daya tersebut ke proses lain sampai siklus deadlock hilang. Jika penundaan dibutuhkan untuk menghilangkan deadlock, terdapat tiga hal yang perlu diperhatikan : • Pilihlah korban (sumber daya) yang mempunyai biaya minimal. • Lakukan rollback yaitu memulai kembali (restart) proses pada state yang selamat. • Harus dijamin starvation tidak akan terjadi karena kemungkinan beberapa proses selalu terpilih sebagai korban termasuk jumlah rollback sebagai faktor biaya. D. Concurency Pengertian kongkurensi Kondisi dimana pada saat yang bersamaan terdapat lebih dari satu proses disebut dengan kongkurensi (proses-proses yang kongkuren). Proses-proses yang mengalami kongkuren dapat berdiri sendiri (independen) atau dapat saling berinteraksi, sehingga membutuhkan sinkronisasi atau koordinasi proses yang baik. Untuk penanganan kongkuren, bahasa 11/13 pemograman saat ini telah memiliki mekanisme kongkurensi dimana dalam penerapannya perlu dukungan sistem operasi dimana bahasa berada. Prinsip-prinsip kongkurensi Kongkurensi merupakan kegiatan yang berhubungan dengan : a. Alokasi waktu pemroses untuk proses-proses yang aktif. b. Pemakaian bersama dan persaingan untuk mendapatkan sumber daya. c. Komunikasi antar proses. d. Sinkronisasi aktivitas banyak proses Masalah kongkurensi dapat terjadi pada : a. Banyak aplikasi. Pada sistem multiprogramming bisa terdapat banyak aplikasi sekaligus yang dijalankan di sistem komputer. b. Strukturisasi sebuah aplikasi yang terdiri dari kumpulan proses. Perluasan prinsip perancangan modular dan pemograman terstruktur adalah suatu aplikasi dapat secara efektif diimplementasikan sebagai kumpulan proses. Dengan sekumpulan proses, maka tiap proses menyediakan satu layanan spesifik tertentu. c. Strukturisasi sebuah proses. Saat ini untuk peningkatan kinerja maka satu proses dapat memiliki banyak thread yang independen. Thread-thread tersebut harus dapat bekerjasama untuk mencapai tujuan proses. Strukturisasi satu aplikasi dapat dilakukan dengan banyak proses atau banyak thread. Sistem operasi modern telah mendukung banyak thread yang berkinerja lebih bagus dibanding proses dalam kondisi/lingkungan yang lebih terkendali. Contoh : Suatu word processor antara lain mempunyai kemampuan : Pemisahan kata-kata Memformat baris menjadi rata kanan, kiri atau kanan-kiri. Aplikasi ini dapat diterapkan dengan banyak proses atau thread yang masingmasing mempunyai tugas tertentu. Dengan demikian, saat dilakukan penataan tampilan di layar, aplikasi sekaligus dapat menerima masukan dari mouse yang segera akan diteruskan ke aplikasi untuk mendapat perhatian. d. Strukturisasi sistem operasi Keunggulan strukturisasi dapat diterapkan ke pemrograman sistem. Beberapa sistem operasi aktual yang dipasarkan dan yang sedang dalam riset telah diimplementasikan sebagai kumpulan proses. Sistem operasi bermodelkan client/server. 12/13 Kesulitan-kesulitan dalam kongkurensi Kecepatan proses pada sistem dipengaruhi oleh : a. Aktivitas-aktivitas proses-proses lain. b. Cara sistem operasi menangani interupsi. c. Kebijaksanaan penjadwalan yang dilakukan oleh sistem operasi Beberapa kesulitan yang muncul : a. Pemakaian bersama sumber daya global. Apabila terdapat dua proses yang menggunakan variabel global yang sama serta keduanya membaca dan menulis ke variabel itu,maka urutan terjadinya pembacaan dan penulisan terhadap variabel itu menjadi kritis. b. Pengelolaan alokasi sumber daya agar optimal. Apabila proses A meminta suatu kanal masukan/keluaran tertentu dan dipenuhi kemudian terjadi proses A di suspend sebelum menggunakan kanal tersebut. Jika sistem operasi mengunci kanal (tidak memperbolehkan atau mencegah proses lain untuk menggunakannya), maka tindakan tersebut menghasilkan inefisiensi. c. Pencarian kesalahan pemrograman. Pencarian kesalahan pada pemograman kongkuren lebih sulit dibanding pencarian kesalahan pada program-program sekuen. Penanganan kongkurensi adalah dengan : a. Mengetahui proses-proses yang aktif. Sistem operasi mengelola senarai proses di sistem operasi. Senarai ini berupa senarai PCB proses. Senarai berjumlah sesuai jumlah state yang diimplementasikan sistem operasi. b. Mengatur alokasi dan dealokasi beragam sumber daya untuk tiap proses yang aktif. Sumber daya yang harus dikelola antara lain : Waktu pemroses Memori Berkas-berkas (file) Peralatan masukan/keluaran Dan sebagainya c. Proteksi data dan sumber daya fisik proses. Proteksi data dan sumber daya fisik masing-masing proses dari gangguan (interfensi) proses-proses lain. d. Hasil-hasil proses harus independen. Hasil-hasil proses harus independen terhadap kecepatan relatif proses-proses lain dimana eksekusi dilakukan. 13/13