1. Program adalah entitas pasif yang menyimpan serangkaian instruksi yang akan dieksekusi
dalam file, program disimpan dalam harddisk.
Proses adalah entitas aktif yang mengeksekusi serangkaian instruksi (yaitu program).
Proses berhubungan dengan Proses Block Control, Register, dll. Proses tersimpan di dalam
main memory.
Thread adalah unit terkecil dalam suatu proses yang bisa dijadwalkan oleh sistem operasi.
Kaitan dari ketiga hal tersebut adalah program jika di jalankan akan menjadi proses, di
mana di dalam proses tersebut terdapat satu atau lebih thread.
2. Contoh Program:
- Web Browser (Google Chrome, Firefox)
- Office Suite (Excel, Word, Powerpoint)
- Games (Pinball, Counter Strike, DOTA, Solitaire)
Contoh Proses:
- init = proses yang pertama kali jalan di Linux
- cpuset = membatasi proses untuk prosesor dan memory node
- kthreadd = kernel thread daemon
Kelompok Soal Kedua: Process Management
1. a. Argumen-argumen yang biasa dijalankan adalah:
ps aux : untuk menampilkan semua proses user maupun root secara detail
ps -eH : Untuk menampilkan hubungan proses parent dan child
ps -eF : Menampilkan proses parent dan child serta letak prosesnya
an ps untuk menentukan jawaban sesuai atau tidak
Selain diatas, gunakan referensi m
1. b. Waktu suatu proses dimulai akan terlihat pada field START ketika melakukan
perintah ps aux.
Bila system call fork() dieksekusi, proses lain dibuat. Proses asal disebut proses
parent dan proses kedua disebut proses child. Proses child merupakan duplikat dari
proses parent. Kedua proses melanjutkan eksekusi dari titik dimana system call
fork() menghasilkan eksekusi pada program utama. Karena UNIX adalah system
operasi time sharing, dua proses tersebut dapat mengeksekusi secara konkuren.
Nilai yang dihasilkan oleh fork() disimpan dalam variable bertipe pid_t, yang berupa
nilai integer
3. Apa perbedaan antara getpid(void) dengan getppid(void)? Mengapa perlu ada ppid
jika pid saja sudah cukup?
4. Apakah yang dimaksud dengan zombie process, orphaned process, dan daemon
process? Apa perbedaan ketiga proses tersebut?’
Zombie process adalah sebuah keadaan dimana suatu process sudah mati, namun
masih ada beberapa proses yang mati namun masih belum dibersihkan secara baik
dan benar. Zombie process biasanya disebabkan oleh child process yang sudah
selesai dieksekusi namun parent tidak melakukan system call wait().
Pencegahan dapat dilakukan dengan memastikan bahwa tiap parent proses yang
dibuat ketika mendapat signal SIGCHLD dari child (menyatakan bahwa child
process sudah melakukan exit pada program) pasti akan mengeksekusi system call
wait(). Setelah wait() dieksekusi dan parent membaca status “mati” dari child
process, maka zombie status dari child process akan dihapus secara otomatis dari
memory.
Solusi permasalahannya jika sudah terjadi adalah
a. Mengirim SIGCHLD kepada parent process, berharap parent process dapat
melakukan syscall wait() pada children jika dikirimi SIGCHLD
b. Menghentikan/kill parent process. Maka children dari parent process yang
dibunuh akan diadopsi oleh init dan init akan memanggil wait kepada
children
c. Membiarkan proses tersebut sampai system reboot, karena tidak memakan
resource selain memory space dan PID
Referensi tambahan:
https://ask.slashdot.org/story/08/12/04/217233/why-use-virtual-memory-in-modern-s
ystems
Untuk mengatasi, jangan lupa melakukan free (memori dibebaskan agar dapat digunakan
lagi untuk proses lain) jika menggunakan malloc setelah memori selesai digunakan. More
reason:
http://stackoverflow.com/questions/2983216/ways-to-avoid-memory-leaks-in-c-c
Filename Output
Factorial.cpp Factorial.o
Hello.cpp Hello.o
Main.cpp Main.o
● Apa saja yang dilakukan kedua perintah diatas? Apa saja yang dihasilkan?
● Apa saja perbedaan dan persamaan dari dua perintah diatas?
Kegunaan: menghitung waktu yang diperlukan untuk menulis file
Perbedaan: blocksize yang digunakan, isi file dan waktu penulisan
persamaan: besar file