BAB 3 PROSES Nama 1 D 3 ITB
BAB 3 PROSES Nama : (1 D 3 IT-B) 1. Nur anisa novirina 2. Raditya Putranto 3. Arif Rahman susetyo
Isi Materi : • • • Process Concept Process Scheduling Operations on Processes Cooperating Processes Interprocess Communication in Client-Server Systems
Konsep Proses a) Sistem operasi mengeksekusi berbagai program: -Batch system – job -Time-shared systems – user p g ro ram atau task b) Beberapa buku menggunakan istilah job dan process secara bergantian. c) Proses - sebuah program yang sedang dieksekusi, d) Eksekusi proses dilakukan secara berurutan. e) Sebuah proses terdiri dari: -program counter -stack -data section
State pada Proses Ketika sebuah proses dieksekusi, akan mengalami perubahan state 1. new: Proses sedang dibuat 2. running: Instruksi sedang dieksekusi 3. waiting: Proses menunggu beberapa event terjadi 4. ready: Proses menunggu untuk dieksekusi 5. terminated: Proses selesai dieksekusi
Diagram State pada Process
Process Control Block (PCB) Adalah informasi yang terdapat pada setiap proses 1. State pada proses 2. Program counter 3. CPU registers 4. Informasi penjadwalan CPU 5. Informasi manajemen memory 6. Informasi Accounting 7. Informasi status I/O
CPU Berpindah (Switch) dari Proses ke Proses
Antrian pada Penjadwalan Proses : 1. Job queue – kumpulan semua proses dalam sistem 2. Ready queue – kumpulan semua proses yang berada di memori siap dan menunggu dieksekusi memori, siap dan menunggu dieksekusi 3. Device queue – kumpulan semua proses yang menunggu perangkat I/O 4. Migrasi proses antar antrian yang berbeda
Ready Queue dan beberapa I/O Device Queue
Representasi Penjadwalan Proses :
Scheduler (Penjadwal) Ada 3 type penjadwalan : 1. Long-term scheduler (atau job scheduler) – memilih proses mana yang seharusnya dibawa ke ready queue. 2. Medium term scheduler merupakan penjadwalan level tambahan. Pada medium term scheduler proses di swapping. Hal ini diperlukan untuk meningkatkan process mix karena perubahan pada kebutuhan memori melebihi memori yang tersedia. 3. Short-term scheduler (atau CPU scheduler) – memilih proses mana yang seharusnya dieksekusi berikutnya di CPU.
Scheduler (Penjadwal) lanjut 1. Short-term scheduler sering terjadi (dalam milliseconds) (cepat). 2. Long-term scheduler tidak sering terjadi (dalam seconds, minutes) (lebih lambat). 3. Long-term scheduler mengontrol tingkat multiprogramming. 4. Proses dapat digambarkan sebagai salah satu dari tipe di bawah ini: : a) I/O-bound process – lebih banyak menghapuskan waktu untuk menjalankan I/O daripada komputasi, membutuhkan waktu penggunaan CPU (CPU burst) yang pendek. b) CPU-bound process – lebih banyak menghabiskan waktu untuk komputasi, membutuhkan waktu penggunaan CPU yang panjang.
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
Pembuatan Proses (Process Creation) § Proses parent membuat proses anak (child), proses anak membuat proses anak lainnya membentuk tree § Penggunaan Resource bersama-sama (Resource sharing) - Parent dan child menggunakan semua resource bersama - Child menggunakan sebagian dari resource parent - Parent dan child tidak menggunakan resource yang sama § Eksekusi - Parent dan child mengeksekusi secara konkuren - Parent menunggu sampai child dihentikan -
Pembuatan Proses (Process Creation) lanj. § Penggunaan ruang alamat - Child dan parent menggunakan ruang alamat yang sama - Child mempunyai program untuk menempati alamat yang berbeda § Contoh : UNIX - System call fork membuat proses baru - System call exec digunakan setelah fork untuk mengganti ruang memori dengan program baru
Pohon Proses pada UNIX
Menghentikan Proses (Process Termination) § Proses mengeksekusi pernyataan terakhir dan sistem operasi menentukan penghentian proses (exit). - Data output dari child ke parent (via wait). - Resource dari proses di-dealokasi oleh sistem operasi § Parent bisa menghentikan eksekusi proses child (abort). - Child telah mengalokasikan resouce melebihi ketentuan - Task dari child tidak diperlukan lagi - Parent berhenti - Sistem operasi tidak mengijinkan child melanjutkan proses jika parent dihentikan - Penghentian sesuai alur
Proses yang Bekerjasama (Cooperating Process) § Proses Independent tidak berakibat atau diakibatkan oleh eksekusi proses lain § Proses cooperating (bekerja sama) dapat mengakibatkan atau diakibatkan oleh eksekusi proses lain § Kelebihan proses yang bekerja sama 1. Menggunakan informasi bersama-sama 2. Meningkatkan kecepatan komputasi 3. Modular 4. Kenyamanan
INTERPROCESS COMMUNICATION ( IPC )
PENGERTIAN INTERPROCESS COMMUNICATION ( IPC ) adalah komunikasi antar proses untuk mengirim data dari satu proses ke proses yang lain, baik antar proses dalam satu komputer maupun proses dalam komputer yang berbeda.
FUNGSI IPC Data Transfer Sharing Data Pemberitahuan kejadian Sumber Sharing and Sinkronisasi Proses kontrol
BERIKUT INI ADALAH KARAKTERISTIK DARI INTERPROCESS COMMUNINCATION (IPC) : komunikasi Synchronous dan asynchronous Message destinations Reliability Ordering
KOMUNIKASI SYNCHRONOUS DAN ASYNCHRONOUS pada komunikasi Synchronous, proses sinkronisasi pada pengiriman dan penerimaan terjadi pada setiap pesan dan sistem ini akan bekerja secara bergantian, jika sistem sedang mengirim pesan, maka sistem hanya akan boleh merespon, sampai pesan tersebut sampai. Pada komunikasi asynchronous, komunikasi ini dapat segera memproses sebuah pesan, setelah pesan tersebut berada di local buffer, dan pemrosesan pesan dengan pengiriman pesan bekerja secara peralalel
MESSAGE DESTINATIONS tempat tujuan dari sebuah pesan yang terdapat pada computer adalah local port, yang didefinisikan sebagai variable angka dengan tipe integer. Sebuah port pasti mempunyai satu penerima, akan tetapi bisa memiliki banyak pengirim
RELIABILITY Kehandalan dari sebuah sistem dapat dilihat dari validity dan integrity dari sistem itu. Sistem jika dilihat dari validty, dapat dikatakan handal jika, pesan yang disampaikan dijamin sampai tanpa ada pesan yang hilang atau jatuh, begitu juga sebaliknya.
ORDERING menginginkan pesan yang terkirim dari pengirim dapat diterima sesuai dengan urutan grouping / ordering berdasarkan pesan awal yang terikirim.
KATEGORI DARI IPC Shared memory Pipe Messages passing
SHARED MEMORY
SHARED MEMORY Sistem Berbagi Memori atau yang disebut juga sebagai Shared Memory System merupakan salah satu cara komunikasi antar proses dengan cara mengalokasikan suatu alamat memori untuk dipakai berkomunikasi antar proses. Alamat dan besar alokasi memori yang digunakan biasanya ditentukan oleh pembuat program. Pada metode ini, sistem akan mengatur proses mana yang akan memakai memori pada waktu tertentu sehingga pekerjaan dapat dilakukan secara efektif.
CONTOH sharing memory antara driver dan sebuah user-mode app dg IOCTL Masalah bounded buffer
PIPE Pipe merupakan komunikasi sequensial antar proses yang saling terelasi, namun pipe memiliki kelemahan yaitu hanya bisa digunakan untuk komunikasi antar proses yang saling berhubungan, dan komunikasinya yang dilakukan adalah secara sequensial. Urutan informasi yang ada dalam sebuah pipe ada yang mirip dengan antrian queue. Jika komunikasi yang diinginkan adalah komunikasi dua arah maka kita harus membuat dua pipe, karena sebuah pipe hanya bisa digunakan untuk komunikasi satu arah saja.
MESSAGES PASSING Sistem berkirim pesan adalah proses komunikasi antar bagian sistem untuk membagi variabel yang dibutuhkan. Proses ini menyediakan dua operasi yaitu mengirim pesan dan menerima pesan. Ketika dua bagian sistem ingin berkomunikasi satu sama lain, yang harus dilakukan pertama kali adalah membuat sebuah link komunikasi antara keduanya. Setelah itu, kedua bagian itu dapat saling bertukar pesan melalui link komunikasi tersebut. Sistem berkirim pesan sangat penting dalam sistem operasi. Karena dapat diimplementasikan dalam banyak hal seperti pembagian memori, pembagian bus, dan melaksanakan proses yang membutuhkan pengerjaan bersama antara beberapa bagian sistem operasi.
Setiap proses menggunakan kotak pesan untuk berkomunikasi Pesan diarahkan diterima dari kotak surat ( juga disebut sebagai port ) Setiap kotak surat memiliki sebuah id unik Proses dapat berkomunikasi hanya jika mereka berbagi kotak pesan
CONTOH Simple mail transfer protocol (SMTP) dikirim melalui electronic mail Remote procedure call (RPC) adalah fasilitas dalam bahasa pemrograman untuk didistribusikan. Meminta untuk beberapa bagian program untuk di alokasikan di computer yang berbeda Parallel virtual machine (PVM) and message passing interface (MPI) adalah message passing standards untuk parallel programming
MESSAGE PASSING Mailbox
SYNCHRONOUS Synchronous (blocking): msg operation, unblock thread, execute msg operation in another thread/kernel time Pesan di block hingga pesan tersebut hingga telah di jalankan Mungkin akan di block untuk jangka waktu yang panjang
ASYNCHRONOUS (NON-BLOCKING) msg operation, resume immediately execute msg operation in another thread/kernel time Dapat mengontrol alur dengan segera Alur dapat berjalan dengan secara pararel Alur tidak dapat di gunakan kembali pada buffer sebelum pesan tersebut telah di terima
pipe Classic IPC method under UNIX: > ls -l | more shell menjalankan dua proses ls dan more yang mana keduanya saling terhubung dengan pipe Proses pertama (ls) menulis data ke pipe dan yang kedua (more) membaca data dari pipe system memanggil pipe( fd[2] ) membuat sebuah file descriptor untuk membaca (fd[0]) dan satu untuk menulis (fd[1]) - sebagai penampung sementara pada memori untuk menggabungkan dua perintah
Pipes via pipe // Excerpt from "Linux Programmer's Guide - Chapter 6“. // (C)opyright 1994 -1995, Scott Burkett #include <stdio. h> #include <unistd. h> #include <sys/types. h> int main ( int argc, char* argv[] ) { int fd[2], nbytes; pid_t childpid; char string[] = "Hello, world!n“, readbuffer[80]; pipe( fd ); if ((childpid = fork()) == -1) { perror( "fork“ ); exit( 1 ); }
if (childpid == 0) { //Child process closes up input side of pipe close( fd[0] ); /* Send "string" through the output side of pipe */ write( fd[1], string, (strlen(string)+1) ); } else { //Parent process closes up output side of pipe close( fd[1] ); /* Read in a string from the pipe */ nbytes = read( fd[0], readbuffer, sizeof(readbuffer) ); printf( “parent: received string: %s", readbuffer ); } return 0; }
Pipes via pipen // Excerpt from "Linux Programmer's Guide - Chapter 6" // (C)opyright 1994 -1995, Scott Burkett #include <stdio. h> #define MAXSTRS 5 int main ( int argc, char* argv[] ) { FILE *pipe_fp; char *strings[MAXSTRS] = { "echo", "bravo", "alpha", "charlie", "delta"}; /* Create one way pipe line with call to popen() */ if (( pipe_fp = popen("sort > junk. dat", "w")) == NULL) { perror("popen"); exit(1); } /* Processing loop */ for (int cntr=0; cntr<MAXSTRS; cntr++) { fputs(strings[cntr], pipe_fp); fputc('n', pipe_fp); } /* Close the pipe */ pclose(pipe_fp); return 0; }
Name pipe Named pipes Use mkfifo command. (What is a FIFO? ) Example mkfifo ls mypipe –l mypipe prw------- 1 ggrevera 0 Oct 5 21: 30 mypipe ls –l > mypipe Hangs! Why? Ctrl-c ls –l > mypipe & cat < mypipe Hangs! Why? Output on next slide.
Contoh output dari name pipe ls –l > mypipe & cat < mypipe total 106412 -rwx------ 1 ggrevera 14215 Oct 5 20: 45 a. out drwx------ 5 ggrevera csc 4025 4096 Feb 3 2006 drwx------ 4 ggrevera csc 4035 4096 Oct 3 09: 59 -rw------- 1 ggrevera 194560 Sep 6 12: 52 csc 4035. tar -rw------- 1 ggrevera 891 Dec 4 2005 dir. cpp 1 ggrevera 283 Oct 5 20: 44 sig. cpp . . . -rw------[1]+ Done ls -l >mypipe
Signal types (see kill –l) 1) SIGHUP 2) SIGINT 3) SIGQUIT 5) SIGTRAP 6) SIGABRT 4) SIGILL 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR 1 11) SIGSEGV 12) SIGUSR 2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 30) SIGPWR 31) SIGSYS 28) SIGWINCH 32) SIGRTMIN 29) SIGIO 33) SIGRTMIN+1 34) SIGRTMIN+2 35) SIGRTMIN+3 36) SIGRTMIN+4 37) SIGRTMIN+5 38) SIGRTMIN+6 39) SIGRTMIN+7 40) SIGRTMIN+8 41) SIGRTMIN+9 42) SIGRTMIN+10 43) SIGRTMIN+11 44) SIGRTMIN+12 45) SIGRTMIN+13 46) SIGRTMIN+14 47) SIGRTMIN+15 48) SIGRTMAX-15 49) SIGRTMAX-14 50) SIGRTMAX-13 51) SIGRTMAX-12 52) SIGRTMAX-11 53) SIGRTMAX-10 54) SIGRTMAX-9 55) SIGRTMAX-8 56) SIGRTMAX-7 57) SIGRTMAX-6 58) SIGRTMAX-5 59) SIGRTMAX-4 60) SIGRTMAX-3 61) SIGRTMAX-2 62) SIGRTMAX-1 63) SIGRTMAX
signal Software interrupts Async Bisa dikenali atau diabaikan
signal #include <signal. h> //defn. of signal handler function typedef void (*sighandler_t)(int); //function call to establish a signal handler sighandler_t signal ( int signum, sighandler_t handler );
contoh code signal //define the signal hander function void my. Handler ( int signal. No ) { … } … //define the signal handler // (typically done once in main) signal( SIGCHLD, my. Handler );
Client server communication Sockets Remote Procedure Calls Remote Method Invocation (Java)
socket didefinisikan sebagai titik akhir untuk komunikasi. Rangkaian alamat IP dan port socket 161. 25. 19. 8: 1625 mengacu ke port 1625 pada host 161. 25. 19. 8 Komunikasi terdiri antara sepasang soket. Two types of socket : TCP (connection orienteed) and UDP (connectionless orienteed) Example : TCP : web , smtp, ftp, telnet, ssh UDP : DHCP, DNS, video streaming
Remote procedure calls Panggilan prosedur jauh (RPC) adalah abstraksi pemanggilan prosedur antara proses pada sistem jaringan. Rintisan - proxy klien-side untuk prosedur yang sebenarnya di server. Stub client-side menempatkan server dan marshal parameter. Rintisan sisi server menerima pesan ini, membongkarnya dengan parameter marshall, dan melakukan Prosedur di server. Beberapa aplikasi menggunakan RPC, yaitu : telnet, samba, NIS (network information service), dll Beberapa bahasa pemprograman memakai RPC, seperti : XML, JSON, Java memiliki RPC sendiri yang disebut RMI
Remote method invocation Remote Method Invocation (RMI) adalah mekanisme Java mirip dengan RPC. RMI memungkinkan program Java pada satu mesin untuk memanggil metode pada objek remote.
- Slides: 52