Anda di halaman 1dari 18

LABORATORIUM PEMBELAJARAN ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER


UNIVERSITAS BRAWIJAYA

NAMA : FAISHAL AFIF


NIM : 205150201111041
MATERI : BAB II
TANGGAL : 18/03/2021
ASISTEN : MUHAMMAD FACHRY NOORCHOOLISH ARIF

BAB 2
PROSES
2.1. Tujuan Praktikum
Bab ini bertujuan untuk:
1. Mengenalkan perintah fork() dan exec() pada system operasi
Linux
2. Mengenalkan perintah-perintah dasar system operasi Linux
terkait pemantauan proses yang sedang berlangsung.

2.2. Capaian Praktikum


1. Mahasiswa dapat menjalankan perintah pada system operasi
Linux untuk memantau proses yang sedang berjalan dalam
system operasi
2. Mahasiswa dapat memahami fungsi perintah fork() dan
exec() dalam pembentukan proses

2.3. Dasar Teori


Proses merupakan sebuah program yang sedang dieksekusi atau
dijalankan. Secara sederhana, sebuah proses baru dibuat dan dijalankan
ketika perintah diberikan oleh pengguna kepada komputer melalui
antarmuka pengguna. Proses ini kemudian membuat proses baru lainnya,
atau juga menyebabkan sistem operasi harus membuat proses atau thread
baru yang saling terkait. Dan dengan arsitektur komputer serta desain
sistem operasi modern, sangat dimungkinkan untuk menjalankan banyak
proses, yang berasal dari aplikasi atau program yang sama ataupun juga
berbeda. Pembentukan proses baru pada sistem operasi linux
menggunakan dua system call utama, yaitu fork() dan exec().

Dengan menggunakan fork(), proses baru yang dihasilkan akan


sama persis dengan proses sebelumnya. Artinya apa yang telah dieksekusi
sebelumnya akan diduplikasi, termasuk berkas yang dibuka, status register,
semua alokasi memori dan juga kode program. Yang membedakan proses
lama (parent) dan proses baru (child) adalah identitas proses (PID) yang
dimiliki. Jika yang dibutuhkan adalah proses baru yang benar-benar
berbeda dari proses sebelumnya, maka linux akan menggunakan system
call exec(). System Call exec() mengganti isi proses yang sedang
berjalan dengan informasi baru dari program yang dijalankan terakhir.
Perbedaan dari kedua system call ini dapat dilihat pada gambar 2.1.

Sistem operasi linux juga membawa berbagai macam perintah untuk


mengelola proses. Perintah-perintah ini pada umumnya dimasukkan atau
dijalankan melalui shell atau pada sistem operasi modern cenderung
menggunakan GUI yang menyediakan shell melalui sebuah aplikasi
terminal dan sejenisnya. Fungsi utama shell adalah untuk membantu
pengguna untuk memulai, mengatur dan menghentikan proses. Contoh
perintah terkait dengan pengaturan proses pada sistem operasi linux antara
lain:

 ps(1) – melihat status dari satu atau lebih proses.

 kill dan killall – menghentikan proses.

 pstree(1) – menampilkan hirarki dari proses yang sedang


berjalan.
 top – menampilkan penggunaan resources (processor, memori)
dari sebuah proses.
 nice – mengatur prioritas dari sebuah proses baru.

 renice(8) - mengubah prioritas dari sebuah proses yang


sedang berjalan.
 skill – mengetahui status dari sebuah proses.

 snice - mengetahui status dari sebuah proses.

 acct – pencatatan aktifitas dan status proses dalam sebuah


berkas /var/log/pacct.
 lastcomm(1) – menampilkan informasi tentang perintah
sebelumnya. Hanya aktif jika acct berjalan.
 sa(8) – melihat ringkasan isi berkas /var/log/pacct terkait
dengan proses.
Gambar 2.1. Pembentukan proses dengan fork() dan exec()

2.4. Langkah Praktikum


Praktikum ini dilakukan dengan terlebih dahulu terhubung dengan
layanan aws educate dengan cara mengaktifkan instance dari halaman
instance summary. Pilih action dan Start untuk mengaktifkan instance.
Lakukan koneksi SSH dengan cara yang sama seperti pada Bab 1.

2.4.1. Menjalankan perintah dasar Linux


Setelah berhasil login, lakukan perintah berikut ini, amati, buat
rekaman screenshoot dan atau catat hasil yang diperoleh untuk
mendapatkan hasil-hasil yang akan dibahas dibagian pembahasan.
1. man ps
2. top
3. ps
4. ps -ax

5. Untuk melanjutkan praktikum, silakan buka satu koneksi ssh lagi


ke server aws dengan cara yang sama dengan Langkah
sebelumnya.
Terminal 1 adalah yang digunakan untuk menjalankan
Langkah 1 – 4.
Terminal 2 adalah yang dibuka pada Langkah ke 5

6. Pada terminal 2, bukalah file praktikum.txt dengan perintah


nano praktikum.txt

7. Pada terminal 1, lakukan aktifitas berikut ini:


a. Jalankan perintah ps -ax
b. Carilah proses ID yang menjalankan perintah nano, gunakan
proses ID tsb untuk menjalankan perintah (c)
c. Kemudian jalankan perintah kill -9 [prosesID]

8. Pada terminal 2, amati dan catat apa yang terjadi

9. Pada terminal 2 jalankan perintah pstree

10. Jalankan perintah apt-get update pada terminal 1

11. Pada terminal 2, jalankan perintah pstree.

12. Kemudian masih pada terminal 2, Jalankan perintah top.


Setelah perintah apt get update selesai pada terminal 1,
hentikan perintah top dengan CTRL+C.

13. Jalankan perintah pstree lagi pada terminal 2.

2.4.2. Penggunaan System call fork() dan exec()

1. Pada terminal 1 jalankan program nano

2. Tuliskan kode program berikut ini

#include <stdio.h>
#include <unistd.h>
/* This program forks and and the prints whether
the process is
* - the child (the return value of fork() is 0), or
* - the parent (the return value of fork() is not
zero)
*
* When this was run 100 times on the computer the
author is
* on, only twice did the parent process execute
before the
* child process executed.
*
* Note, if you juxtapose two strings, the compiler
automatically
* concatenates the two, e.g., "Hello " "world!"
*/
int main( void ) {
int pid = fork();

if ( pid == 0 ) {
printf( "This is being printed from the
child process\n" );
} else {
printf( "This is being printed in the
parent process:\n- the process identifier (pid) of
the child is %d\n", pid );
}

return 0;
}

3. Save dengan nama fork.c

4. Keluar dari nano, Kembali ke terminal. Jalankan perintah gcc


fork.c

5. Jika pada mesin EC2 belum dapat menjalankan perintah gcc,


jalankan perintah berikut ini
sudo apt-get install gcc

6. Ulangi jalankan perintah gcc fork.c

7. Jalankan perintah ./a.out

8. Sementara pada terminal 2 jalankan perintah pstree dan top


LABORATORIUM PEMBELAJARAN ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA

NAMA : FAISHAL AFIF


NIM : 205150201111041
TUGAS : BAB II
TANGGAL : 18/03/2021
ASISTEN : MUHAMMAD FACHRY NOORCHOOLISH ARIF

1. Apakah hasil yang anda dapatkan setelah menjalankan perintah pada


Langkah 1. Jelaskan apa yang anda ketahui mengenai perintah ini dan
bagaimana informasi yang didapatkan.
Jawab:

man adalah perintah untuk melihat halaman informasi atau


fungsi dari sebuah perintah. ps adalah perintah untuk
menampilkan aplikasi yang sedang aktif. Informasi yang
ditampilkan dari perintah man ps ialah nama, sinopsi, dan
deskripsi dari perintah

2. Apakah hasil yang anda dapatkan setelah menjalankan perintah pada


Langkah 2. Jelaskan apa yang anda ketahui mengenai perintah ini dan
bagaimana informasi yang didapatkan.
Jawab:
top adalah perintah yang akan menampilkan daftar semua proses
yang sedang berjalan dan setiap detik akan diperbarui. Proses yang
ditampilkan ialah proses yang paling besar menggunakan sumber
daya,

3. Apakah hasil yang anda dapatkan setelah menjalankan perintah pada


Langkah 3. Jelaskan apa yang anda ketahui mengenai perintah ini dan
bagaimana informasi yang didapatkan.
Jawab:

ps adalah perintah yang digunakan untuk menampilkan proses yang


sedang berjalan pada sistem beserta PIDnya. Setelah saya
melakukan perintah ps, diketahui bahwa proses bash dan ps sedang
berjalan.

4. Apakah hasil yang anda dapatkan setelah menjalankan perintah pada


Langkah 4. Jelaskan apa yang anda ketahui mengenai perintah ini dan
bagaimana informasi yang didapatkan.
Jawab:

Perintah ps -ax menampilkan kombinasi dari 2 fungsi, a untuk


menampilkan semua proses dari semua pengguna, dan x
memasukkan proses yang tidak berjalan pada terminal. Setelah saya
melakukan perintah ps –ax, yang muncul adalah daftar dari semua
proses baik yang berjalan ataupun tidak pada terminal.

5. Apakah hasil yang anda dapatkan setelah menjalankan perintah pada


Langkah 7 (a-c). Jelaskan apa yang anda ketahui mengenai perintah ini
dan bagaimana informasi yang didapatkan.
Jawab:
Perintah ps –ax menampilkan menampilkan semua proses dan
memasukan proses yang tidak berjalan ke dalam terminal. Karena
sebelumnya saya telah membuka praktikum.txt dengan perintah nano
praktikum.txt, proses tersebut ditampakkan pada PID 1052.

Lalu lakukan perintah kill -9 1052 pada terminal 1 untuk


menghentikan proses dengan PID 1052 pada
6. Apakah hasil yang anda dapatkan setelah menjalankan perintah pada
Langkah 8. Jelaskan apa yang anda ketahui mengenai perintah ini dan
bagaimana informasi yang didapatkan.
Jawab:

Pada terminal 2, terlihat bahwa praktikum.txt telah


dibunuh/dihentikan “killed” oleh perintah kill -9 1052.

7. Apakah hasil yang anda dapatkan setelah menjalankan perintah pada


Langkah 9. Jelaskan apa yang anda ketahui mengenai perintah ini dan
bagaimana informasi yang didapatkan.
Jawab:
Perintah pstree berfungsi untuk menampilkan proses yang sedang
berjalan seperti pohon, dan pohon tersebut memiliki akar. Tampilan
pohon akan di pid atau init jadwal dasar untuk root (akar). Jika pid
yang ditentukan, pohon akan hanya dimiliki oleh user untuk melihat
perjalanan. Contohnya pada screenshoot di atas.

8. Apakah hasil yang anda dapatkan setelah menjalankan perintah pada


Langkah 10. Jelaskan apa yang anda ketahui mengenai perintah ini dan
bagaimana informasi yang didapatkan.
Jawab:

Perintah apt-get update berfungsi untuk memperbarui package


versi sebelumnya. Terlihat terdapat sejumlah proses fetch data dari
internet pada screenshot sebelah kanan.

9. Apakah hasil yang anda dapatkan setelah menjalankan perintah pada


Langkah 11. Jelaskan apa yang anda ketahui mengenai perintah ini dan
bagaimana informasi yang didapatkan.
Jawab:
Pada saat melakukan pstree lagi pada terminal 2, terdapat branch
baru yaitu –login—bash—sudo—apt-get—gpgv dan http, branch baru
itu menunjukkan bahwa perintah apt-get baru saja dijalankan.

10. Apakah hasil yang anda dapatkan setelah menjalankan perintah pada
Langkah 12. Jelaskan apa yang anda ketahui mengenai perintah ini dan
bagaimana informasi yang didapatkan.
Jawab:
Perintah top berfungsi untuk menampilkan sumber daya yang
digunakan dari sebuah proses. Contohnya pada paling atas PID 1722
dengan command top yang menunjukkan bahwa proses tersebut
sedang berjalan.

11. Apakah hasil yang anda dapatkan setelah menjalankan perintah pada
Langkah 13. Jelaskan apa yang anda ketahui mengenai perintah ini dan
bagaimana informasi yang didapatkan.
Jawab:
Perintah pstree dijalankan lagi, disini proses apt-get telah tidak
ada lagi yang menandakan bahwa perintah apt-get sudah selesai
dijalankan.

12. Apakah hasil yang anda dapatkan setelah menjalankan perintah pada
Langkah 1-7 pada bagian 2.42. Jelaskan apa yang anda ketahui
mengenai perintah ini dan bagaimana informasi yang didapatkan.
Jawab:
Pertama lakukan perintah nano untuk membuat program, isi source
code pada file tersebut menggunakan source yang sudah diberikan
pada 2.4.2 2
Lalu simpan program tersebut dengan nama fork.cm disini saya
menggunakan perintah ls untuk melihat apakah file fork.c sudah
tersimpan atau belum

Setelah disimpan, kembali ke terminal dan jalankan perintah gcc


fork.c lalu ./a.out. Program tersebut akan berjalan dan akan
menampilkan output “This is being printer in the parent process:
- the process identifier (pid)of the child is
17990

Artinya bahwa program tersebut menjalankan proses parent dan


memiliki PID dari proses child adalah 17990. Setelah itu jalankan
perintah pstree dan top, disini saya tidak dapat menemukan tampilan
dari proses karena proses tersebut berlangsung sangat cepat
sehingga tidak ditampilkan ketika menjalankan top.

13. Apa hubungan antara fork() dan exec() dengan proses yang
berlangsung pada system operasi?
Jawab:
fork() adalah sebuah system call untuk membuat proses baru
melalui duplikasi proses induk. Proses baru atau proses child akan
melakukan penyalinan dari proses parent dimana pada proses child
memiliki konten yang sama dengan proses parent namun dengan PID
yang berbeda.

exec() adalah sebuah system call untuk mengganti isi pada proses
lama dengan proses yang baru, tetapi perintah exec() tidak akan
menghasilkan proses baru karena proses yang lama dan yang baru
memiliki PID yang sama
14. Bagaimana fork() dan exec() mempengaruhi struktur direktori,
penggunaan memori dan CPU?
Jawab:
fork() akan membuat proses child dengan menduplikasi pada
proses parent. Field berupa state process, status, nama fie program,
direktori terkini, dan sebagainya yang ada pada proses parent akan
disalin ke proses child.

exec() awalnya akan menghapus state memori dari proses yang


terpanggil. Kemudian exec akan menuju program yang diminta, lalu
menyalin file ini ke dalam memori dan menginisialisasi state pada
CPU dan juga pada program counter. Hampir semua filed proses
lama (sebelum) akan diubah sesuai dengan kebutuhan proses yang
menggantikannya
LABORATORIUM PEMBELAJARAN ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA

NAMA : FAISHAL AFIF


NIM : 205150201111041
KESIMPULAN : BAB II
TANGGAL : 18/03/2021
ASISTEN : MUHAMMAD FACHRY NOORCHOOLISH ARIF

Tuliskan kesimpulan yang dapat diperoleh dari hasil percobaan ini


berdasarkan hasil pembahasan yang anda buat.
Pada praktikum ini, dibahas mengenai bab proses. Proses adalah
sebuah program yang sedang dieksekusi. Proses berjalan sesuai dengan
instruksi. Proses ada banyak pada sebuah sistem operasi komputer.

Pada Linux, untuk membuat proses baru bisa menggunakan


system call fork() untuk medunplikasi proses sebelumnya dan exec()
untuk mengganti isi proses.

Terdapat beberapa perintah pada Linux seperti man ps untuk


melihat halaman informasi atau fungsi pada sebuah perintah, top untuk
menampilkan semua daftar proses yang sedang berjalan, pstree
berfungsi untuk menampilkan proses yang sedang berjalan seperti
pohon, dan pohon tersebut memiliki akar dan sebagainya.

Anda mungkin juga menyukai