Proses pada Sistem Operasi
A. Pengertian Proses
Proses pada sistem operasi adalah program yang sedang dieksekusi, merupakan unit kerja terkecil yang secara individu memiliki sumber sumber daya yang dijadwalkan oleh sistem operasi. Awalnya proses dijalankan secara berurut (sekwensial) sesuai dengan “line code” (stored program concept), suatu proses akan di eksekusi sampai selesai baru kemudian berpindah ke proses selanjutnya. Sistem sekwensial memiliki kelemahan yakni tingkat pengguna atau utilitas prosesor yang rendah.
Proses dapat melakukan lebih dari “program code yang aktif”, seperti :
Proses pada sistem operasi adalah program yang sedang dieksekusi, merupakan unit kerja terkecil yang secara individu memiliki sumber sumber daya yang dijadwalkan oleh sistem operasi. Awalnya proses dijalankan secara berurut (sekwensial) sesuai dengan “line code” (stored program concept), suatu proses akan di eksekusi sampai selesai baru kemudian berpindah ke proses selanjutnya. Sistem sekwensial memiliki kelemahan yakni tingkat pengguna atau utilitas prosesor yang rendah.
Proses dapat melakukan lebih dari “program code yang aktif”, seperti :
- Melacak posisi instruksi (sequential execution) : program counter
- Menyimpan data sementara var, parameter, return value : stack
- Menyimpan data (initial, global variable dll) : data section
- Menyimpan status proses (contoh, aktif, wait I/O request dll.)
- Menyimpan data sementara var, parameter, return value : stack
- Menyimpan data (initial, global variable dll) : data section
- Menyimpan status proses (contoh, aktif, wait I/O request dll.)
B. Status Proses
Proses yang dieksekusi mempunyai lima status yang terdiri dari :
Proses yang dieksekusi mempunyai lima status yang terdiri dari :
1. New : pembentukan suatu proses
2. Running : instruksi-instruksi yang sedang dieksekusi
3. Waiting : proses menunggu untuk beberapa event yang terjadi
4. Ready : menunggu untuk dialirkan ke pemroses (processor)
5. Terminated : proses telah selesai dieksekusi
Kelima status proses tersebut dapat digambarkan pada diagram berikut:
Saat-saat proses dijalankan (executed) maka status dari proses akan berubah
- Status proses tidak selamanya aktif menggunakan CPU).
- Sering proses menunggu I/O complete => status wait, sebaiknya CPU diberikan kepada proses yang lain.
- Mendukung multi-tasking – utilisasi CPU dan I/O
- Status proses tidak selamanya aktif menggunakan CPU).
- Sering proses menunggu I/O complete => status wait, sebaiknya CPU diberikan kepada proses yang lain.
- Mendukung multi-tasking – utilisasi CPU dan I/O
C. Pembentukan Proses
Saat komputer berjalan, terdapat banyak proses yang berjalan secara bersamaan. Sebuah proses dibuat melalui system call createn process membentuk proses turunan (child process) yang dilakukan oleh proses induk parent process. Proses turunan tersebut juga mampu membuat proses baru sehingga kesemua proses-proses ini pada akhirnya membentuk pohon proses.
Ketika sebuah proses dibuat maka proses tersebut dapat memperoleh sumber daya seperti "waktu CPU", "memori", "berkas" atau peerangkat "M/K". Sumber daya ini dapat diperoleh langsung dari Sistem Operasi, dari Proses Induk yang membagi-bagikan sumber daya kepada setiap proses turunannya, atau proses turunan dan proses induk berbagi sumber daya yang diberikan Sistem Operasi. Ada dua kemungkinan bagaimana jalannya (running) proses induk dan turunan berjalan (running). Proses-proses tersebut berjalan secara konkuren atau proses induk menunggu sampai beberapa/seluruh proses turunannya selesai berjalan.
D. Pengelolaan Proses
Proses perlu dikelola karena dalam sebuah proses membutuhkan beberapa sumber daya untuk menyelesaikan tugasnya. Sumber daya tersebut dapat berupa CPU time, memori, berkas-berkas, dan perangkat-perangkat I/O.
Sistem operasi bertanggung jawab atas aktivitas - aktivitas yang berkaitan dengan managemen proses seperti :
- Pembuatan dan penghapusan proses pengguna dan sistem proses
- Menunda atau melanjutkan proses
- Menyediakan mekanisme untuk proses sinkronisasi
- Menyediakan mekanisme untuk proses komunikasi
- Menyediakan mekanisme untuk penanganan deadlock
- Pembuatan dan penghapusan proses pengguna dan sistem proses
- Menunda atau melanjutkan proses
- Menyediakan mekanisme untuk proses sinkronisasi
- Menyediakan mekanisme untuk proses komunikasi
- Menyediakan mekanisme untuk penanganan deadlock
Perkembangan sistem komputer mendatang adalah menuju ke sistem multiprocessing, multiprogramming, terdistribusi dan paralel yang mengharuskan adanya proses - proses yang berjalan bersama dalam waktu yang bersamaan. Hal demikian merupakan masalah yang perlu perhatian dari perancang sistem operasi. Kondisi dimana pada saat yang bersamaan terdapat lebih dari satu proses disebut dengan kongkurensi (proses-proses yang kongkuren). Proses - proses yang mengalami kongkuren dapat berdiri sendiri (independen) atau dapat saling berinteraksi, sehingga membutuhkan sinkronisasi atau koordinasi proses yang baik.
E. Proses Control Block (PCB)
Proses Control Block adalah bentuk informasi-informasi lain yang diperlukan sistem operasi untuk mengendalikan dan mengoordinasikan beragam proses aktif dalam suatu proses. Dalam kenyataannya, proses banyak mengalami gangguan dalam menjalankan tugasnya oleh karena itu, ada PCB (Proses Control Block) untuk membantu dan memberikan dukungan kepada proses itu.
Tiap proses digambarkan dalam sistem operasi oleh sebuah process control block (PCB) disebut sebuah control block.PCB berisikan banyak bagian dari informasi yang berhubungan dengan sebuah proses yang spesifik, seperti status proses, program counter, CPU register, Informasi manajemen memori, informasi pencatatan, informasi status I/O. PCB hanya berfungsi sebagai tempat penyimpanan informasi yang dapat bervariasi dari proses yang satu dengan yang lain.
1. Status proses : status mungkin new, ready, running, waiting, halted, dll.
2. Program counter: suatu stack yang berisi alamat dari instruksi selanjutnya untuk dieksekusi untuk
proses ini.
proses ini.
3. CPU register: Register bervariasi dalam jumlah dan jenis, tergantung pada rancangan komputer.
Register tersebut termasuk accumulator, indeks register, stack pointer, general-purposes register,
ditambah code information pada kondisi apa pun. Besertaan dengan program counter,
keadaaan/status informasi harus disimpan ketika gangguan terjadi, untuk memungkinkan proses
tersebut berjalan/bekerja dengan benar setelahnya.
Register tersebut termasuk accumulator, indeks register, stack pointer, general-purposes register,
ditambah code information pada kondisi apa pun. Besertaan dengan program counter,
keadaaan/status informasi harus disimpan ketika gangguan terjadi, untuk memungkinkan proses
tersebut berjalan/bekerja dengan benar setelahnya.
4. Informasi managemen memori: Informasi ini dapat termasuk suatu informasi sebagai nilai dari
dasar dan batas register, tabel page/halaman, atau tabel segmen tergantung pada sistem memori
yang digunakan oleh sistem operasi.
dasar dan batas register, tabel page/halaman, atau tabel segmen tergantung pada sistem memori
yang digunakan oleh sistem operasi.
5. Informasi pencatatan: Informasi ini termasuk jumlah dari CPU dan waktu riil yang digunakan, batas
waktu, jumlah akun jumlah job atau proses, dan banyak lagi.
6. Informasi status I/O: Informasi termasuk daftar dari perangkat I/O yang di gunakan pada proses ini,
waktu, jumlah akun jumlah job atau proses, dan banyak lagi.
6. Informasi status I/O: Informasi termasuk daftar dari perangkat I/O yang di gunakan pada proses ini,
suatu daftar berkas-berkas yang sedang diakses dan banyak lagi.
· Elemen-elemen dari Process Control Block (PCB) : 1. Identifier : menjelaskan proses yang sedang terjadi 2. State : kondisi yang terjadi pada proses 3. Priority : urutan perintah yang jelas pad suatu proses 4. Program counter : instruksi pada proses 5. Memory pointers : media penyimpanan (penunjuk alamat) pada proses 6. Context data : data yang berkaitan dengan proses 7. I/O status information : terdapat masukan dan keluaran yang diinginkan 8. Accounting information : memberikan informasi yang dibutuhkan
Penjadwalan Proses
- Multiprogramming bertujuan untuk Maximize pemakaian CPU secara efisien (jadwal dan giliran pemakaian CPU).
- CPU digunakan oleh proses-proses terus menerus
- Time-Sharing bertujuan untuk Pemakaian CPU dapat di switch dari satu proses ke proses lain (concurrent process execution)
- Sesering mungkin, user dapat berinteraksi dengan sistem jika sistem prosessor tunggal maka hanya ada satu proses yang dapat dijalankan dan proses lain menunggu sampai CPU dapat dijadwalkan (schedule) ke proses tersebut.
- Ready Queue dan I/O Device Queue
1. Penjadwalan Proses
- Proses dapat berubah status dan berpindah dari satu antrian ke antrian yang lain
· Proses dengan status “ready” berada di ReadyQueue
a. Menunggu giliran/dipilih oleh scheduler => menggunakan CPU
· Selama eksekusi (status “run”) events yang dapat terjadi:
a. I/O request => I/O wait berada pada DeviceQueue
b. Create “child” proses => Jalankan proses “child”, tunggu sampai proses selesai (wait)
c. Time slice expired => Waktu pemakaian CPU habis, interrupt oleh scheduler, proses akan berpindah ke ReadyQueue
2. Penjadwal / Schedulers
a. Long-term scheduler (Job Scheduler)
· Memilih proses/program yang mana yang akan di load dan berada di ready queue.
a. Kemungkinan terdapat proses atau job baru.
b. Kemungkinan proses dipindahkan dari memori ke disk (swap out).
· Long-term scheduler tidak sering (proses baru) (seconds, minutes) => (may be slow).
a. The long-term scheduler controls the degree of multiprogramming => berapa banyak proses yang dapat aktif (berada di memori)
b. Short-term scheduler (CPU Scheduler)
· Memilih proses yang mana yang berada di ready queue akan “run” (mendapatkan jatah CPU).
· Short-term scheduler dijalankan sangat sering (milliseconds) => giliran pemakaian CPU dari proses- proses yang siap
a. Pada saat terjadi penggantian alokasi CPU dari satu proses ke proses lain:
· Menyimpan informasi internal CPU dari proses yang akan digantikan (SAVE).
· Meload kembali informasi internal CPU dari proses yang akan menggantikan.
b. Dikenal dengan istilah: context switch proses.
Alih Konteks / Context Switch
- Jika Scheduler switch ke proses lain, maka sistim harus menyimpan “informasi” proses sekarang (supaya dapat dijalankan kembali).
- Load “informasi” dari proses baru yang berada di PCB
- Waktu Context-switch adalah overhead; sistem tidak melakukan pekerjaan saat terjadi switch.
· Sangat tergantung pada waktu di hardware
· OS modern mencari solusi untuk mengurangi overhead waktu switch proses
Pembuatan Proses
- Umumnya proses dapat membuat proses baru (child process).
· Child process dapat membuat proses baru.
· Terbentuk “tree” dari proses.
- Pilihan hubungan antara parent dan child proses:
· Resource sharing
a. Parent dan child berbagi resource
b. Children berbagi subset dari resource milik parents.
c. Parent dan child tidak berbagi resource.
· Execution
a. Parent dan children melakukan eksekusi secara serempak.
b. Parent menunggu hingga children selesai.
· Address space
a. Child menduplikasi parent.
b. Child memiliki program yang di load ke dalamnya.
- Contoh UNIX :
· fork system call membuat proses baru
· execve (EXEC) :
a. menjalankan program spesifik yang lain
b. nama program tersebut menjadi parameter dari system call
c. EXEC (sering di load sesudah menjalankan fork).
· Tahapan pembuatan proses baru:
a. Periksa apakah masih terdapat ruang pada PCB.
b. Mencoba mengalokasikan memori untuk proses baru.
c. Mengisi informasi untuk proses baru: nama proses, id, copy data dari parent dll.
d. Mencantumkan informasi proses ke kernel OS.
- Proses Tree pada Sistem UNIX
Terminasi Proses
- Proses dapat berakhir:
· Eksekusi instruksi terakhir (atau keluar: exit system call).
· OS yang akan melakukan dealokasi (memory, file resources).
- UNIX (MINIX):
· Output signal dari child ke parent
· Jika parent tidak menunggu (via wait system call), proses akan terminate tapi belum di release dari PCB (status: ZOMBIE).
· Proses dengan status ZOMBIE (parent telah terminate), akan menjadi child dari proses “init”.
- Parent dapat menghentikan eksekusi proses child secara paksa.
· Parent dapat mengirim signal (abort, kill system call).
Kerjasama Proses
- Proses independent tidak mempengaruhi eksekusi proses yang lain
- Kerjasama proses dapat mempengaruhi atau dipengaruhi oleh eksekusi proses yang lain
- Keuntungan kerjasama proses :
· Sharing informasi
· Meningkatkan kecepatan komputasi
· Modularitas
· Kemudahan
- Masalah Producer-Consumer
· Paradigma kerjasama proses – proses Producer menghasilkan informasi yang akan dikonsumsi oleh proses Consumer
a. Unbounded-buffer – tidak menggunakan batasan ukuran di buffer.
· Consumer selalu dapat meminta item baru dan Producer selalu dapat menghasilkan item-item baru.
b. Bounded-buffer – menggunakan buffer dengan ukuran tertentu
· Consumer harus menunggu jika buffer kosong dan Producer harus menunggu jika buffer penuh
Inter Process Communication (IPC)
- Mekanisme proses untuk komunikasi dan sinkronisasi aksi
- Sistem Pesan – komunikasi proses satu dengan yang lain dapat dilakukan tanpa perlu pembagian data.
- IPC menyediakan dua operasi :
· Send (message) – pesan berukuran pasti atau variable
· Receive (message)
- Jika P dan Q melakukan komunikasi, maka keduanya memerlukan :
· Membangun jalur komunikasi diantara keduanya
· Melakukan pertukaran pesan melaui send/receive
- Implementasi jalur komunikasi
· Physical (shared memory, hardware bus)
· Logical (logical properties)
1. Komunikasi Langsung
- Proses harus diberi nama secara jelas :
· Send (P, message) – kirim pesan ke proses P
· Receive (Q, message) – terima pesan dari proses Q
- Properti jalur komunikasi
· Jalur dibangun secara otomatis
· Setiap jalur memiliki pasangan masing-masing dalam proses komunikasi
· Jalur komunikasi tersebut biasanya directional
2. Komunikasi Tidak Langsung
- Pesan dikirim dan diterima melalui mailboxes (yang ditunjuk sebagai port)
· Proses
· Processes can communicate only if they share a mailbox.
- Properti jalur komunikasi
· Jalur komunikasi hanya dibangun jika proses di-share dalam mailbox
· Jalur merupakan gabungan beberapa proses
· Setiap pasangan proses dibagi ke dalam beberapa jalur komunikasi.
- Operasi
· Membuat mailbox baru
· Mengirim dan menerima pesan melalui mailbox
· Menghapus/memusnahkan mailbox
- Primitive didefinisikan :
· send (A, message) – kirim pesan ke mailbox A
· receive (A, message) – terima pesan dari mailbox A
- Sinkronisasi
· Pesan yang disampaikan dapat di blok atau tidak (non-blocking)
· Blocking dikenal dengan synchronous.
· Non-blocking dikenal dengan asynchronous
- Buffering
· Antrian pesan yang dihubungkan dalam suatu jalur, diimplementasikan dengan tiga jalan :
a. Zero capacity => tidak ada pesan
Sender harus menunggu receiver (rendezvous).
Sender harus menunggu receiver (rendezvous).
b. Bounded capacity => memiliki panjang yang terbatas (finite length) dari n pesan.
Sender menunggu pada saat jalur penuh.
Sender menunggu pada saat jalur penuh.
c. Unbounded capacity => memiliki panjang tidak terbatas (infinite length)
Sender tidak pernah menunggu.
Sender tidak pernah menunggu.
Komunikasi Client-Server
1. Sockets
->Suatu socket didefinisikan sebagai titik akhir (endpoint) komunikasi
- A socket is defined as an endpoint for communication.
- Gabungan IP address dan port
- Socket 161.25.19.8:1625 mengacu pada port 1625 pada host 161.25.19.8
- Komunikasi berada diantara pasangan socket
- Komunikasi Socket
2. Remote Procedure Calls (RPC)
->Abstraksi pemanggilan prosedur diantara proses pada sistem jaringan
- Stubs – proxy sisi client untuk prosedur aktual pada server
- Stub sisi client ditempatkan di server dengan parameter marshalls.
- Stub sisi server menerima pesan, membongkarnya dengan parameter marshall dan menjalankan prosedur pada server.
- Eksekusi RPC
3. Remote Method Invocation (RMI)
-> Mekanisme pada JAVA yang hampir sama dengan RPC
- RMI membolehkan program JAVA pada satu mesin untuk menggunakan metode untuk melakukan remote objek.
0 komentar:
Posting Komentar