1 Bab 3: Proses-Proses Konsep Proses Penjadwalan Proses Operasi pada Proses Proses yang bekerja sama (Cooperating Processes) Komunikasi antar Proses (...
Bab 3: Proses-Proses Konsep Proses Penjadwalan Proses Operasi pada Proses Proses yang bekerja sama (Cooperating Processes) Komunikasi antar Proses (Interprocess Communication) Komunikasi pada sistem Client-Server
4.1
Konsep Proses Sistem operasi mengeksekusi berbagai program: Batch system – job Time-shared systems – user program atau task
Beberapa buku menggunakan istilah job dan process secara bergantian. Proses - sebuah program yang sedang dieksekusi, Eksekusi proses dilakukan secara berurutan. Sebuat proses terdiri dari: program counter stack data section
4.2
1
State pada Proses
Ketika sebuah proses dieksekusi, akan mengalami perubahan state new: Proses sedang dibuat running: Instruksi sedang dieksekusi waiting: Proses menunggu beberapa event terjadi ready: Proses menunggu untuk dieksekusi terminated: Proses selesai dieksekusi
4.3
Diagram State Proses
4.4
2
Process Control Block (PCB) Adalah informasi yang terdapat pada setiap proses State pada proses Program counter CPU registers Informasi penjadwalan CPU Informasi manajemen memory Informasi Accounting Informasi status I/O
4.5
Process Control Block (PCB)
4.6
3
CPU Berpindah (Switch) dari Proses ke Proses
4.7
Antrian pada Penjadwalan Proses Job queue – kumpulan semua proses dalam sistem Ready queue – kumpulan semua proses yang berada di memori, siap dan menunggu dieksekusi Device queue – kumpulan semua proses yang menunggu perangkat I/O Migrasi proses antar antrian yang berbeda
4.8
4
Ready Queue dan beberapa I/O Device Queue
4.9
Representasi Penjadwalan Proses
4.10
5
Scheduler (Penjadwal)
Long-term scheduler (atau job scheduler) – memilih proses mana yang seharusnya dibawa ke ready queue. Short-term scheduler (atau CPU scheduler) – memilih proses mana yang seharusnya dieksekusi berikutnya di menggunakan CPU.
4.11
Medium Term Scheduling
4.12
6
Scheduler (Cont.) Short-term scheduler sering terjadi (dalam milliseconds) (cepat). Long-term scheduler tidak sering terjadi (dalam seconds, minutes) (lebih lambat). The long-term scheduler mengontrol tingkat multiprogramming. Proses dapat digambarkan sebagai salah satu dari tipe di bawah ini:: I/O-bound process – lebih banyak menghapuskan waktu untuk menjalankan I/O daripada komputasi, membutuhkan waktu penggunaan CPU (CPU burst) yang pendek. CPU-bound process – lebih banyak menghabiskan waktu untuk komputasi, membutuhkan waktu penggunaan CPU yang panjang.
4.13
Context Switch Ketika CPU berpindah ke proses yang lain, sistem harus menyimpan state dari proses lama dan mengambil state untuk proses yang baru. Waktu Context-switch, sistem tidak melakukan apa-apa (overhead) Waktu Context-switch tergantung pada hardware yang digunakan
4.14
7
Pembuatan Proses (Process Creation) Proses Induk (parent) membuat proses anak (child), yang pada gilirannya akan membuat proses lainnya, sehingga membentuk pohon proses. Resource sharing Parent dan child menggunakan semua resource bersamasama Child menggunakan sebagian dari resource parent Parent dan child tidak menggunakan resource bersamasama
Eksekusi Parent dan child mengeksekusi secara konkuren Parent menunggu sampai child berhenti
4.15
Pembuatan Proses(Cont.) Ruang alamat Child duplikasi dari parent Child mempunyai program sendiri yang disimpan
Contoh pada UNIX system call fork membuat proses baru system call exec digunakan setelah fork untuk mengganti ruang alamat memori proses dengan program baru
4.16
8
Pohon proses pada System UNIX
4.17
Terminasi Proses Proses menjalankan pernyataan terakhir dan menyatakan ke sistem operasi untuk memutuskannya (exit). Output data dari child ke parent (via wait). Resource dari proses di-dealokasikan oleh sistem operasi
Parent dapat menghentikan eksekusi dari proses anak (abort). Child melebihi resource yang sudah dialokasikan Task/proses dari anak sudah tidak diperlukan lagi Parent keluar (exit) Sistem operasi tidak mengijinkan child melanjutkan jika parent dihentikan Pemutusan oleh parent
4.18
9
Proses yang Bekerjasama (Cooperating Processes) Proses Independen tidak berakibat atau diakibatkan oleh eksekusi proses lain Proses yang bekerjasama dapat berakibat atau diakibatkan oleh eksekusi proses lain Keuntungan proses yang bekerjasama Informasi digunakan bersama Meningkatkan kecepatan komputasi Modularity Lebih nyaman
4.19
Permasalahan ProducerConsumer Paradigma proses yang bekerjasama ditunjukkan dengan permasalahan producer-counsumer, proses producer menghasilkan informasi yang di-konsumsi oleh proses consumer. unbounded-buffer tidak memberikan batasan ukuran buffer bounded-buffer mengasumsikan terdapat ukuran buffer yang tetap.
4.20
10
Bounded-Buffer – Penyelesaian Shared-Memory Shared data #define BUFFER_SIZE 10 Typedef struct { ... } item; item buffer[BUFFER_SIZE]; int in = 0; int out = 0; Penyelesaian benar, tetapi hanya untuk ukuran elemen BUFFER_SIZE-1
4.21
Bounded-Buffer – Proses Producer item nextProduced; while (1) { while (((in + 1) % BUFFER_SIZE) == out) ; /* do nothing */ buffer[in] = nextProduced; in = (in + 1) % BUFFER_SIZE; }
4.22
11
Bounded-Buffer – Proses Consumer item nextConsumed; while (1) { while (in == out) ; /* do nothing */ nextConsumed = buffer[out]; out = (out + 1) % BUFFER_SIZE; }
4.23
Komunikasi antar Proses Interprocess Communication (IPC) Mekanisme untuk proses-proses saling berkomunikasi dan sinkronisasi aksinya Sistem pesan – proses-proses berkomunikasi dengan lainnya tanpa shared variables Fasilitas IPC menyediakan 2 operasi: send(message) – ukuran pesan tetap atau berubah-ubah receive(message)
Jika P dan Q ingin berkomunikasi, mereka memerlukan: Terdapat saluran komunikasi antara keduanya Pertukaran pesan via send/receive
Implementasi saluran komunikasi Fisik (contoh : shared memory, hardware bus) Logika (contoh : properti logika)
4.24
12
Beberapa pertanyaaan implementasi IPC Bagaimana saluran komunikasi tersedia? Dapatkah satu saluran dihubungkan lebih dari dua proses? Berapa banyak saluran yang terdapat antara setiap pasangan proses yang berkomunikasi? Bagaimana kapasitas saluran Apakah ukuran pesan pada saluran tetap atau berubahubah? Apakah saluran unidirectional atau bi-directional?
4.25
Komunikasi Langsung Proses harus bernama secara eksplisit: send (P, message) – mengirim pesan ke proses P receive(Q, message) – menerima pesan dari proses Q
Sifat saluran komunikasi Saluran tersedia secara otomatis Satu saluran dihubungkan dengan tepat satu pasang proses yang berkomunikasi Antara setiap pasangan terdapat tepat satu saluran Saluran dapat berupa unidirectional atau bi-directional
4.26
13
Komunikasi Tak Langsung Pesan diarahkan dan diterima melalui mailbox (juga disebut sebagai port). Setiap mailbox mempunyai id yang unik Proses-proses dapat berkomunikasi hanya jika terhubung dengan mailbox
Sifat saluran komunikasi Saluran tersedia hanya jika proses-proses terhubung dengan mailbox Satu saluran kemungkinan dihubungkan dengan beberapa proses Setiap pasangan proses menggunakan beberapa saluran komunikasi Saluran dapat berupa unidirectional atau bi-directional
4.27
Komunikasi Tak Langsung Operasi Membuat mailbox baru Mengirim dan menerima pesan melalui mailbox Menghapus mailbox
Operasi didefinisikan dengan: send(A, message) – mengirim pesan ke mailbox A receive(A, message) – menerima pesan dari mailbox A
4.28
14
Komunikasi Tak Langsung Mailbox sharing P1, P2, dan P3 menggunakan mailbox A. P1, send; P2 dan P3 receive. Siapa yang mendapatkan pesan tersebut?
Solusi Mengijinkan saluran diasosiasikan paling banyak dua proses Mengijinkan hanya satu proses pada satu waktu mengeksekusi operasi receive Mengijinkan sistem memilih penerima. Pengirim diberikan notifikasi siapa yang penerimanya
4.29
Sinkronisasi Pengiriman pesan dapat berupa blocking atau nonblocking. Blocking dianggap synchronous Non-blocking dianggap asynchronous Operasi send dan receive dapat berupa blocking atau non-blocking.
4.30
15
Buffering Antrian pesan yang melekat pada saluran diimplementasikan dengan tiga cara: 1. Zero capacity – 0 pesan Pengirim harus menunggu penerimanya. 2. Bounded capacity – panjang tertentu untuk n pesan Pengirim harus menunggu apabila saluran penuh. 3. Unbounded capacity – panjang tidak tertentu Pengirim tidak pernah menunggu.
4.31
Komunikasi Client-Server Sockets Remote Procedure Calls Remote Method Invocation (Java)
4.32
16
Socket Sebuah socket didefinisikan sebagai endpoint for communication. Menggabungkan IP address danport Socket 161.25.19.8:1625 merujuk ke port 1625 pada host 161.25.19.8 Komunikasi terdiri dari sebuah pasangan socket.
4.33
Komunikasi Socket
4.34
17
Remote Procedure Call Remote procedure call (RPC) adalah prosedur abstrak antar proses pada sistem jaringan Stubs –proxy pada sisi client untuk prosedur aktual pada server. Stub pada sisi client menempatkan server dan mengirim parameter. Stub pada sisi server menerima pesan, membongkar parameter dan membentuk prosedur pada server
4.35
Eksekusi RPC
4.36
18
Remote Method Invocation Remote Method Invocation (RMI) adalah mekanisme Java yang sejenis dengan RPC. RMI memungkinkan program Java pada satu mesin memanggil methode pada remote object.