KONSEP PROSES
Sistem operasi menjalankan banyak dan beragam program :
1. Batch system – jobs
2. Time-shared systems – user programs atau tasks
3. Istilah pada buku teks: job, task dan process (dapat diartikan sama)
Proses adalah program yang dieksekusi ;
Aktif (proses=>memori) vs pasif (program => file)
Instruksi pada program (code) akan dieksekusi secara berurut (sekwensial) sesuai dengan “line code” (stored program concept).
Proses lebih dari “program code yang aktif”:
1. Melacak posisi instruksi (sequential execution): program counter
2. Menyimpan data sementara var., parameter, return value: stack
3. Menyimpan data (initial, global variable dll): data section
4. Menyimpan status proses (contoh, aktif, wait I/O request dll.)
STATUS PROSES
Saat-saat proses dijalankan (executed) maka status dari proses akan berubah
1. Status proses tidak selamanya aktif menggunakan CPU).
2. Sering proses menunggu I/O complete => status wait, sebaiknya CPU diberikan kepada proses yang lain.
3. Mendukung multi-tasking – utilisasi CPU dan I/O
Status proses (antara lain):
1. new: proses dibuat.
2. running: instruksi dieksekusi.
3. waiting: proses menunggu beberapa event yang akan terjadi
4. ready: proses menunggu jatah waktu dari prosessor
5. terminated: proses selesai dieksekusi.
Diagram Status Proses
INFORMASI PROSES
Dimanakah informasi proses disimpan?
Data struktur dari OS dalam bentuk table :
1. Satu entry table/linked list => struktur data untuk menampung informasi satu proses (array of structure).
2. Setiap entry pada tabel proses menyimpan satu proses. Contoh: MINIX (src/kernel/proc.h) => struct proc { … };
Informasi yang disimpan:
1. Informasi internal CPU: isi register-register, program counter, status CPU dll (umumnya dalam bentuk stack frame).
2. Identifikasi proses: nama proses, proses number/index, proses id.
3. Identifikasi proses: nama proses, proses number/index, proses id.
4. Accounting dan timer: user time, system time, alarm etc.
5. Resources: memory & file management.
PENJADWALAN PROSES
Bagaimana schedulers memilih proses atau program (decision)? Lebih dari satu proses atau program yang akan dijalankan?
Long-term scheduler (or job scheduler) – memilih proses/program yang mana yang akan di load dan berada di ready queue.
Kemungkinan terdapat proses atau job baru.
Kemungkinan proses dipindahkan dari memori ke disk (swap out).
Short-term scheduler (or CPU scheduler) – memilih proses yang mana yang berada di ready queue akan “run” (mendapatkan jatah CPU).
Long-term scheduler tidak sering (proses baru) (seconds, minutes) => (may be slow).
The long-term scheduler controls the degree of multiprogramming => berapa banyak proses yang dapat aktif (berada di memori)
Short-term scheduler dijalankan sangat sering (milliseconds) => giliran pemakaian CPU dari proses- proses yang siap
ü 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.
Dikenal dengan istilah: context 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:
1. Resource sharing
Parent dan child berbagi resource
Children berbagi subset dari resource milik parents.
Parent dan child tidak berbagi resource.
2. Execution
Parent dan children melakukan eksekusi secara serempak.
Parent menunggu hingga children selesai.
3. Address space
Child menduplikasi parent.
Child memiliki program yang di load ke dalamnya.
Contoh UNIX :
fork system call membuat proses baru
execve (EXEC) :
1. menjalankan program spesifik yang lain
2. nama program tersebut menjadi parameter dari system call
3. EXEC (sering di load sesudah menjalankan fork).
Tahapan pembuatan proses baru:
1. Periksa apakah masih terdapat ruang pada PCB.
2. Mencoba mengalokasikan memori untuk proses baru.
3. Mengisi informasi untuk proses baru: nama proses, id, copy data dari parent dll.
4. Mencantumkan informasi proses ke kernel OS.
Sistem Tree Pada Unix
TERMINASI PROSES
Proses dapat berakhir:
1. Eksekusi instruksi terakhir (atau keluar: exit system call).
2. OS yang akan melakukan dealokasi (memory, file resources).
UNIX (MINIX):
1. Output signal dari child ke parent
2. Jika parent tidak menunggu (via wait system call), proses akan terminate tapi belum di release dari PCB (status: ZOMBIE).
3. 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).
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
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.