Pertemuan 4 Manajemen Proses 2
STRUKTUR KENDALI SO PENGERTIAN Gambar Struktur data yang dibentuk dan di pelihara oleh SO yang menyimpan informasi mengenai setiap sumber daya yang dikelolanya Gambar Memory Table Memory Device I/O Table Files Processor Files Table Proc Proc Proc Proc Process Image
Keterangan gambar Tabel Memory Tabel I/O Tabel Berkas Tabel proses Alokasi memory utama untuk proses-proses Alokasi memory maya untuk proses Atribut proteksi terhadap memory Informasi yang diperlukan untuk mengatur memory Tabel I/O Mencatat status piranti I/O Mengetahui apakah saluran sistem komputer dalam keadaan bebas atau sedang terpakai Penyalinan/pembacaan data I/O di memory utama Tabel Berkas Mencatat informasi berkas yang diakses oleh proses: lokasinya di memory, statusnya , hak akses, serta atribut berkas lainnya Tabel proses Mencatat informasi mengenai status dari setiap proses
Image Proses Sebuah blok berurutan (contigous block) Adalah keseluruhan lokasi memory yang digunakan untuk eksekusi suatu proses Proses image dapat berupa : Sebuah blok berurutan (contigous block) Blok dengan ukuran bervariasi (segmentasi) Blok dengan ukuran sama (halaman) Kombinasi antara segmentasi & halaman (hybrid)
Data Pengguna (user data) Elemen image proses Data Pengguna (user data) Image proses yang dapat di modifikasi, meliputi data program Kode program (user program) Image proses yang menyimpan kode instruksi program yang akan di eksekusi Sistem Stack (user stack) Struktur data yang bekerja berdasarkan proses LIFO Process Control Block (PCB) Menyimpan informasi yang diperlukan SO untuk mengontrol/mengelola proses
STRUKTUR CITRA/IMAGE PROSES Identifikasi Proses Informasi status proses Informasi kendali proses Stack pemakai Ruang alamat yang khusus diperuntukkan pemakai (program, data) Ruang alamat bersama PCB
INFORMASI IDENTIFIKASI PROSES Berkaitan dengan identitas proses yang unik Dengan identifier ini proses dikaitkan ke tabel-tabel lain Identifiernya adalah numerik yang meliputi Identifier proses Identifier proses yang menciptakan Identifier pemakai
INFORMASI STATUS PROSES Informasi ini esensinya terdiri dari register-register pemroses. Saat proses berstatus running, informasi-informasi ini berada di register. Ketika proses diinterupsi semua informasi register harus disimpan agar dapat dikembalikan saat proses dieksekusi kembali Jumlah dan ragam register bergantung pada arsitektur komputernya
Berisi link dengan proses lain dalam suatu baris Elemen process control information : Schedulling & state infromartion Berisi infromasi untuk penjadwalan, status proses, prioritas,identitas event Data structuring Berisi link dengan proses lain dalam suatu baris Interprocess communication Flag, signal dan pesan yang digunakan untuk komunikasi antar proses. Process privilages Kewenangan proses atas memori dan tipe instruksi Memory management Pointer ke tabel segmen ataupun tabel halaman dari memori maya Resource ownership & utilization Berisi sejarah pengguanaan sumber daya yang akan digunakan untuk penjadwalan
Gambar Process Control Block Setiap proses digambarkan dalam sistem operasi oleh sebuah process control block (PCB) – juga disebut sebuah control block. Gambar Process Control Block
PROCESS CONTROL BLOCK (cont.) PCB berisikan banyak bagian dari informasi yang berhubungan dengan sebuah proses yang spesifik, termasuk hal-hal di bawah ini: Status Proses Program counter CPU Register Informasi Manajemen Memori Informasi pencatatan
KARAKTERISTIK PROSES Unit of resource ownership Memakai sebuah alamat virtual, memakai memory utama selama proses dan diberi kendali terhadap sumber daya Unit of dispathing/thread Proses yang memakai satu jalur eksekusi(trace)
Penjadual / Schedulers Long-term scheduler (or job scheduler) – memilih proses/program yang mana yang akan di load dan berada di ready queue. Kemungkinan terdapat proses atau job baru. Kemungkinan proses dipindahkan dari memori ke disk (swap out). Short-term scheduler (or CPU scheduler) – memilih proses yang mana yang berada di ready queue akan “run” (mendapatkan jatah CPU).
Penjadual / Schedulers (Cont.) Long-term scheduler tidak sering (proses baru) (seconds, minutes) => (may be slow). => berapa banyak proses yang dapat aktif (berada di memori) Short-term scheduler dijalankan sangat sering (milliseconds) => giliran pemakaian CPU dari proses- proses yang siap Pada saat terjadi penggantian alokasi CPU dari satu proses ke proses lain: Menyimpan informasi internal CPU dari proses yang akan digantikan (SAVE). Meload kembali informasi internal CPU dari proses yang akan menggantikan. Dikenal dengan istilah: context switch proses.
Sinkronisasi Proses Proses-proses yang konkuren adalah proses-proses (lebih dari satu) berada pada saat yang sama. Proses-proses ini dapat sepenuhnya tak bergantung dengan yang lainnya, tapi dapat juga saling berinteraksi. Proses-proses yang berinteraksi memerlukan sinkronisasi agar terkendali dengan baik. Akses-akses yang dilakukan secara bersama-sama ke data yang sama, dapat menyebabkan data menjadi tidak konsisten. Untuk menjaga agar data tetap konsisten, dibutuhkan mekanisme-mekanisme untuk memastikan pemintaan ekseskusi dari proses yang bekerja.
Sinkronisasi Lanjt. Race Condition: Keadaan dimana lebih dari satu proses meng-update data secara “concurrent” dan hasilnya sangat bergantung dari urutan proses mendapat jatah CPU (run) Hasilnya tidak menentu dan tidak selalu benar Untuk menghindari Race Condition, proses-proses secara bersamaan harus disinkronisasikan dalam mengupdate shared data Dalam beberapa sistem operasi, proses-proses yang berjalan bersamaan mungkin untuk membagi beberapa penyimpanan umum, masing-masing dapat melakukan proses baca (read) dan proses tulis (write). Penyimpanan bersama (shared storage) mungkin berada di memori utama atau berupa sebuah berkas bersama, lokasi dari memori bersama tidak merubah kealamian dari komunikasi atau masalah yang muncul
Race condition
Critical section Kunci untuk mencegah masalah ini yaitu melibatkan shared memori, shared berkas, and shared sumber daya yang lain Setiap proses mempunyai “code” yang mengakses/ manipulasi shared data tersebut => “critical section” Kesulitan yang terjadi karena proses 2 mulai menggunakan variabel bersama sebelum proses 1 menyelesaikan tugasnya. “eksekusi” pada bagian “critical section” tidak ada proses lain yang diperbolehkan masuk ke “code” critical section dari proses tersebut
solusi Solusi “critical section problem” harus memenuhi: Mutual Exclusion: Jika proses Pi sedang “eksekusi” pada bagian “critical section” (dari proses Pi) maka tidak ada proses proses lain dapat “eksekusi” pada bagian critical section dari proses-proses tersebut. Progress: Jika tidak ada proses sedang eksekusi pada critical section-nya dan jika terdapat lebih dari satu proses lain yang ingin masuk ke critical section, maka pemilihan siapa yang berhak masuk ke critical section tidak dapat ditunda tanpa terbatas.
Solusi Lanjt. Bounded Waiting: Terdapat batasan berapa lama suatu proses harus menunggu giliran untuk mengakses “critical section” – jika seandainya proses lain yang diberikan hak akses ke critical section. Menjamin proses dapat mengakses ke “critical section” (tidak mengalami starvation: proses se-olah berhenti menunggu request akses ke critical section diperbolehkan). Tidak ada asumsi mengenai kecepatan eksekusi proses proses n tersebut.
Solusi Sederhana : Kasus 2 proses Hanya 2 proses Struktur umum dari program code Pi dan Pj: Software solution: merancang algoritma program untuk solusi critical section Proses dapat mengunakan “common var.” untuk menyusun algoritma tsb.
Algoritma 1 Shared variables: Process Pi do { while (turn != i) ; int turn; initially turn = 0 turn - i Pi dapat masuk ke criticalsection Process Pi do { while (turn != i) ; critical section turn = j; reminder section } while (1); Mutual exclusion terpenuhi, tetapi menentang progress
Algoritma 2 Shared variables Process Pi do { boolean flag[2]; initially flag [0] = flag [1] = false. flag [i] = true Pi siap dimasukkan ke dalam critical section Process Pi do { flag[i] := true; while (flag[j]) ; critical section flag [i] = false; remainder section } while (1); Mutual exclusion terpenuhi tetapi progress belum terpenuhi.
Algoritma 3 Kombinasi shared variables dari algoritma 1 and 2. Process Pi do { flag [i]:= true; turn = j; while (flag [j] and turn = j) ; critical section flag [i] = false; remainder section } while (1); Ketiga kebutuhan terpenuhi, solusi masalah critical section pada dua proses
Masalah? Bagiamana jika banyak proses? (n proses)
tugas 1. Pada critical section , ada tiga hal yang harus dipenuhi, sebutkan dan jelaskan ! 2. Bagaimana algoritma Bakery untuk sinkronisasi banyak proses (n proses) ? 3. Apa yang dimaksud semaphore dan sebutkan operasi pada semaphore 4. Bagaimana struktur semaphore yang digunakan untuk menyelesaikan permasalahan : a. bounded buffer problem. b. reader and writer problem. c. dining philosopher problem. Slide -> http://bit.ly/so-slide4