Pembahasan
• Konsep Proses
• Penjadualan Proses
• Operasi-operasi pada Proses
• Cooperating Processes
• Interprocess Communication
• Komunikasi pada Sistem Client-Server
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
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
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
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)
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
Diagram Status Proses
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
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
Process Control Block (PCB)
Contoh tampilan Windows Task
Manager
Contoh list proses di Linux
Proses-proses dari Memori
Utama ke Register
CPU Switch dari Proses ke Proses
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
Queue untuk Scheduling
short-term
scheduler
Diagram Perpindahan Proses
new Readyqueue
Ready queue CPU end
I/O I/Owaiting
I/O waitingqueue
queue
long-term scheduler
short-term
scheduler
Status Proses - Update
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)
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
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
Proses Creation
while (1) {
while (((in + 1) % BUFFER_SIZE) ==
out)
; /* do nothing */
buffer[in] = nextProduced;
in = (in + 1) % BUFFER_SIZE;
}
Bounded-Buffer – Consumer
Process
item nextConsumed;
while (1) {
while (in == out)
; /* do nothing */
nextConsumed = buffer[out];
out = (out + 1) % BUFFER_SIZE;
}
Ilustrasi Producer-Consumer
Problem
out
in
out
producer
in Empty
0 0 Half-full 0 Full
out
11 11 11
consumer
Ring-buffer in
12 slots
Algoritma Producer-Consumer
(Pascal)
Shared data
var n; type item = …; var buffer : array [0..n-1] of
item; in, out : 0..n-1; n := 0; out := 0;
• Producer : Consumer :
repeat repeat
… while in = out do no-op;
produce an item nextp nextc := buffer[out];
… out := out+1 mod n;
while in+1 mod n = out …
do no-op; consume the item in nextc
buffer[in] := nextp; …
in := in+1 mod n; until false;
until false;
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
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
Communication Link
• Proses-proses harus
menyebutkan pasangannya
secara eksplisit
– send(Q, message)
• Q adalah receiver
– receive(P, message)
P Q
• P adalah sender
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
Contoh Producer-Consumer
• Producer : Consumer :
repeat repeat
… …
Produce(nextp) receive(produser, nextc)
… …
send(consumer, Consume(nextc)
nextp) …
… until false;
until false;
Kekurangan Direct Comm.
• Modularitas terbatas
– Pengubahan nama proses perlu pengubahan
di seluruh call
– Perlu pemeriksaan jika terdapat nama yang
sama
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) P A Q
• Kirim message ke dalam mailbox A
– receive(A, message)
• Terima message dari dalam mailbox A
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
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
Masalah pada Mailbox Sharing
• Mailbox sharing P22
• Sockets
• Remote Procedure Calls
• Remote Method Invocation (Java)
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.
Komunikasi antar Socket
try {
sock = new ServerSocket (5155);
// now listen for connections
New socket while (true) {
to connect client = sock.accept ();
to client
// we have a connection
To send data pout = new PrintWriter (client.getOutputStream(), true);
simply
using println
// write the Date to the socket
pout.println( new Java.util.Date().toString());
pout.close();
client.close();
…..
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;