Anda di halaman 1dari 7

LAPORAN RESMI PRAKTIKUM

(REPORT OF ACTIVITY)
SISTEM OPERASI
INFORMATIKA

Oleh:

NAMA : Rifa Deta Salsabila

NIM : 22.11.4933

Materi:

Operasi Input/Output

PRODI S1 –INFORMATIKA
FAKULTAS ILMU KOMPUTER UNIVERSITAS AMIKOM
YOGYAKARTATAHUN 2022
OPERASI INPUT & OUTPUT
A. Tuju
an

Setelah mempelajari materi dalam bab ini, mahasiswa diharapkan


mampu:

Memahami menggunakan sistem call fork, wait, dan execl pada


Linux

Memahami perintah-perintah untuk manajemen memory

B. Peralat an
Praktikum

PC dengan sistem operasi GNU/Linux

C. Prakti
kum

1. Analisa hasil percobaan 1 sampai dengan 7, untuk setiap


perintah jelaskan tampilannya.
2. Kerjakan latihan pada Modul dan analisa hasilnya
3. Berikan kesimpulan dari praktikum ini.

Paraf Dosen /
Asisten Praktikum
1. ANALISA PERCOBAAN 1: MELIHAT PROSES PARENT DAN
PROSES CHILD

Perintah tersebut untuk melihat proses parent dan proses child pada fork().
Output yang dihasilkan adalah program akan melakukan perulangan output sebanyak
tiga kali karena i dimulai dari 0 dan kurang dari 3 sehingga (0, 1, 2 menjadi tiga
ouput).
Output yang dihasilkan:
Program diatas adalah program yang bertujuan untuk melihat proses parent
dan proses child. Salah satu cara melihatnya yaitu dengan melihat pid (process
identifier) dan ppid (parent process identifier) dari proses. Untuk mendapatkan nilai
pid dan ppid, maka menggunakan fungsi getpid() dan getppid() yang dideklarasikan
pada unistd.h. Kedua fungsi tersebut akan mengembalikan nilai bertipe pid_t yang
merupakan sebuah type khusus untuk process id yang ekuivalen dengan integer

2. Percobaan 2 : Membuat dua proses terus menerus dengan


sebuah system call fork()

output yang dihasilkan adalah a program akan melakukan perulangan output


sebanyak tak terhingga dimana nilai x dimulai dari 5 dan nilai x akan terus bertambah
dikarenakan x++.

Dapat dilihat bahwa pada percobaan ini, yang merupakan child process
adalah proses dengan pid 118462, sedangkan yang merupakan parent process
adalah proses dengan pid 118461. x berfungsi untuk menghitung berapa kali loop
telah terjadi. Jika dilihat dari urutan cetakannya, dapat dlihat bahwa walaupun
mereka melakukan proses yang sama, parent process selalu berjalan terlebih dahulu
sebelum child process. Program ini akan melakukan loop secara terus menerus
tanpa henti. Untuk menghentikannya, maka harus dihentikan secara paksa dengan
interupsi menggunakan ctrl+c.
3. Percobaan 3 : Membuat dua proses sebanyak lima kali

Output yang dihasilkan adalah program akan melakukan perulangan output


sebanyak lima kali karena i dimulai dari 0 dan kurang dari 5 sehingga (0, 1, 2, 3, 4
menjadi lima ouput). Nomor pid akan dipanggil pada baris program “cout << "This is
process " <<

Program ini hampir sama dengan program fork1, hanya saja bedanya pada
program ini loop yang dilakukan dibatasi hingga 5 kali saja, tidak infinite. Pada
percobaan ini, dapat dilihat bahwa yang merupakan child process adalah proses
dengan pid 118496, sedangkan yang merupakan parent process adalah proses
dengan pid 118495. Selain itu, disini terbukti kembali bahwa walaupun mereka
melakukan proses yang sama, parent process selalu berjalan terlebih dahulu
sebelum child process jika dilihat dari urutan cetakannya.

4. Percobaan 4 : Proses parent menunggu sinyal dari proses


child dengan system call wait

Dari baris program dan output di atas dapat dilihat bahwa program akan
memeriksa kondisi child_pid dimana child_pid adalah nomor pid id proses dan jika
kondisi memenuhi maka proses akan dieksekusi dan jika kondisi tidak memenuhi
maka akan muncul sebuah output yaitu "The fork system call failed to create a new
process”
Jika pada program-program sebelumnya proses child dan parent menjalankan baris
yang sama, maka pada program ini kedua proses tersebut menjalankan baris yang
berbeda. Hal ini dapat dilakukan dengan pengondisian if...else pada hasil
pengembalian system call fork. Pada child process, fork akan mengembalikan nilai 0,
sedangkan pada parent process, fork akan mengembalikan nilai bilangan positif
berupa pid dari process child. Namun, jika process child, gagal terbentuk, fork akan
mengembalikan nilai -1.
5. Percobaan 5 : System call fork/exec dan wait mengeksekusi
program bernama ls, menggunakan file executable /bin/ls
dengan satu parameter –l yang ekuivalen dengan ls –l

Dari baris program dan output di atas dapat dilihat bahwa program akan
memeriksa kondisi child_pid dimana child_pid adalah nomor pid id proses. Dan jika
kondisi pada if pertama memenuhi maka output akan menampilkan direktori beserta
waktu dan user pengguna.
Program ini akan melakukan forking dan proses child akan menjalankan
perintah ls -l. Hal ini dapat dilakukan dengan menjalankan system call execl pada
proses child. Execl merupakan system call yang berfungsi untuk mengeksekusi file.
Pada kasus ini, child process mengeksekusi perintah ls yang filenya berada di /bin/ls
dengan argumen -l dan /home. Fungsi execl dapat dimasukkan banyak paremeter.
Namun, parameter utama yang harus dimasukkan ada 3, yaitu path dari file yang
akan dieksekusi, argumen perintah (bisa lebih dari satu), dan NULL (sebagai
penanda akhiran dari argumen). System call execl akan mengganti process image
sebelumnya dengan process image yang baru. Sehingga jika execl berhasil
dijalankan oleh proses child dan diterminasi, proses child tersebut juga akan ikut
diterminasi. Namun jika execl gagal dijalankan, maka proses child akan tetap
berjalan. Itulah mengapa baris proses child dibawah execl pada percobaan diatas
tidak dijalankan.

6. Percobaan 6 : System call fork/exec dan wait mengeksekusi


program lain

Dari baris program dan output di atas dapat dilihat bahwa program akan
memeriksa kondisi child_pid dimana child_pid adalah nomor pid id proses. Dan jika
kondisi pada if pertama memenuhi maka output akan menampilkan file fork3.cpp dan
melanjutkan pemeriksaan pada kondisi if lalu dieksekusi untuk ditampilkan pada
output.
Pada program ini, proses child mengeksekusi program lain (fork3) dengan
menggunakan system call execl. Pada percobaan diatas, proses dengan pid 118714
adalah proses parent, sedangkan proses dengan pid 118715 adalah proses child.
Namun, saat proses child menjalankan execl dan mengeksekusi fork3, proses
dengan pid 118715 pada program fork3 akan menjadi proses parent, dan ia membuat
proses child baru dengan pid 118714. Selain itu, system calls execl diberi argumen
“goose”, itulah mengapa pada saat dijalankan ps, proses fork3 bernama goose.

7. Percobaan 7 : Melihat Manajemen Memory

1. $ dmesg | more Perintah dmesg digunakan untuk mencetak dan mengontrol


buffer ring kernel. Di dalam informasi yang dicetak oleh dmesg, terdapat pula
jumlah memori yang tersedia. Dapat dilihat di atas bahwa jumlah memori yang
tersedia ada 1944980 KB dari total memori 2096696 KB.
2. $ free Perintah free akan menampilkan informasi tentang memori dan swap
dalam kilobyte (1 kilobyte).
3. $ cat /proc/meminfo Hasil yang ditampilak oleh cat /proc/meminfo hampir
sama dengan hasil pada free. Hanya saja bedanya cat /proc/meminfo
menampilkan lebih banyak informasi daripada free.
4. Perintah ls -lR /. menampilkan semua direktori dan file yang ada pada
system informasi. Karena banyaknya file yang ditampilkan, perintah
tersebut akan berjalan secara terus menerus tanpa henti
5. $ free Dapat dilihat bahwa memori yang “free” menjadi berkurang,
memori yang “available” berkurang, dan penggunaan memori shared dan
buff/cache bertambah, sedangkan besar swap “used” bertambah dan
swap “free” menjadi berkurang.
6. $ free setelah dijalankan open Office, memori yang digunakan dan
shared memori menjadi lebih besar dan memori available berkurang juga.
Selain itu, beberapa swap mulai digunakan.
7. $ ps -uax Perintah ini sangat berguna untuk menunjukkan bagaimana
penggunaan memori berubah secara dinamis dan bagaimana proses
individu menggunakan memori.

Anda mungkin juga menyukai