Session 3 – Process(1)
Process vs Program
Process adalah eksekusi dari sebuah program.
Program adalah terdiri dari banyak instruksi yang bisa melakukan tugas.
Karakteristik dari Proses yaitu :
- Identifier
Untuk membedakan satu proses dengan proses yang lainnya.
- State
Untuk menggambarkan keadaan, apakah sedang running/suspended/terminated.
- Priority
Prioritas terhadap suatu proses.
- Program Counter
Untuk menyimpan alamat instruksi selanjutnya.
- Memory Pointers
Untuk menunjuk letak memory dari suatu program.
- Context Data
Data yang disimpan pada saat execution.
- I/O Status Information
Perangkat input output yang dimasukkan kedalam proses, daftar file yang digunakan proses dan lainnya.
- Accounting Information
Untuk mengetahui jumlah waktu suatu komputer digunakan, waktu clock, limit dan jumlah user.
Langkah Pembuatan Suatu Proses :
- Buat ID yang unik
- Pastikan ada tempat untuk proses tersebut
- Mengetahui balasan dan kegunaan dari proses tersebut
- Mengatur hubungan yang tepat
- Memperluas data struktur lainnya
Process Termination
- Normal Completion
- Time Limit Exceeded
- Memory Unavailable
- Bounds Violation
- Protection Error
- Arithmetic Error
- Time Overrun
- I/O Failure
- Invalid Instructions
- Privileged Instruction
- Data misuse
- Operating System Intervention
- Parents Terminates so Child Processes Terminate
- Parent Request
Process Table
Process table berfungsi menyimpan informasi mengenai lokasi process, beserta atribut process.
Properti yang dibutuhkan:
- Process ID
- Process State
- Location in memory
Process Location
– Proses mencakup sekumpulan program yang akan dieksekusi :
- Lokasi data untuk variabel lokal dan global
- Setiap konstanta yang didefinisikan
- Stack
– Process Control Block
Merupakan sekumpulan atribut yang ada pada table process.
– Process Image
Sekumpulan program, data, stack dan atribut.
Process Control Block
- Pengidentifikasian Proses
- Identifier -> Mengindentifikasi pengguna
- Informasi State Prosesor
- User-Visible Registers -> Yaitu referensi dari prosesor untuk mengeksekusi bahasa mesin.
- Control and Status Registers -> Berbagai register prosesor yang digunakan untuk mengendalikan operasi prosesor. Terdiri dari :
- Program Counter
- Condition Codes
- Status Information
- Stack Pointers (LIFO)
- Informasi proses control
Five State Process Model
Merupakan kondisi model yang mungkin dialami oleh suatu process.
- New -> Process baru saja di bentuk dan belum memasuki mekanisme antrian eksekusi.
- Ready -> Process tinggal menunggu giliran untuk dieksekusi.
- Running -> Process sedang dieksekusi.
- Blocked -> Process tidak dapat dieksekusi sampai suatu event terjadi, misalnya operasi I/O, dan kontrol atas processor diberikan ke process yang lain.
- Terminated/exit -> Process berakhir.
Reason for Process Switch
- Clock interrupt
- Proses yang dieksekusi telah mencapai waktu yang telah ditentukan
- I/O interrupt
- Memory fault
- Alamat memory terdapat di vitual memory sehingga harus dipindahkan ke memory utama
- Trap
- Terjadi error
- Menyebabkan proses ke jalan keluar
- Supervisor call
- Seperti file terbuka
Suspended Processes
- Processor lebih cepat dari I/O sehingga semua process dapat menunggu I/O.
- Melakukan swap proses ke disk untuk membebaskan lebih banyak memori.
- State yang di block menjadi suspend ketika di-swap ke disk.
- 2 State Baru :
- Blocked, Suspend
- Ready, Suspend
Modes of Execution
- User Mode
- System mode, control mode, or kernel mode
Session 4 – Process (2)
Process Management System ~ Call – fork()
- Membuat proses baru (child)
- Parent dan child dapat dieksekusi secara bersamaan
- Setiap proses dapat berkesinambungan dengan proses yang lainnya sehingga menciptakan hirarki proses
- Dalam sebuah proses parent dapat memilih untuk menunggu child atau mengakhiri
Fork()
- Mengembalikan nilai -1 jika gagal
- Mengembalikan nilai 0 pada anak
- Mengembalikan nilai > 1 pada parentnya
- Ketika fork ( ) dieksekusi , dapat membuat dua salinan identik dari address space
- Kedua proses dimulai setelah eksekusi
- Parent dan child dapat berjalan masing-masing
Tentang Fork ()
- Perintah pelaksanaan parent dan child mungkin berbeda pada berbagai platform. Parent dan child berjalan secara independen.
- Pada Ubuntu Linux urutannya, 1-2-3-4 (child kemudian kembali ke parent)
- Sedangkan di Solaris, 1-3-4-2 (parent lalu child)
- Secara umum, kita tidak pernah tahu apakah anak mulai dijalankan sebelum orang tua atau sebaliknya. Hal ini tergantung pada algoritma penjadwalan yang digunakan oleh kernel.
- fork () dipanggil sekali tetapi return dua kali
- Return nilai pada child adalah 0
- Return nilai di induk adalah PID anak
- Sebuah fork () sering diikuti dengan exec ()
System()
- Memanggil beberapa program
- Membuat subprocess yang berjalan dalam standar Bornue shell
- (/bin/sh) adalah command dari shall tersebut
- Execution : melihat fitur, pembatasan dan keamanan
- Shell umumnya terdapat pada GNU/Linux system, atau disebut bash
System() – Contoh
#include <stdlib.h>
int main ( )
{
int return_value ;
return_value = system ( “ls -l /” );
return return_value;
}
Exec()
- Hanya bisa memanggil 1 program
- Process ID tidak terganti
Exec () Family System Call
- Execvp and execlp (with p)
Menerima nama program dan mencari sebuah program dengan nama tersebut di jalur eksekusi yang sedang dilalui; fungsi yang tidak mengandung p harus diberi path lengkap dari program yang akan dieksekusi
- Execv, execvp, and execve (with v)
Menerima daftar argumen untuk program baru sebagai NULL-terminated array dari pointer ke string
- Execl, execlp, and execle (with l)
Menerima daftar argumen menggunakan bahasa C.
- Execve and execle (with e)
Menerima argumen tambahan, sebuah array dari variabel lingkungan.
- execve and execle (with e)
Execv()
- Mengeksekusi file, merubahnya dari calling-process menjadi new process
- Setelah eksekusi berhasil tidak ada return ke calling process
Other System Calls
- exit()
- Menghentikan proses secara normal
- wait()
- Digunakan oleh parent
- Menunggu child menyelesaikan eksekusi
- getpid()
- Return child
- getppid()
- Return parent