5- proses dan tread

Upload: iifracing

Post on 13-Oct-2015

30 views

Category:

Documents


0 download

TRANSCRIPT

MANAJEMEN PROSES

MANAJEMEN PROSES

PROSESKonsep Proses suatu program yang sedang dalam keadaan eksekusiStatus Prosespada saat program sedang dieksekusi akan terjadi perubahan. Status proses ini sebagai bagian dari aktivitas proses yang sedang berlangsung saat itu.GAMBAR KEADAAN PROSESNew, proses sedang dibuatRunning, proses bisa dieksekusi, karena cpu tidak sedang mengerjakan proses lainWaiting, proses sedang menunggu beberapa event yang sedang terjadi (menunggu penyelesaian i/o)Ready, proses menunggu jatah waktu dari prosesorTerminated, proses selesai eksekusi

GAMBAR PCBMasing-masing proses direpresentasikan oleh SO menggunakan PCB :Status proses, New, Ready, Running, Waiting, TerminatedProgram Counter, menunjukkan alamat berikutnya yang akan dieksekusi oleh proses tersebutCPU Register, register bervariasi tipe dan jumlahnya tergantung arsitektur yang bersangkutan.Informasi Manajemen MemoriInformasi pencatatanInformasi penjadwalan CPU, prioritas dari suatu prosesInformasi I/O, daftar I/O yang digunakanPCB berfungsi sebagai tempat penyimpanan

PENJADUALAN PROSESKonsep DasarPenjadwalan 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, untukmengatasi hal ini, maka CPU dialihkan ke proses lain pada saat suatu proses sedang dalam keadaan wait, demikan seterusnyaPENJADUALAN ANTRIANKetika 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 queueAntrian 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 TERJADIProses 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 PROSESProses 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 PROSESSuatu 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 PROSESSebuah 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 PROSESProses 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 lainproses kooperatif adalah proses yang dapat dipengaruhi atau pun terpengaruhi oleh proses lain yang sedang dijalankan dalam sistem. ALASAN TERJADI PROSES KOORPERATIFPembagian 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 paralelKOMUNIKASI PROSESKomunikasi langsung Komunikasi tidak langsung. Komunikasi secara sikroni/ asinkron. Buffer otomatis atau eksplisit.

KOMUNIKASI LANGSUNGSetiap 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 LANGSUNGkomunikasi 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. SINKRONISASIKomunikasi 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.

BUFFERINGBaik 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. THREADKONSEP DASARAda dua jenis proses, proses berat (heavyweight) atau biasa dikenal dengan proses tradisional, dan proses ringan atau kadang disebut thread. KeuntunganTanggap: 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 MULTITHEREADINGImplementasi multithreading yang umum ada tiga, yaitu :model many-to-one, one-to-one, dan many-to-many. KERNEL THREADKernel 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 ONEModel 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 ONEModel 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 MANYBeberapa 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 CPUKONSEP DASARPenjadual 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 CPUPreemptive SchedulingAda 4 keaadan yg menjadi bahan pertimbangan penjadwalanoleh CPU :1. Pada saat proses berpindah dari keadaan running ke waiting2. Pada saat proses berpindah dari keadaan running ke ready3. Pada saat proses berpindah dari keadaan waiting ke ready4. Pada saat proses berhentiApa 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.

DISPATCHERKomponen 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 PENJADUALANCPU 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 waktuTurnround 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/OWaiting time, waktu yang diperlukan oleh suatu proses untuk menunggu di ready queue. Waiting time ini tidak mempengaruhi eksekusi proses dan penggunaan I/OResponse time, waktu yang dibutuhkan oleh suatu proses dari minta dilayani hingga ada respon pertama yang menanggapi permintaan tsbFairness, menyakinkan bahwa tiap-tiap proses akan mendapatkan pembagian waktu penggunaan CPU secara terbuka (fair)ALGORITMA PENJADUALANFCFS (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 :ProsesBurst time (ms)P124P23P33Gant chart : 0 24 27 30P1 P2 P3Waktu tunggu yang diberikan untuk tiap-tiap proses seperti tabel berikut :ProsesWaiting time (ms)P10P224P327AWT (average waiting time) = (0+24+27)/3= 17 ms. Hal ini akan menjadiSangat berbeda jika urutan kedatang proses adalah P2, P3 dan P1Gant chart : P2 P3P10 3 6 30Waktu tunggu yang diberikan untuk tiap-tiap proses seperti tabel berikut :ProsesWaiting time (ms)P20P33P16AWT =(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 terlebihDahulu membutuhkan waktu proses (burst time) yg sangat lama.Algaritma FCFS termasuk non-preemptive, karena sekali CPU dialokasikanPada suatu proses, maka proses tersebut tetap akan memakai CPU sampaiProses 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 :

ProsesBurst time (ms)P16P28P37P43Gant Chart :0 3 9 1624 P4P1 P3 P2Waktu tunggu untuk tiap prosesProsesWaiting time (ms)P13P216P39P40Sehingga AWT nya = (3+16+9+0)/4 = 7 ms

Algoritma ini belum optimal dan sulit untuk diimplementasikan, karena sulitUntuk mengetahui panjang CPU burst berikutnya, namun nilainya dapat diPrediksikanAlgaritma SJF termasuk preemptive/non-preemptive. Jika ada proses P1 ygDatang pada saat P0 sedang berjalan, maka akan dilihat CPU burst P1.Pada non-preemptive, algoritma tetap akan menyelesaikan P0 sampai habisCPU burstnya. Pada Preemptive, jika CPU burst P! lebih kecil dari sisa waktuYang dibutuhkan oleh P0, maka P0 akan dihentikan dulu, dan CPU ganti diAlokasikan ke P1.Misalnya ada 4 proses P1, P2, P3 dan P4 yang meminta pelayanan CPU sbb :ProsesArrival timeBurst time (ms)P108P214P329P435Gant Chart :0 15 1017 26 P1 P2 P4P1P3ProsesWaiting time (ms)P10+(10 -1) = 9P21 -1 = 0P317 - 2 = 15P45 3 = 2Waktu tungguUntuk tiap proses :AWT = (9+0+15+2)/4 = 6.5 msPriority SchedulingAlgoritma SJF adalah suatu kasus khusus dari priority scheduling.Tiap-tiap proses dilengkapi dengan prioritas. CPU dialokasikan untukproses 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 :

ProsesBurst time (ms)PrioritasP1103P211P323P414P552Gant chart : 0 1 6 16 18 19 P2 P5 P1 P3 P4Waktu tunggu untuk tiap-tiap proses adalah :ProsesWaiting time (ms)P16P20P316P418P51AWT = (6+0+16+18+1)/5 = 8.2 msPriority scheduling bersifat preemtive/non-preemptive. Jika ada proses P1Yang 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 CPUBurstnya dan meletakan pada posisi head queue. Sedangkan pada preemtive,P0 akan dihentikan dulu dan CPU ganti dialokasikan untuk P1.Round-Robin SchedulingKonsepnya 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.

ProsesBurst time (ms)P124P23P33Gant chart : 0 4 7 10 14 18 22 26 30 P1 P2 P3P1 P1 P1 P1 P1Waktu tunggu tiap-tiap proses :ProsesWaiting time (ms)P10 + (10-4) = 6P24P37AWT = (6+4+7)/3 = 5.66 msAlgoritma round robin ini memiliki keuntungan adanya keseragaman waktu