SisOp Session 3 & Session 4
*Session 3
Process
Process vs Program
Program : Berisi instruksi – instruksi untuk melakukan perintah atau pekerjaan
Process : Eksekusi dari program
Process Characteristic
- Identifier : Kode unik yang digunakan untuk membedakannya dari proses lain
- State : Menentukan kondisi dari program (apakah program itu sedang Running / Suspended / Terminated)
- Priority : Menentukan level prioritas saat eksekusi dilakukan
- Program Counter : Menyimpan alamat instruksi selanjutnya
- Memory pointers : Menunjukkan posisi memori
- Context data : Data yang disimpan saat eksekusi
- I/O status confirmation : Menunjukkan informasi status I/O
- Accounting information : menunjukkan informasi mengenai perhitungan numerik mengenai proses yang terjadi di komputer.
Process Creation
- Membuat ID Unik
- Mengalokasi memori untuk proses
- Menginisiasi Process Control Block (PCB)
- Menyiapkan antrian program
- Membuat expand data
Process Termination
- Normal completion
- Time limit exceeded
- Memory unavailable
- Bounds violation
- Protection error
- Arithmetic error
- Time overrun
- I/O failure
- Invalid instruction
- Privileged instruction
- Data misuse
- Operating system intervention
- Parent terminates so child processes terminate
- Parent request
Process Table
- Merupakan tempat proses terjadi
- Atribut dari process table
– Process ID
– Process state
– Location in memory
Process Location
- Berisi sekumpulan program yang akan dieksekusi
- Program Control Block (PCB)
- Process image
Process Control Block
- Process Identification
– Identifier : menggunakan ID unik untuk proses idetifikas
- Processor State Information
– User – Visible Registers :
Dengar fungsi ini setiap user yang terdaftar dapat direferensikan sesuai bahasa mesin yang digunakan saat eksekusi dijalankan.
– Control and Status Registers :
Variasi prosessor register bertugas untuk mengatur operasi prosessor.
– Stack Pointers :
Stack pointer berfungsi untuk menujukkan posisi stack yang berupa operasi Last in first out (LIFO). Sebuah stack menyimpan parameter dan alamat prosedur.
– Scheduling and State Information :
Berisi jadwal dan informasi yang diperlukan oleh sistem operasi saat eksekusi
Five State Process Model
Reason for Process switch
- Clock interrupt
- I/O interrupt
- Memory fault
- Trap
- Supervisor call
Suspended Processes
- Processor lebih cepat disbanding I/O sehingga semua proses dapat menunggu I/O
- Menukar proses ke disk untuk membebaskan lebih banyak memori
- Blocked state menjadi suspend state ketika memori ditukar ke disk
- Menghasilkan dua state baru :
– Blocked, suspend
– Ready, suspend
Cause of Process Suspension
Modes of Execution
- User mode
– Less-privileged mode
– User programs typically execute in this mode
- System mode, control mode, or kernel mode
– More-privileged mode
– Kernel of the operating system
*Session 4
Process (cont..)
Process Management System Call – fork()
- Membuat proses baru (child)
- Parent dan child dapat dieksekusi bersamaan
- Setiap proses dapat saling berkesinambungan antara satu proses dengan proses lainnya sehingga menciptakan hirarki proses
- Dalam sebuah proses, parent dapat memilih untuk menunggu child atau mengakhiri proses secara langsung
fork()
- Returns -1 jika gagal
- Returns 0 jika child
- Returns >1 jika parent
- Ketika fork() dieksekusi maka kita dapat membuat dua Salinan identik dari address space
- Parent dan child dapat berjalan secara independen
fork() -(cont)
- Perintah eksekusi parent dan child mungkin berbeda – beda di tiap platform.
- Pada Ubuntu Linux urutan eksekusinya, 1 – 2 – 3 – 4 (dimulai child kemudian kembali ke parent)
- Pada Solaris, 1 – 3 – 4 – 2 (dari parent kemudian kembali ke child)
- Secara umum, kita tidak pernah tahu apakah child dijalankan terlebih dahulu atau sebaliknya. Hal ini tergantung algoritma penjadwalan yang digunakan oleh kernel
- Pada saat eksekusi fork() dipanggil sekali tetapi return nilai dua kali :
– Return 0 pada child
– Return nilai di parent (PID child)
- Sebuah fork() biasanya sering diikuti dengan exec()
System()
- Mengeksekusi perintah dari beberap program
- Membuat subproses yang berjalan dalam standar Bornue shell
- (/bin/sh) adalah command dari shell (Standar Bornue Shell)
- Shell umumnya terdapat pada GNU/Linux system, atau dikenal sebagai bash
- Execution, melihat fitur, pembatasan, dan keamanan
System() – example
#include <stdlib.h>
int main ( )
{
int return_value ;
return_value = system ( “ls -l /” );
return return_value;
}
Exec()
- Hanya bisa memanggil satu program
- Jika exec() dipanggil maka proses yang sedang berjalan akan di-terminated oleh sistem
- Process ID tidak berganti
Exec() Family System Call
- int execl( const char *path, const char *arg, …);
- int execv( const char *path, char *const argv[]);
- int execle( const char *path, const char *arg , …, char * const envp[]);
- int execlp( const char *file, const char *arg, …);
- int execvp( const char *file, char *const argv[]);
Exec() Family System Call
- execvp dan execlp (with p)
Mencari nama program dan mencari sebuah program dengan nama tersebut dijalur eksekusi yang sedang dijalankan.
- execv, execvp, and execve (with v)
Menerima daftar argument untuk program baru sebagai NULL-terminated array dari pointer ke string.
- execl, execlp, and execle (with l)
Merima daftar argument menggunaka bahasa C.
- execve, execle (with e)
Menerima argument tambahan berupa array dari variabel lingkungan. Argument mesti bernilai NULL.
Execv()
- Mengeksekusi file, merubah file dari calling-process menjadi new process
- Setelah eksekusi berhasil berhasil tidak ada return ke calling process
Fork() and Exec()
Other System Calls
- exit() : Menghentikan proses secara normal
- wait() : Digunakan oleh parent berfungsi sebagai perintah untuk menunggu child menyelesaikan eksekusi
- getpid() : return child
- getppid() : return parent
Thanks…




