Minggu/Sesi : III/2
Kode Mata : 1031202
Kuliah
Nama Mata : Sistem Operasi
Kuliah
Setoran : Jawaban disetor ke ecourse untuk soal bagian
A. Teori (nomor 1 sd. 4)
B. Pemrograman (nomor 1, 2, 3, 4, 5, 7, 8, 10)
Kode Program diunggah ke ecourse untuk soal bagian
C. Tugas Pemrograman (child_process_ssort.c dan parent_process.c)
Batas Waktu : H+4 pukul 17.00 WIB.
Setoran
Tujuan : Mahasiswa mampu menulis program untuk pengelolaan proses pada Linux
yang mencakup pembuatan proses dan terminasi proses.
Petunjuk
1. Tugas ini dikerjakan secara individu.
2. Mencontoh pekerjaan dari orang lain akan dianggap plagiarisme dan anda akan ditindak
sesuai dengan sanksi akademik yang berlaku di IT Del atau sesuai dengan kebijakan saya
dengan memberikan nilai 0.
5. Keterlambatan menyerahkan laporan tidak ditolerir dengan alasan apapun. Oleh karena itu,
laporan harus dikumpul tepat waktu.
6. Gunakan Sistem Operasi Linux boleh menggunakan Distro apapun namun disarankan
untuk mempermudah praktikum gunakan Ubuntu.
1. Pertanyaan:
Pertanyaan berikut terkait dengan konsep-konsep dasar Proses
a. Definisikan program.
b. Definisikan proses.
c. Definisikan Zombie Process
d. Definisikan Orphan Process
e. Jelaskanlah Process Control Block (PCB)
Jawab:
a. Definisi program.
Program adalah sekumpulan instruksi yang ditulis dalam bahasa pemrograman yang
digunakan untuk memerintahkan komputer melakukan tugas tertentu. Ini bisa berupa
tugas sederhana seperti menambahkan dua angka, atau tugas yang lebih kompleks
seperti mengoperasikan sebuah game atau aplikasi. Tujuan dari sebuah program
adalah untuk membantu komputer memahami apa yang harus dilakukan dan
bagaimana melakukannya, sehingga kita dapat menyelesaikan tugas kita dengan lebih
cepat dan mudah.
b. Definisi proses.
Proses adalah sebuah tugas atau aktivitas yang sedang berlangsung pada komputer. Ini
bisa berupa program yang sedang berjalan, aplikasi yang sedang beroperasi, atau
bahkan tugas sistem seperti pemeliharaan atau pembaruan. Setiap proses
membutuhkan sumber daya komputer seperti memori dan CPU, dan beberapa proses
bisa berjalan pada saat yang bersamaan. Proses dapat diterima, diterminasi, atau
dikembalikan ke antrian untuk dieksekusi kembali, tergantung pada kebutuhan sistem
dan prioritas yang ditentukan. Dalam bahasa sederhana, proses adalah hal-hal yang
sedang berjalan pada komputer Anda sekarang untuk membantu Anda menyelesaikan
tugas Anda.
c. Definisi Zombie Process
Zombie process adalah sebuah proses yang sudah selesai, tetapi masih terdaftar
sebagai proses aktif pada sistem operasi. Ini biasanya terjadi karena masalah pada
komunikasi antara proses utama dan anak proses, sehingga anak proses tidak dapat
mengirimkan informasi kembali ke proses utama bahwa tugasnya sudah selesai.
Zombie process memakan sumber daya sistem tanpa memberikan manfaat apapun,
dan biasanya harus diterminasi secara manual untuk membebaskan sumber daya yang
terpakai. Dalam bahasa sederhana, zombie process adalah proses yang sudah mati
tetapi masih terlihat hidup pada komputer, sehingga memakan sumber daya yang
tidak perlu.
d. Definisi Orphan Process
Orphan process adalah sebuah proses yang ditinggalkan oleh proses utamanya,
sehingga tidak memiliki proses utama yang mengontrol atau bertanggung jawab atas
tugas yang sedang berjalan. Ini biasanya terjadi karena proses utama tersebut crash
atau diterminasi sebelum menyelesaikan tugas anak proses. Orphan process masih
2. Langkah:
Tulislah program berikut.
Jawab:
4. Langkah:
Beri tanda bagian program yang merupakan proses induk (parent process) dan proses
anak (child process).
Jawab:
B. Pemograman
1. Pertanyaan:
Tuliskan kode program berikut
a. Getpid() dan getppid() adalah dua fungsi yang digunakan dalam programming
untuk mengambil informasi tentang proses yang sedang berjalan. Kedua fungsi ini
sangat berguna bagi para programmer untuk memahami bagaimana proses-proses
tersebut berjalan dan bagaimana mereka saling berinteraksi.
getpid() adalah singkatan dari "Get Process ID", yaitu fungsi untuk mengambil ID
unik dari proses yang sedang berjalan. ID ini unik karena setiap proses yang
berjalan pada sistem memiliki ID yang berbeda-beda.
getppid() adalah singkatan dari "Get Parent Process ID", yaitu fungsi untuk
mengambil ID dari proses induk dari proses yang sedang berjalan. Setiap proses
yang berjalan pada sistem memiliki sebuah proses induk yang menjadi sumber
dari proses tersebut. Oleh karena itu, fungsi getppid() akan mengembalikan ID
dari proses induk dari proses yang sedang berjalan.
Jadi, secara singkat, getpid() digunakan untuk mengambil ID dari proses yang
sedang berjalan, sedangkan getppid() digunakan untuk mengambil ID dari proses
induk dari proses yang sedang berjalan
b. Setiap kali program di atas dieksekusi, maka akan menampilkan process ID yang
berbeda karena setiap kali program dieksekusi, sebuah proses baru akan dibuat oleh
sistem operasi. Proses tersebut memiliki identitas unik yang disebut dengan process
ID (PID), dan PID ini akan berbeda setiap kali sebuah proses baru dibuat yaitu
berturut-turut process ID akan bertambah satu. Oleh karena itu, ketika program di atas
Laporan Praktikum Sistem Operasi 6
dieksekusi, setiap kali akan mencetak PID dari proses yang baru dibuat, yang tentunya
berbeda dengan PID dari proses sebelumnya.
2. Pertanyaan:
Pada kode program berikut, proses baru akan dibentuk dengan menggunakan fungsi
system().
Eksekusilah program di atas kemudian capture hasilnya. Tunjukkanlah proses mana yang
menjalankan proses ps –axl | more dengan menandai ID proses induk-nya.
Jawab:
3. Pertanyaan:
Pada kode program berikut, proses baru akan dibentuk dengan menggunakan fungsi
exec().
Jalanka
n kode program pada nomor 3. Amati hasilnya dan bandingkan hasilnya dengan
program pada nomor 2. Temukan perbedaannya dan jelaskan mengapa?
Jawab:
System() adalah fungsi yang digunakan dalam program pertama, yang merupakan bagian
dari library stdlib.h. Fungsi system() membuat shell baru dan mengeksekusi perintah yang
diberikan sebagai argument. Hasil dari perintah yang dieksekusi akan dikembalikan ke
shell yang memanggil fungsi system().
Dalam Proses
1. informasi yang ditampilkan pada file system.c yang menggunakan function
system() menampilkan PID, TTY, STAT, TIME, COMMAND, sedangakan pada
file execlp tidak tampak karena lansung menunjukkan akhir dari ekseskusi.
2. pada saat file system.c di compile file tersebut tidak langsung menunjutkan hasil
keseluruhan compile melainkan kita harus menekan tombol more untuk untuk
melihat compile selanjutnya hingga akhir, sedangkan file execlp.c ketika
dicompile make akan lansung mengcompile seluruh/menampilakan secara
keseluhan.
3. pada file system.c kita dapat melihat command ./system yang dijalankan beserta
dengan argument pada system yang kita berikan children process dari ./system
tersebut dimana kita dapat melihat proses dengan command sh -c ps -ax | more,
kemudian ps -ax, dan more memiliki process IDnya tersendiri. Sedangkan pada
file execlp.c kita hanya melihat satu proses saja yang menandakan munculnya
daftar proses ini. Proses tersebut adalah PID 29842 ditandai dengan command ps -
axl yang menampilkan keseluruhan daftar secara lansung.
4. Pertanyaan:
Tuliskan kode program berikut.
Program di atas akan menjalankan dua proses yaitu proses induk dan proses anak.
Proses anak akan dijalankan sebanyak 5 kali, dan proses induk akan dijalankan
sebanyak 3 kali. Jalankan program di atas dan amati hasil yang terjadi?
Jawab:
Program di atas memiliki loop "for" yang menampilkan pesan "message" sebanyak
"n" kali. Jumlah iterasi loop "for" ditentukan oleh nilai "n" yang berbeda untuk proses
anak dan proses induk.
Dalam kasus ini, nilai "n" untuk proses anak diatur ke 5, sementara nilai "n" untuk
proses induk diatur ke 3. Oleh karena itu, proses anak akan menampilkan pesan "This
is the child" sebanyak 5 kali, sedangkan proses induk akan menampilkan pesan "This
is the parent" sebanyak 3 kali.
Perbedaan dalam jumlah iterasi loop "for" antara proses anak dan proses induk
disebabkan oleh pengaturan nilai "n" yang berbeda pada masing-masing proses.
9. Langkah:
Tuliskan kode program berikut.
10. Pertanyaan:
Eksekusi program di atas. Observasi hasil dari eksekusi program, Anda dapat
menggunakan perintah ps –al pada terminal yang lain untuk melihat proses yang
sedang berjalan. Apakah hasil dari perintah ps –al, jelaskan mengapa terjadi hal
demikian?
Jawab:
Melalui hasil compile terlihat bahwa yang dieksekusi pada terminal lainnya yang
menjalankan zombie mengalami hal yang disebut zombie process sebagaimana
dimaksudkan pada kode di soal no 9 dengan suatu pernyataan if > pid = 0 maka
parent process akan melakukan sleep selama 60 s walaupun sebenarnya
pengeksekusian dari paten process sudah selesai dilakukan dan process masih terlihat
ketika dipanggil ps -al.
C. Tugas Pemograman
1.Langkah:
2. Langkah:
Buatlah proses induk yang bertujuan untuk membuat dan mengeksekusi proses anak
pada no. 1 di atas. Beri nama program anda sebagai parent_process.c. Kompilasi dan
jalankan program.
Jawab: