Anda di halaman 1dari 22

Manajemen Proses

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.

3. Jawaban diketik menggunakan word processor kemudian dikonversi ke file


berekstensi .pdf

4. Penamaan file HARUS sesuai dengan format NoKelompok_TugasX_NamaTugas.pdf


(contoh: 01_Tugas-2_Struktur_Sistem_Operasi.pdf).

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.

Laporan Praktikum Sistem Operasi 1


A. Teori

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

Laporan Praktikum Sistem Operasi 2


akan berjalan dan memakan sumber daya sistem, tetapi tidak akan memiliki
pengontrol atau bisa diterminasi secara normal. Dalam bahasa sederhana, orphan
process adalah proses yang tidak memiliki orang tua atau pengontrol, sehingga tetap
berjalan meskipun tidak berguna dan memakan sumber daya.
e. Process Control Block (PCB)
Process Control Block (PCB) adalah sebuah struktur data yang menyimpan informasi
tentang sebuah proses yang sedang berjalan pada komputer. Informasi ini termasuk
tugas yang sedang berjalan, alokasi memori, prioritas, status proses, dan informasi
lain yang dibutuhkan oleh sistem operasi untuk memantau dan mengontrol proses.
PCB digunakan oleh sistem operasi untuk mengelola proses-proses yang berjalan,
memastikan bahwa sumber daya diterapkan dengan efisien, dan memastikan bahwa
setiap proses dapat berjalan dengan benar. Dalam bahasa sederhana, PCB adalah
informasi tentang proses yang sedang berjalan pada komputer yang disimpan oleh
sistem operasi untuk membantu mengelolanya.

2. Langkah:
Tulislah program berikut.

Jawab:

Laporan Praktikum Sistem Operasi 3


3. Pertanyaan:
Dari kode program di atas jelaskan apa yang dimaksud dengan:
a. pid_t
b. fork()
c. execlp()
d. wait()
Jawab:
a. pid_t
pid_t adalah tipe data yang digunakan untuk menyimpan identifikasi proses unik
(Process ID) pada sistem operasi. Ini biasanya digunakan dalam berbagai fungsi
sistem operasi untuk mengacu pada proses tertentu.
b. fork()
fork() adalah fungsi sistem operasi yang digunakan untuk membuat proses baru (anak
proses) yang salinan dari proses utama (proses yang memanggil fungsi). Anak proses
ini akan memiliki identitas proses yang berbeda, tetapi akan memulai eksekusi dari
titik yang sama dengan proses utama.
c. execlp()
execlp() adalah fungsi sistem operasi yang digunakan untuk mengeksekusi file baru
pada proses yang sedang berjalan, menggantikan proses yang sedang berjalan dengan

Laporan Praktikum Sistem Operasi 4


file baru yang ditentukan. Ini biasanya digunakan untuk memulai program baru
dengan parameter atau opsi tertentu.
d. wait()
wait() adalah fungsi sistem operasi yang digunakan untuk menunggu proses anak
selesai sebelum melanjutkan eksekusi proses utama. Ini memastikan bahwa tugas
anak selesai sebelum proses utama melanjutkan tugasnya. Fungsi ini juga
memungkinkan proses utama untuk memperoleh status keluar dari proses anak untuk
memeriksa apakah tugas selesai dengan benar atau tidak.

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

Laporan Praktikum Sistem Operasi 5


Eksekusi program di atas dengan cara sebagai berikut:

a. Jelaskan perbedaan antara getpid() dengan getppid().


b. Jelaskan mengapa setiap kali program di atas dieksekusi, maka akan menampilkan
process ID yang berbeda. Jelaskan mengapa?
Jawab:

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:

Laporan Praktikum Sistem Operasi 7


Laporan Praktikum Sistem Operasi 8
Dapat dilihat bahwa kolom bagian paling kiri berisi informasi PID (Process ID). Untuk
proses induk yang menjalan proses ps -ax | more sebagai berikut. Bisa kita lihat dimana

Laporan Praktikum Sistem Operasi 9


parent process adalah process dengan PID 29813, yang ditandai dengan ./system yang
merupakan perintah yang sebelumnya digunakan untuk mencompile program.

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:

Laporan Praktikum Sistem Operasi 10


Laporan Praktikum Sistem Operasi 11
Kedua program tersebut menjalankan perintah ps -axl | more, tetapi mereka menggunakan
cara yang berbeda untuk melakukannya.

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().

Laporan Praktikum Sistem Operasi 12


Sementara itu, execlp() adalah fungsi yang digunakan dalam program kedua, yang
merupakan bagian dari library unistd.h. Fungsi execlp() menggantikan image dari
program saat ini dengan image baru yang diambil dari file yang diberikan sebagai
argument. Setelah image digantikan, perintah yang diberikan akan dieksekusi oleh image
baru.
Perbedaan antara system() dan execlp() adalah system() membuat shell baru dan
mengeksekusi perintah didalamnya, sementara execlp() menggantikan image dari
program saat ini dengan image baru dan mengeksekusi perintah didalamnya.

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.

Laporan Praktikum Sistem Operasi 13


Eksekusi kode program pada nomor 4, amati hasilnya, kemudian jelaskan hasil dari
program tersebut. Proses manakah yang dijalankan pertama kali, apakah proses induk
atau proses anak? Mengapa?
Jawab:

Laporan Praktikum Sistem Operasi 14


Parent process adalah proses yang pertama di eksekusi karena child process akan
menduplikasi ruang memori dari parent process.

5. Langkah dan 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.

Laporan Praktikum Sistem Operasi 15


6. Pertanyaan:
Sesuai dengan siklus pembentukan proses anak dengan menggunakan fork() hingga
proses anak diterminasi seperti yang ditunjukkan pada slide presentasi halaman 3.21,
maka proses induk harus menunggu seluruh proses anak selesai dengan memanggil
system call wait(). Dengan memodifikasi program nomor 5, tuliskan program di
bawah (halaman selanjutnya). Pada program tersebut anda akan menerapkan system
call wait() dengan menggunakan library sys/wait.h.

Laporan Praktikum Sistem Operasi 16


Jawab:

Laporan Praktikum Sistem Operasi 17


Laporan Praktikum Sistem Operasi 18
7. Pertanyaan:
Jelaskan apa efek dari menggunakan fungsi wait() dari program di atas? Bandingkan
hasil dari program pada nomor 5 dengan hasil program nomor 6, apa yang dapat anda
simpulkan dari kedua program tersebut?
Jawab:
Pada nomor 5 hasil decrement terakhir dari variable n untuk mengetikkan command
pada terminal.Tetapi pada bagian nomor 6 function wait() yang diberikan membuat
parent process untuk menunggu child process selesai dieksekusi untuk kemudian
parent process melakukan terminasi sehingga dapat dilihat exit code = 0.
8. Pertanyaan:
Jelaskan mengapa parent process harus memanggil system call wait() dan apa yang
terjadi apabila system call wait() tidak dipanggil?
Jawab:
System call wait() dipanggil untuk membuat parent process menunggu child process
menyelesaikan eksekusi processnya hingga selesai. Stelah child process berhenti atau
diterminasi maka giliran parent process berikutnya untuk berhenti beroperasi, jika
system call wait() tidak dipanggil maka dapat terjadi yang namanya orphan process,
parent pocess berhenti tanpa menunggu child process untuk berhenti terlebih dahulu
atau dengan kata lain dimana suatu child process masih sedang berjalan atau
dieksekusi namun tidak lagi memiliki suatu parent process yang manaunginya.

9. Langkah:
Tuliskan kode program berikut.

Laporan Praktikum Sistem Operasi 19


Jawab:

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:

Laporan Praktikum Sistem Operasi 20


Buatlah sebuah program untuk mengurutkan data menggunakan algoritma Selection
Sort. Namakan program sebagai child_process_ssort.c. Kompilasi program untuk
menghasilkan berkas tereksekusi (executable file): child_process_ssort.exe. Proses ini
akan anda gunakan sebagai proses anak.
Jawab:

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:

Laporan Praktikum Sistem Operasi 21


Laporan Praktikum Sistem Operasi 22

Anda mungkin juga menyukai