10/17/2012
SISTEM OPERASI PROSES-PROSES
[email protected]
http://blogriki.wordpress.com
Pembahasan • • • • • •
Konsep Proses Penjadualan Proses Operasi-operasi pada Proses Cooperating Processes Interprocess Communication Komunikasi pada Sistem Client-Server
1
10/17/2012
Konsep Proses • Proses : suatu program yang sedang dieksekusi 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
• 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
2
10/17/2012
Konsep Proses Monoprogramming • Program oleh proses monitor (atau operator) diload 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
3
10/17/2012
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
4
10/17/2012
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
5
10/17/2012
Process Control Block (PCB)
Proses-proses dari Memori Utama ke Register
6
10/17/2012
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
7
10/17/2012
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
8
10/17/2012
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
9
10/17/2012
Status Proses - Scheduler long-term longscheduler
short-term shortscheduler
Diagram Perpindahan Proses Swap in Baru terproses sebagian &
Swap out medium term scheduler
di swap-out sementara
new
Ready queue
I/O
long-term longscheduler
CPU
en d
I/O waiting queue
short-term shortscheduler
10
10/17/2012
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 banyak daripada untuk komputasi; banyak terdapat CPU burst yang pendek – CPU-bound process : proses-proses yang melakukan lebih banyak komputasi; beberapa CPU burst yang panjang
11
10/17/2012
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
12
10/17/2012
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 prosesproses • 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
13
10/17/2012
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
14
10/17/2012
Process Termination • suatu proses mengalami terminasi akibat inisiatif child atau parent
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
15
10/17/2012
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
16
10/17/2012
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
17
10/17/2012
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; }
18
10/17/2012
Ilustrasi Producer-Consumer Problem in
out producer in out
0
consumer
Empty
11
0
Half-full
11
0
out
Full
11
Ring-buffer 12 slots
in
Algoritma Producer-Consumer (Pascal) Shared
data var n; type item = …; var buffer : array [0..n [0..n--1] of item; in, out : 0..n0..n-1; n := 0; out := 0;
• 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 no--op op;; nextc := buffer buffer[[out out]; ]; out := out out+1 +1 mod n; … consume the item in nextc … until false false;;
19
10/17/2012
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
20
10/17/2012
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 (bidirectional) • Satu arah : proses hanya send (atau receive) dan hanya satu yang receive
21
10/17/2012
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 adalah sender
P
Q
22
10/17/2012
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 : repeat … Produce(nextp) … send(consumer, nextp) … until false;
Consumer : repeat … receive(produser, nextc) … Consume(nextc) … until false false;;
23
10/17/2012
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 P A – send(A, message)
Q
• Kirim message ke dalam mailbox A
– receive(A, message) • Terima message dari dalam mailbox A
24
10/17/2012
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 mencreate mailbox • Komunikasi berlangsung dengan pemanggilan perintah send & receive message melalui mailbox tersebut • Saat proses hendak exit maka proses mendestroy mailbox
25
10/17/2012
Masalah pada Mailbox Sharing • Mailbox sharing P – P1, P2, and P3 share mailbox A. P A – P1, sends; P2 dan P3 receive. P – 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 2
1
3
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.
26
10/17/2012
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)
27
10/17/2012
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
28
10/17/2012
Ilustrasi Socket
Komunikasi Socket
29
10/17/2012
Detail Komunikasi Socket
Sockets in Unix Server membuat socket menggunakan bind(), sehingga dapat dimanfaatkan oleh clients
30
10/17/2012
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;
New socket to connect to client
To send data simply using println
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(); …..
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); } ……. …..
31
10/17/2012
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
32
10/17/2012
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 prosesproses 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)
33
10/17/2012
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.
34
10/17/2012
Kekurangan RPC • Tidak fleksibel terhadap perubahan : – Static relationship between client & server at runtime.
• 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
35
10/17/2012
Marshalling Parameters
- Local objects passed by copy (object serialization) - Remote objects passed by reference
36