Anda di halaman 1dari 75

Proses

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

• 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
Ready Queue dan I/O Device Queues
Representasi Process
Scheduling

= queue (ready queue & device queue)

= resource yang melayani


queue
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
Status Proses - Scheduler
long-term scheduler

short-term
scheduler
Diagram Perpindahan Proses

Swap in Baru Swap out


Baruterproses
terprosessebagian
sebagian&&
diswap-out
di swap-outsementara
sementara medium term
scheduler

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

• 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
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
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
Proses Tree pada UNIX System
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)
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
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
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
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.
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
Bounded-Buffer – Producer Process
item nextProduced;

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

• 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
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
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
Direct Communication

• 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

– P1, P2, and P3 share mailbox PA.


11 A
– P1, sends; P2 dan P3 receive. P33

– 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
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.
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
Komunikasi Client-Server

• 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

• Contoh standard port :


– TELNET menggunakan port 23
– FTP menggunakan port 21
– HTTP server menggunakan port 80
Ilustrasi Socket
Komunikasi Socket
Detail Komunikasi Socket
Sockets in Unix
Server membuat socket
menggunakan bind(), sehingga
dapat dimanfaatkan oleh clients
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
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;

while ( (line = bin.readLine ()) != null)


System.out.println (line);
}
…….
…..
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
Mekanisme RPC
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
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, CORBA
(Common Object Request Broker Architecture - OMG)
Contoh RPC

• Server hosts subroutines which can be called


from a client machine
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.
Kekurangan RPC
• Tidak fleksibel terhadap perubahan :
– Static relationship between client & server at
run-time.
• Berdasarkan prosedural /structured
programming yang sudah ketinggalan
jaman dibandingkan OOP.
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
Marshalling Parameters

- Local objects passed by copy (object serialization)


- Remote objects passed by reference
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
END OF MODUL - 4

Anda mungkin juga menyukai