2. Pembahasan
• Konsep Proses
• Penjadualan Proses
• Operasi-operasi pada Proses
• Cooperating Processes
• Interprocess Communication
• Komunikasi pada Sistem Client-Server
3. Konsep Proses
• Proses : suatu program yang sedang dieksekusi oleh proseor,
memerlukan resource, berada di memory dan memiliki status jalannya
eksekusi yaitu minimal informasi-informasi sbb :
– Program counter : menunjukkan instruksi berikutnya yang akan dieksekusi
– Register : data hasil eksekusi antara
– Stack : tempat penyimpanan temporary data yang dibutuhkan selama
program dieksekusi
– Data section : mengandung variabel global dari suatu proses
• Status posisi saat dieksekusi diperlukan krn prosesor melakukan
switching (berjumpalitan/akrobat) krn menjalankan banyak proses
• Dalam literatur, istilah job dan proses dan task sering dapat
dipertukarkan
4. Perkembangan Konsep Proses
• Konsep proses berkembang sejalan dengan
modus operasi sistem komputer :
– Fase-fase monoprogramming : pada suatu
saat di memori hanya sebuah program
yang sedang dijalankan (mungkin disertai
suatu monitor proses)
– Fase-fase multiprogramming : pada suatu
saat di memori bisa terdapat beberapa
program yang sedang dijalankan
5. Konsep Proses
Monoprogramming
• Program oleh proses monitor (atau
operator) di-load ke memori, dieksekusi
(kontrol diberikan pada proses), dan
selesai (sukses atau abort), kemudian
kontrol dikembalikan ke proses monitor
(atau operator)
• Status proses direkam dan di-print
hanya diperlukan untuk keperluan
debugging
6. Konsep Proses Modern
• Karena adanya sejumlah program
yang di-load dimemori dalam status
sedang dijalankan, maka setiap saat
jumlah aktual proses yang dieksekusi
maksimum sama dengan jumlah CPU
• Untuk pembahasan konsep proses
selanjutnya akan berdasarkan
paradigma ini (uniprosesor, single
prosesor, mono prosesor)
7. Status Proses
• Selama eksekusinya proses berada dalam
salah satu dari status-status berikut ini :
– New : proses sedang di-create
– Running : instruksi-instruksi sedang
dieksekusi
– Waiting : proses sedang menunggu
terjadinya event-event tertentu
– Ready : proses menunggu di-assign ke
prosesor
– Terminated : proses selesai eksekusi
9. Process Control Block (PCB)
• Agar suatu proses yang running, lalu
waiting/ready, dan kemudian running
kembali dapat meneruskan proses tanpa
kehilangan konteks maka diperlukan
struktur data untuk menyimpan informasi
dan status proses, disebut Process
Control Block (PCB)
• Satu blok digunakan untuk satu proses
dan isinya bisa bervariasi dari proses ke
proses
10. Informasi dalam PCB
• Informasi Manajemen Memori
– Posisi program di memori, dll
• Informasi Accounting
– Jumlah waktu eksekusi/elapse, time limit,
account/job number, dll
• Informasi Status I/O
– List dari I/O device yang dialokasi proses, list
file yang status sedang dibuka (baca/tulis), dll
16. Scheduling Proses
• Dalam multiprogramming sejumlah proses
yang running secara concurrent
menggunakan resources : CPU dan devices
• Jika hanya ada satu prosesor (uniprosesor)
maka hanya satu proses setiap saat yang
benar-benar running dan yang lainnya
menunggu (waiting) dalam queue atau
melakukan aktifitas I/O
17. Queue untuk Scheduling
• Job queue berisi seluruh proses di dalam
sistem
• Ready queue berisi proses-proses yang
berada di memori dan siap (ready)/
menunggu (wait) untuk dieksekusi
• Device queue – proses-proses yang
menunggu giliran penggunaan device
tertentu
• Proses berpindah antara bermacam-
macam queue
20. Scheduler
• Long-term scheduler (job scheduler)
– Memilih proses yang mana yang harus dibawa ke
dalam ready queue
– Menentukan degree of multiprogramming
– Lebih jarang (second, minute) (may be slow)
• Short-term scheduler (CPU scheduler)
– Memilih proses mana yang harus dieksekusi berikutnya
dan mengalokasi CPU untuknya
– Lebih sering (milisecond) (must be fast)
• Medium-term scheduler : swap proses In dan Out
antara memori dan swap-device untuk mengubah
karakteristik dari proses dalam penggunaan
memori atau I/O device
21. Status Proses - Scheduler
short-term scheduler
long-term scheduler
22. Diagram Perpindahan Proses
Baru terproses sebagian &
di swap-out sementara
Ready queue
I/O waiting queue
I/O
CPU
short-term scheduler
long-term scheduler
medium term
scheduler
end
Swap out
Swap in
new
24. I/O vs CPU Bounds
• Proses-proses dapat dideskripsikan sbb :
–I/O-bound process : proses-proses yang
melakukan I/O dalam jumlah waktu yang
lebih lama daripada untuk komputasi;
banyak terdapat CPU burst yang pendek
–CPU-bound process : proses-proses
yang melakukan lebih banyak komputasi;
beberapa CPU burst yang panjang
(frequensinya sering dan CPU
burst/pendek)
25. Context Switch
• Saat CPU dipindahkan dari suatu proses
ke proses yang lain sistem harus
menyimpan status dari proses lama dan
me-load status proses yang baru
• Tugas ini dilakukan oleh context switch
• Waktu untuk context-switch merupakan
overhead (waktu sistem “terbuang” saat
switching)
• Jumlah waktu ini bergantung pada
dukungan Hardware
26. Operasi pada Proses-proses
• Dalam multiprogramming akan ada
proses yang baru mulai, dan ada
proses yang selesai, disamping
proses-proses yang sedang running
• Untuk dapat dimanage maka
diperlukan mekanisme tertentu untuk
menangani aktifitas create dan
terminate proses
27. Proses Creation
• Mekanisme “ayah-anak” atau “parent-
child” : proses “parent” meng-create
proses “child” yang juga dapat meng-
create proses-proses lainnya membentuk
pohon (tree) dari proses-proses
• Pada fase-fase awal : code dari user
program di-load ke memori, control
dialihkan ke program, proses berjalan
hingga selesai/abort, dan control kembali
ke monitor
28. Modus-modus saat Create Proses
(1)
• Dalam hal resource sharing
– Parent & child men-share semua resource
– Child men-share subset dari resource-
resource milik parent
– Parent & child tidak men-share apa pun
• Dalam hal eksekusi
– Parent & child dieksekusi secara concurrent
– Parent menunggu hingga child terminate
29. Modus-modus saat Create Proses
(2)
• Dalam hal address space :
– Child menduplikasi milik parent
– Child memiliki suatu program yang akan di-
load ke dalamnya
• Contoh UNIX
– System call fork() meng-create proses baru
– System call execve() digunakan setelah itu
untuk mengganti memory space dari proses
dengan program yang baru
31. Process Termination
• suatu proses mengalami terminasi
akibat inisiatif child atau parent krn
adanya pengakhiran sub proses
• Proses terminasi normal (user end
close/task program)
• Proses terminasi tidak normal ( user
menutup paksa/abort/cancel proses
atau aplikasi)
32. Terminasi karena Child
• Proses mengeksekusi statement terakhir
yang juga meminta OS untuk
mengahapusnya ( misalnya dengan
exit() )
– Data output dihasilkan child kepada parent (
misalnya sebagai return dari fork() )
– Resource-resource proses didealokasi oleh
OS
33. Terminasi karena Parent
• Parent mengakhiri eksekusi proses-proses
child ( misalnya dengan abort() )
– Child telah menggunakan jumlah resource
melebihi dari yang telah dialokasi
– Task yang diberikan pada child sudah tidak
diperlukan lagi
• Parent telah exit
– OS tidak mengijinkan child untuk berlanjut jika
parent terminate
– Cascading termination
34. Cooperating Processes
• Independent process tidak dapat dipengaruhi oleh
eksekusi proses lain
• Cooperating process dapat mempengaruhi dan
dipengaruhi oleh eksekusi proses lain
• Keuntungan proses berkooperasi :
– Sharing informasi : Menggunakan informasi(resource)
yang sama untuk beberapa proses
– Peningkatan kemampuan komputasi (Computation
Speedup) : Suatu task tertentu bisa dipecah menjadi
beberapa cooperating processes sehingga bisa dikerjakan
secara paralel sehingga menjadi lebih cepat selesai
– Modularitas : Pembuatan suatu sistem yang moduler
dengan memecahkan fungsi-fungsi dari sistem tersebut
menjadi beberapa proses atau thread
– Convenience : User bisa dengan mudah mengerjakan
sesuatu yang berbeda dalam waktu yang sama
35. Producer-Consumer Problem
• “Producer” merupakan proses yang
menghasilkan informasi yang akan dikonsumsi
oleh proses “Consumer”. Contoh :
– Compiler memproduksi assembly code yang
dikonsumsi oleh Assembler
– Assembler memproduksi Object yang dikonsumsi
oleh Loader
• Sebagai perantara digunakan suatu buffer
– Unbound-buffer : tidak ada batas kapasitas
– Bounded-buffer : buffer berukuran tetap
• Consumer harus menunggu jika buffer kosong
dan Producer harus menunggu jika buffer
penuh.
36. Bounded-Buffer – Shared-Memory
Solution
• Shared data
#define BUFFER_SIZE 10
typedef struct {
. . .
} item;
item buffer[BUFFER_SIZE];
int in = 0;
int out = 0;
• Hanya dapat menggunakan
BUFFER_SIZE-1 elemen
37. Bounded-Buffer – Producer Process
item nextProduced;
while (1) {
while (((in + 1) % BUFFER_SIZE) ==
out)
; /* do nothing */
buffer[in] = nextProduced;
in = (in + 1) % BUFFER_SIZE;
}
38. Bounded-Buffer – Consumer
Process
item nextConsumed;
while (1) {
while (in == out)
; /* do nothing */
nextConsumed = buffer[out];
out = (out + 1) % BUFFER_SIZE;
}
40. Algoritma Producer-Consumer
(Pascal)
• Producer :
repeat
…
produce an item nextp
…
while in+1 mod n = out
do no-op;
buffer[in] := nextp;
in := in+1 mod n;
until false;
Consumer :
repeat
while in = out do no-op;
nextc := buffer[out];
out := out+1 mod n;
…
consume the item in nextc
…
until false;
Shared data
var n; type item = …; var buffer : array [0..n-1] of item;
in, out : 0..n-1; n := 0; out := 0;
41. Interprocess Communication (IPC)
• Menyediakan mekanisme yang
memungkinkan proses-proses
berkomunikasi dan mensinkronisasi aksi-
aksinya
• Message System – komunikasi tanpa
memerlukan penggunaan shared variabel
milik proses user
42. Operasi-operasi IPC
• Operasi-operasi yang disediakan
– Send(message)
– Receive(message)
• Message dapat berukuran tetap atau variabel
– Ukuran tetap; implementasi fisik lebih simple, tapi
lebih sulit bagi user dalam pemrograman
– Ukuran variabel; pemrograman lebih mudah tapi
implementasi fisik lebih sulit
43. Communication Link
• Bila P dan Q hendak berkomunikasi
– mereka perlu menetapkan suatu communication link
di antara mereka lalu melakukan tukar-menukar
message melalui send/receive
• IPC dalam implementasinya memerlukan
communication link
– Secara fisik, contohnya shared memory, hardware
bus
– Secara logic, contohnya logical properties
44. Implementasi
• Menjawab pertanyaan-pertanyaan :
– Cara penetapan link
– Bisa berasosiasi dengan > 2 proses
– Jumlah link yang ditetapkan antara 2 proses
– Kapasitas link
– Ukuran message : tetap atau variabel
– Arah link : satu arah (unidirectional) atau dua arah
(bi-directional)
• Satu arah : proses hanya send (atau receive) dan hanya
satu yang receive
45. Metodologi
• Direct vs. Indirect Communication
• Symmetric vs. Asymmetric
Communication
• Automatic vs. Explicit Buffering
• Send by Copy vs. Send by Reference
• Fixed Sized vs. Variabel Sized Message
46. Direct Communication
• Proses-proses harus
menyebutkan pasangannya
secara eksplisit
– send(Q, message)
• Q adalah receiver
– receive(P, message)
• P adalah sender
P Q
47. Sifat-sifat Communication Link
Direct Comm.
• Link ditetapkan secara otomatis
• Link diasosiasikan dengan pasangan
proses yang sedang berkomunikasi tsb
• Antara sepasang proses hanya bisa ada 1
link
• Link bisa satu arah tapi biasanya dua arah
49. Kekurangan Direct Comm.
• Modularitas terbatas
– Pengubahan nama proses perlu pengubahan
di seluruh call
– Perlu pemeriksaan jika terdapat nama yang
sama
50. Indirect Communication
• Message-message dikirim dan
diterima melalui suatu mailbox (juga
disebut port)
– Masing-masing mailbox memiliki id yang
unik
– Proses-proses hanya dapat
berkomunikasi jika mereka men-share
mailbox
– send(A, message)
• Kirim message ke dalam mailbox A
– receive(A, message)
A
P Q
51. Sifat-sifat Communication Link
Indirect Comm.
• Link ditetapkan saat dua proses men-
share suatu mailbox
• Link dapat diasosiasikan dengan sejumlah
proses
• Setiap pasang proses bisa men-share
beberapa link
• Link bisa satu arah atau dua arah
52. Operasi-operasi Indirect Comm.
• Proses memulai komunikasi dengan men-
create mailbox
• Komunikasi berlangsung dengan
pemanggilan perintah send & receive
message melalui mailbox tersebut
• Saat proses hendak exit maka proses
men-destroy mailbox
53. Masalah pada Mailbox Sharing
• Mailbox sharing
– P1, P2, and P3 share mailbox A.
– P1, sends; P2 dan P3 receive.
– Siapa yang mendapatkan message?
• Solusi
– Batasi link diasosiasikan hanya untuk max 2
proses
– Hanya mengijinkan satu proses setiap saat
yang meng-eksekusi operasi receive
– Sistem memilih siapa receiver-nya
– Sender menyebutkan siapa receiver-nya
A
P1
P2
P3
54. Sinkronisasi
• Message passing dapat dibedakan
menjadi :
– blocking
– non-blocking
• Blocking adalah synchronous
• Non-blocking adalah asynchronous
• Primitif send and receive dapat blocking
or non-blocking.
55. Buffering untuk Link
• 3 kemungkinan cara implementasi
– Zero capacity – tidak ada buffer
• Sender harus menunggu sampai muncul receiver
dan sebaliknya (sinkronisasi - rendezvous)
– Bounded capacity – bisa berisi max n
message
• Sender harus menunggu jika penuh
– Unbounded capacity – tak terbatas
• Sender tidak pernah menunggu
57. Socket
• Socket didefinisikan sebagai suatu endpoint for
communication.
• Sebuah programming interface ke OS yang
memungkinkan proses untuk saling
berkomunikasi ke proses lainya
• Eksekusi TCP/UDP berlangsung di level kernel,
socket bertindak sebagai jembatan ke user
space.
• Merupakan gabungan IP address dan port
• Socket 161.25.19.8:1625 menunjukkan bahwa
port 1625 pada host 161.25.19.8
• Komunikasi terdiri dari pasangan socket.
58. Komunikasi antar Socket
• Contoh standard port :
– TELNET menggunakan port 23
– FTP menggunakan port 21
– HTTP server menggunakan port 80
62. Sockets in Unix
Server membuat socket
menggunakan bind(), sehingga
dapat dimanfaatkan oleh clients
63. Server for time of day (in Java)
Public class Server {
public static void main (String[], args) throws IOException {
Socket client = null; // connection-oriented socket
PrintWriter pout = null;
ServerSocket sock = null;
try {
sock = new ServerSocket (5155);
// now listen for connections
while (true) {
client = sock.accept ();
// we have a connection
pout = new PrintWriter (client.getOutputStream(), true);
// write the Date to the socket
pout.println( new Java.util.Date().toString());
pout.close();
client.close();
…..
New socket
to connect
to client
To send data
simply
using println
64. Client for time of day
Public class Client {
public static void main (String[], args) throws IOException {
InputStream in = null;
BufferedReader bin = null;
Socket sock = null;
try {
// make connection to socket
sock = new Socket (“127.0.0.1”, 5155);
in = sock.getInputStream ();
bin = new BufferedReader (new InputStreamReader (in));
String line;
while ( (line = bin.readLine ()) != null)
System.out.println (line);
}
…….
…..
65. Remote Procedure Calls (RPC)
(1)
• Remote Procedure Call (RPC) membuat
abstraksi pemanggilan prosedur antara
proses dalam sistem jaringan (network)
• Stubs – client-side proxy untuk procedure
aktual pada server
• Client-side stub mengalokasikan server
dan mengirimkan marshalls parameter
• Server-side stub menerima message,
membuka parameter marshall, dan
menjalankan procedure pada server
67. Remote Procedure Calls (RPC)
(2)
• Dalam sistem single-processor :
– message send = pemanggilan fungsi
– reply = function return
– sender mengaktifkan receiver dengan
message sebagai argument, dan sender wait
untuk mendapatkan reply dari function return
• Skema RPC ini dilakukan juga pada
proses-proses yang running di komputer
berlainan
68. Mekanisme IPC
• Sebelum mekanisme IPC digunakan, data harus di-
packaging ke dalam format transimisi. Langkah ini
dinamakan marshalling
• Proxy bertanggung jawab untuk marshalling data,
kemudian mengirimkan data dan meminta instans dari
komponen (remote)
• Stub menerima request, unmarshall data, dan
memanggil method yang diminta. Kemudian proses
mengembalikan nilai yang diinginkan
• Contoh : COM (Component Object Model) - Microsoft,
69. Contoh RPC
• Server hosts subroutines which can be called
from a client machine
70. Kelebihan RPC
• Relatif mudah digunakan :
– Pemanggilan remote procedure tidak jauh berbeda
dibandingkan pemanggilan local procedure. Sehingga
pemrogram dpt berkonsentrasi pd software logic,
tidak perlu memikirkan low level details seperti
socket, marshalling & unmarshalling.
• Relatively portable :
– S/W developed using RPC is easier to be ported
compared to sockets.
• Robust :
– Sejak th 1980-an RPC telah banyak digunakan dalam
pengembangan mission-critical application yg
memerlukan scalability, fault tolerance, & reliability.
71. Kekurangan RPC
• Tidak fleksibel terhadap perubahan :
– Static relationship between client & server at
run-time.
• Berdasarkan prosedural /structured
programming yang sudah ketinggalan
jaman dibandingkan OOP.
72. Remote Method Invocation
(RMI)
• Remote Method Invocation (RMI) adalah
mekanisme Java yang sama dengan RPC
• RMI memungkinkan program Java pada satu
komputer untuk memanggil suatu method pada
remote object
74. tugas
• Install Software untuk virtualisasi sistem operasi
dg Virtual box (vbox.org) atau Vmware
• Install 1 OS Linux client atau linux server di
software tersebut
• Jalankan banyak aplikasi di linux (guest OS)
tersebut, tampilkan proses yang sedang running
dg printah ps, tampilkan tree dari semua proses
yang ada
• Amati pid masing2 proses yg running
• End task beberapa proses dg kill
• Tampilkan lagi dg printah ps dan tampilkan tree
dari proses