MANAJEMEN PROSES
PROSES Konsep Proses suatu program yang sedang dalam keadaan eksekusi Status Proses pada saat program sedang dieksekusi akan terjadi perubahan. Status proses ini sebagai bagian dari aktivitas proses yang sedang berlangsung saat itu.
GAMBAR KEADAAN PROSES New, proses sedang dibuat Running, proses bisa dieksekusi, karena cpu tidak sedang mengerjakan proses lain Waiting, proses sedang menunggu beberapa event yang sedang terjadi (menunggu penyelesaian i/o) Ready, proses menunggu jatah waktu dari prosesor Terminated, proses selesai eksekusi
GAMBAR PCB Masing-masing proses direpresentasikan oleh SO menggunakan PCB : Status proses, New, Ready, Running, Waiting, Terminated Program Counter, menunjukkan alamat berikutnya yang akan dieksekusi oleh proses tersebut CPU Register, register bervariasi tipe dan jumlahnya tergantung arsitektur yang bersangkutan. Informasi Manajemen Memori Informasi pencatatan Informasi penjadwalan CPU, prioritas dari suatu proses Informasi I/O, daftar I/O yang digunakan PCB berfungsi sebagai tempat penyimpanan
PENJADUALAN PROSES Konsep Dasar Penjadwalan CPU menggunakan Multiprogramming. Multipragramming slalu terjadi berjalannya beberapa proses dalam suatu waktu. Konsepnya adalah suatu proses akan menggunakan CPU sampai proses tersebut dalam status wait (misalnya meminta I/O) atau selesai. Pada saat wait, maka CPU akan menganggur, untuk mengatasi hal ini, maka CPU dialihkan ke proses lain pada saat suatu proses sedang dalam keadaan wait, demikan seterusnya
PENJADUALAN ANTRIAN Ketika proses memasuki sistem, mereka diletakkan dalam antrian job. Antrian ini terdiri dari seluruh proses dalam sistem. Proses yang hidup pada memori utama dan siap menunggu/ wait untuk mengeksekusi disimpan pada sebuah daftar bernama ready queue Antrian ini biasanya disimpan sebagai daftar penghubung. Sebuah header ready queue berisikan penunjuk kepada PCB-PCB awal dan akhir. Setiap PCB memiliki pointer field yang menunjukkan proses selanjutnya dalam ready queue.
KEJADIAN YANG DAPAT TERJADI Proses tersebut dapat mengeluarkan sebuah permintaan I/O, lalu di tempatkan dalam sebuah antrian I/O. Proses tersebut dapat membuat subproses yang baru dan menunggu terminasinya sendiri. Proses tersebut dapat digantikan secara paksa dari CPU, sebagai hasil dari suatu interupsi, dan diletakkan kembali dalam ready queue.
OPERASI-OPERASI PADA PROSES Proses dalam sistem dapat dieksekusi secara bersama-sama, proses tersebut harus dibuat dan dihapus secara dinamis. Maka, sistem operasi harus menyediakan suatu mekanisme umtuk pembuatan proses dan terminasi proses.
PEMBUATAN PROSES Suatu proses dapat membuat beberapa proses baru, melalui sistem pemanggilan pembuatan proses, selama jalur eksekusi. Pembuatan proses dinamakan induk proses, sebagaimana proses baru di sebut anak dari proses tersbut. Tiap proses baru tersebut dapat membuat proses lainnya, membentuk suatu pohon proses Ketika suatu proses membuat proses baru, dua kemungkinan ada dalam term eksekusi: Induk terus menerus untuk mengeksekusi secara bersama-sama dengan anaknya. Induk menunggu sampai sebagian dari anaknya telah diakhiri/terminasi. Juga ada dua kemungkinan dalam term dari address space pada proses baru: Anak proses adalah duplikat dari induk proses. Anak proses memiliki program yang terisikan didalamnya.
TERMINASI PROSES Sebuah proses berakhir ketika proses tersebut selesai mengeksekusi pernyataan akhirnya dan meminta sistem operasi untuk menghapusnya dengan menggunakan sistem pemanggilan exit. Pada titik itu, Seluruh sumber-sumber dari proses-termasuk memori fisik dan virtual, membuka berkas, dan penyimpanan I/O di tempatkan kembali oleh sistem operasi. Ada situasi tambahan tertentu ketika terminasi terjadi. Sebuah proses dapat menyebabkan terminasi dari proses lain melalui sistem pemanggilan yang tepat (contoh abort). Catat bahwa induk perlu tahu identitas dari anaknya. Maka, ketika satu proses membuat proses baru, identitas dari proses yang baru diberikan kepada induknya. Induk dapat menterminasi/ mengakhiri satu dari anaknya untuk beberapa alasan, seperti: Anak telah melampaui kegunaannya atas sebagaian sumber yang telah diperuntukkan untuknya. Pekerjaan yang ditugaskan kepada anak telah keluar, dan sistem operasi tidak memeperbolehkan sebuah anak untuk meneruskan jika induknya berakhir.
HUBUNGAN ANTAR PROSES Proses dibedakan menjadi : Proses independen adalah apabila proses tersebut tidak dapat terpengaruh atau dipengaruhi oleh proses lain yang sedang dijalankan pada sistem. Berarti, semua proses yang tidak membagi data apa pun (baik sementara/ tetap) dengan proses lain proses kooperatif adalah proses yang dapat dipengaruhi atau pun terpengaruhi oleh proses lain yang sedang dijalankan dalam sistem.
ALASAN TERJADI PROSES KOORPERATIF Pembagian informasi: apabila beberapa pengguna dapat tertarik pada bagian informasi yang sama (sebagai contoh, sebuah berkas bersama), kita harus menyediakan sebuah lingkungan yang mengizinkan akses secara terus menerus ke tipe dari sumber-sumber tersebut. Kecepatan penghitungan/ komputasi: jika kita menginginkan sebuah tugas khusus untuk menjalankan lebih cepat, kita harus membagi hal tersebut ke dalam subtask, setiap bagian dari subtask akan dijalankan secara parallel dengan yang lainnya. Peningkatan kecepatan dapat dilakukan hanya jika komputer tersebut memiliki elemen-elemen pemrosesan ganda (seperti CPU atau jalur I/O). Modularitas: kita mungkin ingin untuk membangun sebuah sistem pada sebuah model modular-modular, membagi fungsi sistem menjadi beberapa proses atau threads. Kenyamanan: bahkan seorang pengguna individu mungkin memiliki banyak tugas untuk dikerjakan secara bersamaan pada satu waktu. Sebagai contoh, seorang pengguna dapat mengedit, memcetak, dan meng-compile secara paralel
KOMUNIKASI PROSES Komunikasi langsung Komunikasi tidak langsung. Komunikasi secara sikroni/ asinkron. Buffer otomatis atau eksplisit.
KOMUNIKASI LANGSUNG Setiap proses yang ingin berkomunikasi harus memiliki nama yang bersifat eksplisit baik penerimaan atau pengirim dari komunikasi tersebut. Dalam konteks ini, pengiriman dan penerimaan pesan secara primitive dapat dijabarkan sebagai: Send (P, message) - mengirim sebuah pesan ke proses P. Receive (Q, message) - menerima sebuah pesan dari proses Q. Sebuah jaringan komunikasi pada bahasan ini memiliki beberapa sifat, yaitu: Sebuah jaringan yang didirikan secara otomatis diantara setiap pasang dari proses yang ingin dikomunikasikan. Proses tersebut harus mengetahui identitas dari semua yang ingin dikomunikasikan. Sebuah jaringan adalah terdiri dari penggabungan dua proses. Diantara setiap pesan dari proses terdapat tepat sebuah jaringan.
KOMUNIKASI TIDAK LANGSUNG komunikasi tidak langsung, pesan akan dikirimkan pada dan diterima dari/ melalui mailbox (kotak surat) atau terminal-terminal Dua proses dapat saling berkomunikasi apabila kedua proses tersebut sharing mailbox. Pengirim dan penerima dapat dijabarkan sebagai: Send (A, message) - mengirim pesan ke mailbox A. Receive (A, message) - menerima pesan dari mailbox A. Dalam masalah ini, link komunikasi mempunyai sifat sebagai berikut: Sebuah link dibangun diantara sepasang proses dimana kedua proses tersebut membagi mailbox. Sebuah link mungkin dapat berasosiasi dengan lebih dari dua proses. Diantara setiap pasang proses komunikasi, mungkin terdapat link yang berbeda-beda, dimana setiap link berhubungan pada satu mailbox.
SINKRONISASI Komunikasi antara proses membutuhkan place by calls untuk mengirim dan menerima data primitive. Terdapat rancangan yang berbeda-beda dalam implementasi setiap primitive. Pengiriman pesan mungkin dapat diblok (blocking) atau tidak dapat dibloking (nonblocking) - juga dikenal dengan nama sinkron atau asinkron. Pengiriman yang diblok: Proses pengiriman di blok sampai pesan diterima oleh proses penerima (receiving process) atau oleh mailbox. Pengiriman yang tidak diblok: Proses pengiriman pesan dan mengkalkulasi operasi. Penerimaan yang diblok: Penerima mem blok samapai pesan tersedia. Penerimaan yang tidak diblok: Penerima mengembalikan pesan valid atau null.
BUFFERING Baik komunikasi itu langsung atau tak langsung, penukaran pesan oleh proses memerlukan antrian sementara. Pada dasarnya, terdapat tiga jalan dimana antrian tersebut diimplementasikan: Kapasitas nol: antrian mempunyai panjang maksimum 0, maka link tidak dapat mempunyai penungguan pesan (message waiting). Dalam kasus ini, pengirim harus memblok sampai penerima menerima pesan. Kapasitas terbatas: antrian mempunyai panjang yang telah ditentukan, paling banyak n pesan dapat dimasukkan. Jika antrian tidak penuh ketika pesan dikirimkan, pesan yang baru akan menimpa, dan pengirim pengirim dapat melanjutkan eksekusi tanpa menunggu. Link mempunyai kapasitas terbatas. Jika link penuh, pengirim harus memblok sampai terdapat ruang pada antrian. Kapasitas tak terbatas: antrian mempunyai panjang yang tak terhingga, maka, semua pesan dapat menunggu disini. Pengirim tidak akan pernah di blok.
THREAD
KONSEP DASAR Ada dua jenis proses, proses berat (heavyweight) atau biasa dikenal dengan proses tradisional, dan proses ringan atau kadang disebut thread. Keuntungan Tanggap: Multithreading mengizinkan program untuk berjalan terus walau pun pada bagian program tersebut di block atau sedang dalam keadaan menjalankan operasi yang lama. Sebagai contoh, multithread web browser dapat mengizinkan pengguna berinteraksi dengan suatu thread ketika suatu gambar sedang diload oleh thread yang lain. Pembagian sumber daya: Secara default, thread membagi memori dan sumber daya dari proses. Keuntungan dari pembagian kode adalah aplikasi mempunyai perbedaan aktifitas thread dengan alokasi memori yang sama. Ekonomis: Mengalokasikan memori dan sumber daya untuk membuat proses adalah sangat mahal. Alternatifnya, karena thread membagi sumber daya dari proses, ini lebih ekonomis untuk membuat threads. Pemberdayaan arsitektur multiprosesor: Keuntungann dari multithreading dapat ditingkatkan dengan arsitektur multiprosesor, dimana setiap thread dapat jalan secara parallel pada prosesor yang berbeda. Pada arsitektur prosesor tunggal, CPU biasanya berpindah-pindah antara setiap thread dengan cepat, sehingga terdapat ilusi paralelisme, tetapi pada kenyataannya hanya satu thread yang berjalan di setiap waktu.
MODEL MULTITHEREADING Implementasi multithreading yang umum ada tiga, yaitu : model many-to-one, one-to-one, dan many-to-many.
KERNEL THREAD Kernel thread didukung secara langsung oleh sistem operasi: pembentukan thread, penjadualan, dan managemen dilakukan oleh kernel dalam ruang kernel. Karena managemen thread telah dilakukan oleh sistem operasi, kernel thread biasanya lebih lambat untuk membuat dan mengelola daripada pengguna thread. Bagaimana pun, selama kernel mengelola thread, jika suatu thread di block tehadap sistem pemanggilan, kernel dapat menjadualkan thread yang lain dalam aplikasi untuk dieksekusi. Dalam lingkungan multiprosesor, kernel dapat menjadualkan thread dalam prosesor yang berbeda. Windows NT, Solaris, dan Digital UNIX adalah sistem operasi yang mendukung kernel thread.
MODEL ONE TO ONE Model one-to-one memetakan setiap thread pengguna ke dalam satu kernel thread. Hal ini membuat model one-to-one lebih sinkron daripada model many-to-one dengan mengizinkan thread lain untuk berjalan ketika suatu thread membuat pemblokingan terhadap sistem pemanggilan; hal ini juga mengizinkan multiple thread untuk berjalan secara parallel dalam multiprosesor. Kelemahan model ini adalah dalam pembuatan thread pengguna dibutuhkan pembuatan korespondensi thread pengguna. Karena dalam proses pembuatan kernel thread dapat mempengaruhi kinerja dari aplikasi maka kebanyakan dari implementasi model ini membatasi jumlah thread yang didukung oleh sistem.
MODEL MANY TO ONE Model many-to-one ini memetakan beberapa tingkatan pengguna thread hanya ke satu buah kernel thread. Managemen proses thread dilakukan oleh (di ruang) pengguna, sehingga menjadi efisien, tetapi apabila sebuah thread melakukan sebuah pemblokingan terhadap sistem pemanggilan, maka seluruh proses akan berhenti (blocked). Kelemahan dari model ini adalah multihreads tidak dapat berjalan atau bekerja secara paralel di dalam multiprosesor dikarenakan hanya satu thread saja yang bisa mengakses kernel dalam suatu waktu.
MODEL MANY TO MANY Beberapa tingkatan thread pengguna dapat menggunakan jumlah kernel thread yang lebih kecil atau sama dengan jumlah thread pengguna. Jumlah dari kernel thread dapat dispesifikasikan untuk beberapa aplikasi dan beberapa mesin (suatu aplikasi dapat dialokasikan lebih dari beberapa kernel thread dalam multiprosesor daripada dalam uniprosesor) dimana model many-to-one mengizinkan pengembang untuk membuat thread pengguna sebanyak mungkin, konkurensi tidak dapat tercapai karena hanya satu thread yang dapat dijadualkan oleh kernel dalam satu waktu. Model one-to-one mempunyai konkurensi yang lebih tinggi, tetapi pengembang harus hati-hati untuk tidak membuat terlalu banyak thread tanpa aplikasi dan dalam kasus tertentu mungkin jumlah thread yang dapat dibuat dibatasi.
PENJADUALAN CPU
KONSEP DASAR Penjadual adalah fungsi dasar dari suatu sistem operasi. Hampir semua sumber komputer dijadual sebelum digunakan. CPU salah satu sumber dari komputer yang penting yang menjadi sentral dari sentral penjadual di sistem operasi. Penjadual CPU adalah basis dari multi programming sistem operasi. Dengan men-switch CPU diantara proses. Akibatnya sistem operasi bisa membuat komputer produktif.
PENJADUAL CPU Preemptive Scheduling Ada 4 keaadan yg menjadi bahan pertimbangan penjadwalan oleh CPU : 1. Pada saat proses berpindah dari keadaan running ke waiting 2. Pada saat proses berpindah dari keadaan running ke ready 3. Pada saat proses berpindah dari keadaan waiting ke ready 4. Pada saat proses berhenti Apa bila memilih 1 & 4 non-preemptive, jika memilih 2 & 3 disebut Preemptive. Non-Preemptive adalah jika suatu proses menggunakan CPU, maka proses tersebut akan tetap membawa CPU sampai proses tersebut berhenti/dalam keadaan waiting. Preemptive adalah terjadi jika suatu proses ditinggalkan dan akan segera dikerjakan proses yang lain.
DISPATCHER Komponen yang lain yang terlibat dalam penjadual CPU adalan dispatcher. Dispatcher adalah modul yang memberikan kontrol CPU kepada proses yang fungsinya adalah: Alih Konteks Switching to user mode. Lompat dari suatu bagian di progam user untuk mengulang progam. Dispatcher seharusnya secepat mungkin.
KRITERIA PENJADUALAN CPU utilization, diharapkan CPU dalam keadaan sibuk, utilitas CPU dinyatakan dalam bentuk proses 0-100%,tapi kenyataannya hanya 40-100% Throughput, terjadi pada saat CPU sedang sibuk karena banyak proses yang dikerjakan dalam satu kesatuan waktu Turnround time, banyak waktu yang diperlukan untuk mengeksekusi proses, dari mulai menunggu untuk meminta tempat di memori utama, menunggu di ready queue, eksekusi oleh CPU dan mengerjakan I/O Waiting time, waktu yang diperlukan oleh suatu proses untuk menunggu di ready queue. Waiting time ini tidak mempengaruhi eksekusi proses dan penggunaan I/O Response time, waktu yang dibutuhkan oleh suatu proses dari minta dilayani hingga ada respon pertama yang menanggapi permintaan tsb Fairness, menyakinkan bahwa tiap-tiap proses akan mendapatkan pembagian waktu penggunaan CPU secara terbuka (fair)
ALGORITMA PENJADUALAN
FCFS (First Come First Serve) FCFS (First-Come-First-Served Scheduling) Proses pertama kali meminta jatah waktu untuk menggunakan CPU akan dilayani terlebih dahulu. Misalnya ada 3 proses P1, P2, & P3 sbb : Proses Burst time (ms) P1 24 P2 3 P3 Gant chart : P1 P2 P3 0 24 27 30
Waktu tunggu yang diberikan untuk tiap-tiap proses seperti tabel berikut : Waiting time (ms) P1 P2 24 P3 27 AWT (average waiting time) = (0+24+27)/3= 17 ms. Hal ini akan menjadi Sangat berbeda jika urutan kedatang proses adalah P2, P3 dan P1 Gant chart : P2 P3 P1 0 3 6 30
Waktu tunggu yang diberikan untuk tiap-tiap proses seperti tabel berikut : Waiting time (ms) P2 P3 3 P1 6 AWT =(0+3+6)/3= 3 ms. Metode FCFS adalah metode yang sangat sederhana dan mudah diimlementasikan. Metode ini mempunyai kelemahan, Karena mengakibatkan pembengkakan AWT jika proses yg dilayani terlebih Dahulu membutuhkan waktu proses (burst time) yg sangat lama. Algaritma FCFS termasuk non-preemptive, karena sekali CPU dialokasikan Pada suatu proses, maka proses tersebut tetap akan memakai CPU sampai Proses tersebut melepaskannya/jika proses berhenti.
SJF(Shortest Job First Sheduler) Proses yang memiliki CPU burst yang paling kecil dilayani terlebih dahulu. Misalnya ada 4 proses P1, P2, P3 & P4, yang meminta layanan CPU sbb : Proses Burst time (ms) P1 6 P2 8 P3 7 P4 3 Gant Chart : P4 P1 P3 P2 0 3 9 16 24
Waktu tunggu untuk tiap proses Waiting time (ms) P1 3 P2 16 P3 9 P4 Sehingga AWT nya = (3+16+9+0)/4 = 7 ms Algoritma ini belum optimal dan sulit untuk diimplementasikan, karena sulit Untuk mengetahui panjang CPU burst berikutnya, namun nilainya dapat di Prediksikan Algaritma SJF termasuk preemptive/non-preemptive. Jika ada proses P1 yg Datang pada saat P0 sedang berjalan, maka akan dilihat CPU burst P1. Pada non-preemptive, algoritma tetap akan menyelesaikan P0 sampai habis CPU burstnya. Pada Preemptive, jika CPU burst P! lebih kecil dari sisa waktu Yang dibutuhkan oleh P0, maka P0 akan dihentikan dulu, dan CPU ganti di Alokasikan ke P1.
Misalnya ada 4 proses P1, P2, P3 dan P4 yang meminta pelayanan CPU sbb : Arrival time Burst time (ms) P1 8 P2 1 4 P3 2 9 P4 3 5 Gant Chart : P1 P2 P4 P1 P3 0 1 5 10 17 26 Proses Waiting time (ms) P1 0+(10 -1) = 9 P2 1 -1 = 0 P3 17 - 2 = 15 P4 5 – 3 = 2 Waktu tunggu Untuk tiap proses : AWT = (9+0+15+2)/4 = 6.5 ms
Priority Scheduling Algoritma SJF adalah suatu kasus khusus dari priority scheduling. Tiap-tiap proses dilengkapi dengan prioritas. CPU dialokasikan untuk proses yang memiliki prioritas paling tinggi. Jika beberapa proses memiliki prioritas yang sama, maka akan digunakan algoritma FCFS. Misalnya ada 5 proses, P1, P2, P3, P4 dan P5 sbb : Proses Burst time (ms) Prioritas P1 10 3 P2 1 P3 2 P4 4 P5 5
Gant chart : P2 P5 P1 P3 P4 0 1 6 16 18 19 Waktu tunggu untuk tiap-tiap proses adalah : Proses Waiting time (ms) P1 6 P2 P3 16 P4 18 P5 1 AWT = (6+0+16+18+1)/5 = 8.2 ms Priority scheduling bersifat preemtive/non-preemptive. Jika ada proses P1 Yang datang pada saat P0 sedang berjalan, maka akan dilihat prioritas P1. Seandainya prioritas P1 lebih besar dibandingkan dengan P0, maka pada non- Preemptive, algaritmanya tetap akan menyelesaikan P0 sampai habis CPU Burstnya dan meletakan pada posisi head queue. Sedangkan pada preemtive, P0 akan dihentikan dulu dan CPU ganti dialokasikan untuk P1.
Round-Robin Scheduling Konsepnya menggunakan time sharing, hampir sama dengan algoritma FCFS hanya saja bersifa preemptive. Digunakan quantum-time untuk membatasi waktu proses. Jika suatu proses memiliki CPU burst lebih kecil dibandingkan dengan Quantum-time, maka proses tersebut akan melepaskan CPU jika telah Selesai bekerja, sehingga CPU dapat digunakan untuk prosesselanjutnya sebaliknya jika suatu proses memiliki CPU burst yang lebih besar di bandingkan dengan quantum-time, maka proses tersebut akan dihentikan sementara jika sudah mencapai quantum-time, dan selanjutnyaMengantri pada posisi ekor dari ready queue, CPU kemudian menjalankan proses berikutnya.Misal ada 3 proses, P1, P2 & P3, yang meminta pelayanan CPU, quantum-time = 4 ms. Proses Burst time (ms) P1 24 P2 3 P3
Gant chart : P1 P2 P3 P1 P1 P1 P1 P1 0 4 7 10 14 18 22 26 30 Waktu tunggu tiap-tiap proses : Proses Waiting time (ms) P1 0 + (10-4) = 6 P2 4 P3 7 AWT = (6+4+7)/3 = 5.66 ms Algoritma round robin ini memiliki keuntungan adanya keseragaman waktu