Process VS Program
- Process : berisikan instruksi untuk melakukan suatu tugas
- Program : eksekusi dari sebuah program
Karakteristik dari Proses :
1. Identifier
--> identifier yang unik berasosiasi dengan proses, untuk membedakan setiap proses yang ada
2. State
--> ketika proses sedang dieksekusi (dijalankan), maka akan dalam keadaan sedang diproses.
3. Priority
--> level prioritas relatif terhadap setiap proses.
4. Program Counter
--> alamat dari instruksi selanjutnya di dalam program untuk di eksekusi.
5. Memory Pointers
--> berisikan pointer untuk kode dan data program yang berasosiasi dengan proses tersebut, ditambah dengan ada nya blok memory yang dibagi dengan proses lain.
6. Context Data
--> ini merupakan data yang sedang berada di register (terdaftar) di dalam proses ketika proses sedang dieksekusi.
7. I/O Status Information
--> berisikan permintaan I/O yang terkenal, seperti disk drives yang berada di proses tersebut.
8. Accounting Information
--> dapat berisikan jumlah waktu processor dan jam waktu yang terpakai, limit waktu, nomor akun, dll.
Kreasi dari proses :
- membuat identifier proses yang unik
- mengalokasikan tempat untuk proses
- menginisialisasi kontrol pada blok proses
- membuat linkage yang benar
- membuat ekspansi pada struktur data
Terminasi pada proses :
1. Penyelesaian yang normal
2. Limit waktu melebihi batas
3. Memory tidak tersedia
4. Pelanggaran batas (bound violation)
5. Proteksi dari error
6. Aritmatika error
7. Melampaui waktu dari yang ditentukan
8. Kegagalan pada I/O (Input Output)
9. Instruksi yang salah
10. Data salah digunakan
11. Instruksi diistimewakan
12. Request parent
13. Intervensi pada Operating System (OS)
14. Parent diterminasi sehingga proses pada child dapat diterminasi juga
Processor State Information :
- Control dan Status Registers
---> Program Counter
Berisikan alamat dari instruksi selanjutnya yang akan diambil
---> Condition Codes
Hasil dari aritmatika yang terbaru atau operasi logikal
---> Status Information
Informasi mengenai flag interupsi yang di aktifkan / dimatikan, mode eksekusi
- Stack Pointers
---> Setiap proses memiliki 1 atau lebih sistem LIFO (Last In First Out) yang berasosiasi dengan nya. Stack digunakan untuk menyimpan paramter dan memanggil alamat-alamat untuk prosedur dan pemanggilan sistem. Pointer stack menunjuk pada stack yang paling tinggi.
Process Control Information
- Scheduling and State Information
---> Process State
mendefinisikan kesiapan dari proses untuk dijadwalkan untuk dieksekusi
---> Priority
satu atau lebih bidang yang dapat digunakan untuk mendefinisikan prioritas penjadwalan dari proses tersebut
---> Scheduling-related Information
bergantung pada algoritma penjadwalan yang digunakan.
---> Event
identitas peristiwa dari proses yang menunggu sebelum dapat dilanjutkan.
Alasan untuk Process switch :
1. Interupsi waktu
2. Interupsi pada I/O
3. Kesalahan pada memori
4. Jebakan
5. Pemanggilan dari atas (file open)
Pemanggilan sistem managemen pada proses :
- membuat proses baru (child = anak)
- parent dan child dieksekusi secara bersamaan
- setiap proses dapat membuat cabang pada proses lain sehingga dapat membuat hirarki proses
- suatu proses dapat memilih untuk menunggu anak (child) nya untuk diterminasi
Penggunaan fork() :
- Apabila gagal, angka return yang ditunjukkan adalah "-1"
- Apabila merupakan child, return yang ditunjukkan adalah "0"
- Return yang didapatkan akan menjadi [nomor positif, identifier child di dalam parent]
fork() sering digunakan bersamaan dengan exec()
system() :
- mengeksekusi suatu perintah dari program
exec() :
- memanggil exec() akan mengterminasi program yang sedang berjalan dan akan memulai mengeksekusi program yang baru dimana sudah dispesifikasikan di dalam parameter exec tersebut.
Beberapa perintah untuk exec() :
1. int execl( const char *path, const char *arg, ....)
2. int execv( const char *path, char *const argv[], ....)
3. int execle( const char *path, const char *arg, .... , char *const envp[] )
4. int execlp( const char *file, const char *arg, ....)
5. int execvp( const char *file, char *const argv[] )
Penjelasan untuk syntax perintah diatas :
- execvp dan execlp
--> menerima nama program dan kemudian mencari program dengan nama tersebut pada jalur eksekusi yang ditentukan
- execv, execvp, dan execve
--> menerima list argumen untuk program baru sebagai array terminasi bersifat NULL pada pointer ke string
- execl, execlp, execle
--> menerima list argumen menggunakan bahasa pemograman C
- execve dan execle
--> menerima argumen tambahan, array berisikan variabel. Argumen harus bersifat NULL dari pointer ke string.
Sistem pemanggilan lain nya :
1. exit()
---> mengterminasi proses secara normal
---> membuka blokir dari parent yang menunggu
2. wait()
---> digunakan oleh parent
---> menunggu child untuk selesai dieksekusi
3. getpid()
---> mengembalikan identifier dari proses pemanggilan
4. getppid()
---> mengembalikan identifier dari parent
Tidak ada komentar:
Posting Komentar