LAPORAN PRAKTIKUM 7 : UNIX SYSTEM CALL DAN MANAJEMEN MEMORY
LAPORAN PRAKTIKUM 7
UNIX SYSTEM CALL DAN MANAJEMEN MEMORY
Daniel Putra Ariyanto (1903421003)
BM 5B
BROADBAND MULTIMEDIA
TEKNIK ELEKTRO
POLITEKNIK NEGERI JAKARTA
TAHUN AJARAN 2021/2022
I.
Pokok Bahasan
ü
Unix
System Call
ü
Manajemen
Memory
II.
Tujuan Praktikum
Adapun
tujuan dalam Praktikum ini, sebagai berikut :
1.
Menggunakan
system call fork, wait, dan exel pada Linux
2.
Menggunakan
perintah-perintah untuk manajemen memory
III. Dasar Teori
1. UNIX
SYSTEM CALL
Pada
praktikum ini akan dilakukan percobaan menggunakan system call yang berhubungan
dengan proses pada system operasi UNIX yang biasa disebut UNIX System Call,
yaitu system call fork, excel dan wait.
Pada percobaan yang dilakukan akan dibuat program yang didalamnya
terdapat fungsi system call. Untuk menjalankannya pada Linux gunakan g++
v
System Call Fork
System call
fork adalah suatu system call yang membuat suatu proses baru
pada system operasi UNIX. Pada percobaan ini menggunakan mesin
Linux dan beberapa program yang berisi
system call fork().
Bila suatu program berisi sebuah fungsi fork(),
eksekusi dari program menghasilkan eksekusi dua proses. Satu proses dibuat
untuk memulai eksekusi program. Bila system call fork() dieksekusi, proses lain
dibuat. Proses asal disebut proses parend 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. Karena nilai dari variable
ini tidak digunakan, maka hasil fork() dapat diabaikan.
·
Untuk
kill proses gunakan Ctrl+C
·
Untuk
dokumentasi fork() dapat dilihat dengan ketikan man 2 fork
·
Untuk
terlihat id dari proses, gunakan system call getpid()
·
Untuk
melihat dokumentasi dari getpid(), ketikkan man 2 getpid :
Perbedaan antara proses
parent dan proses child adalah :
·
Mempunyai
pid yang berbeda
·
Pada
proses parent , fork() menghasilkan pid dari proses child jika sebuah proses child dibuat.
·
Pada
proses child, fork() selalu menghasilkan 0
·
Membedakan
copy dari semua data, termasuk variable dengan current value dan stack
·
Membedakan
program counter (PC) yang menunjukkan eksekusi berikutnya meskipun awalnya
keduanya mempunyai nilai yang sama teta pi setelah itu berbeda.
·
Setelah
fork, kedua proses tersebut tidak menggunakan variable bersama.
System call fork
menghasilkan :
·
Pid proses
child yang baru
ke proses parent,
hal ini sama dengan memberitahukan proses parent
nama dari child-nya
·
0 : menunjukkan proses child
·
-1
: 1 jika terjadi error, fork() gagal
karena proses baru tidak dapat dibuat.
v
System Call Wait
System call wait menyebabkan proses menunggu sinyal
(menunggu sampai sembarang tipe sinyal diterima dari sembarang proses).
Biasanya digunakan oleh proses parent untuk menunggu sinyal dari system operasi
ke parent bila
child diterminasi. System call wait menghasilkan pid dari proses
yang mengirimi sinyal. Untuk melihat dokumentasi wait gunakan perintah man 2
wait.
v
System Call Excel
Misalnya kita ingin proses baru mengerjakan sesuatu
yang berbeda dari proses parent, sebutlah menjalankan program yang berbeda.
Sistem call execl meletakkan program executable baru ke memory dan
mengasosiasikannya dengan proses saat itu. Dengan kata lain, mengubah segala
sesuatunya sehingga program mulai mengeksekusi dari file yang berbeda.
2. MANAJEMEN
MEMORY
Linux mengimplementasikan sistem virtual memory
demand-paged. Proses mempunyai besar memory virtual yang besar (4 gigabyte).
Pada virtual memory dilakukan transfer page antara disk
dan memory fisik.
Jika tidak terdapat cukup memory fisik, kernel melakukan
swapping beberapa page lama ke disk. Disk drive adalah perangkat mekanik yang
membaca dan menulis ke disk yang lebih lambat dibandingkan mengakses memory
fisik. Jika memory total page lebih dari memory fisik yang tersedia, kernel
lebih banyak melakukan swapping dibandingkan eksekusi kode program, sehingga
terjadi thrashing dan mengurangi utilitas.
Jika memory fisik ekstra tidak digunakan, kernel
meletakkan kode program sebagai disk buffer cache. Disk buffer menyimpan data
disk yang diakses di memory; jika data
yang sama dibutuhkan lagi dapat dengan cepat diambil dari cache.
Pertama kali sistem melakukan booting, ROM BIOS
membentuk memory test seperti terlihat berikut :
ROM BIOS (C) 1990
008192 KB OK WAIT......
Kemudian
informasi penting ditampilkan selama proses booting pada linux seperti terlihat berikut :
Memory: 7100k/8192k available (464k
kernel code, 384k reserved, 244k data) ...
Adding Swap: 19464k swap-space
Informasi
diatas menampilkan jumlah RAM tersedia setelah kernel di-load ke memory (dalam
hal ini 7100K dari 8192K). Jika ingin melihat
pesan saat booting
kernel yang terlalu cepat dibaca
dapat dilihat kembali dengan perintah dmesg.
Setiap
Linux dijalankan, perintah free digunakan untuk
menampilkan total memory yang tersedia. Atau menggunakan cat /proc/meminfo. Memory fisik dan ruang swap ditampilkan disini. Contoh output pada
sistem :
total used free
shared buffers
Mem: 7096 5216 1880
2328 2800
Swap: 19464 0 19464
Informasi
ditampilkan dalam kilobyte (1024 byte). Memory ”total” adalah jumlah tersedia setelah load kernel. Memory
digunakan untuk proses atau disk bufferring sebagai “used”. Memory yang sedang tidak digunakan ditampilkan
pada kolom “free”.
Memory total sama dengan jumlah kolom ”used” dan ”free”.
Memory
diindikasikan “shared”
yaitu berapa banyak memory yang digunakan lebih dari satu proses. Program seperti shell
mempunyai lebih dari satu proses yang berjalan. Kode executable read-only dan
dapat disharing oleh semua proses yang berjalan pada shell. Kolom “buffers” menampilkan berapa banyak memory
digunakan untuk disk buffering.
Perintah free juga menunjukkan
dengan jelas bagaimana swap space dilakukan dan berpa banyak swapping yang
terjadi.
Percobaan
berikut untuk mengetahui manajemen memory :
1.
Pada
saat bootup, dengan satu user log in, dengan perintah free sistem melaporkan
berikut:
Terdapat
free memory (4.4MB) dan sedikit disk buffer (1.1MB).
2.
Situasi
berubah setelah menjalankan perintah yang membaca data dari disk (command ls –lR /.)
Disk buffer bertambah menjadi 2 MB. Hal ini berakibat pula pada kolom ”used” dan memory ”free” juga berkurang.
Perintah top dan ps -u juga sangat berguna untuk
menunjukkan bagaimana penggunaan memory berubah secara dinamis dan
bagaimana proses individu
menggunakan memory. Contoh tampilannya :
IV.
Langkah-langkah Praktikum
1.
Login
sebagai user
2. Bukalah
Console Terminal dan lakukan percobaan-percobaan yang sudah ada dalam jobsheet
3.
Selesaikan
soal-soal latihan
V. Tugas Pendahuluan
Jawablah
pertanyaan-pertanyaan berikut ini :
1. Apa
yang dimaksud dengan system call?
Jawab : System call merupakan
penyedia antarmuka dari pelayanan-pelayanan yang tersediadengan system operasi.
Umumnya system call mnggunakan bahasa C dan C++, meskipuntugas-tugas seperti
hardware yang harus diakses langsung, maka menggunakan bahasaassembly
2. Apa yang dimaksud dengan
system call fork(), excel() dan
wait(). Jawablah dengan menggunakan perintah man
(Contoh : man 2 fork man 2 excel dan man 2 wait)?
3. Apa
yang dimaksud sistem virtual memory, proses swapping dan buffer cache pada
manajemen memory?
Jawab :
Virtual memory adalah
suatu teknik memisahkan antara memori logis dan memorifisiknya. Memori logis
merupakan kumpulan keseluruhan halaman dari suatu program.Tanpa memori virtual,
memori logis akan langsung dibawa ke memori fisik (memori utama). Disinilah memeori
virtual melakukan pemisahan dengan menaruh memori logis ke secondary storage
(disk sekunder) dan hanya membawa halaman yang diperlukan ke memori utama (memori
fisik).
Swapping adalah manajemen
memori dengan pemindahan proses
antara memori utama dan disk selama eksekusi.
Buffer cache dapat
dianggap sebagai
sumber daya memori, terutama sumber daya I/O karena penggunaanya dalam mediasi transfer
4. Apa
yang dimaksud perintah free
dan cat /proc/meminfo?
Jawab :
Free digunakan untuk
mengetahui total memori yang digunakan dalam proses. Dalamperintah free
ditampilkan total kapasitas memori, memori yang terpakai, yang tidaksedang
dipakai, yang dibagi, buffer, cache dan juga swap. Cat /proc/meminfo digunakan untuk mengetahui isi dari
meminfo kemudian ditampilkan.
5. Apa
yang dimaksud perintah ps?
Jawab : Perintah ps digunakan untuk menampilkan informasi proses yang sedang berjalantermasuk nomor PID dari proses tersebut
Percobaan 1 : Melihat proses parent dan proses child
1.
Dengan menggunakan editor vi,
buatlah file fork1.cpp dan ketikkan program berikut:
Hasil
:
Analisa : Hasil dari program ini ketika dijalankan
akan mengeksekusi dua proses dimana satunya untuk memulai eksekusi program. Ketika
call fork() dijalankan maka proses lain akan dibuat. Ini disebut proses child yang
merupakan duplikat proses parent.
1.
Gunakan
g++ compiler untuk menjalankan program di atas
$ g++ -o fork 1 fork 1.cpp
$ ./fork 1
Hasil
:
2.
Amati
output yang dihasilkan
Analisa
: Program di atas adalah program yang bertujuan untuk menjalankan file
fork1.cpp dengan menggunakan g++compailer. G++ harus terinstall dilaptop
terlebih dahulu, jika belum maka install dengan mengetikkan pada terminal sudo
apt-get install g++.
Percobaan
2 : Membuat dua proses terus menerus dengan sebuah system call fork()
1.
Dengan menggunakan editor vi, buatlah file
fork2.cpp dan ketikkan program berikut:
Hasil :
Analisa :
Menuliskan script bisa
dengan editor vi pada program fork2.cpp. system call fork adalah system call
yang membuat suatu proses baru pada system operasi UNIX.
2.
Gunakan g++ compiler untuk menjalankan program
di ats. Pada saat dijalankan, program tidak akan pernah berhenti. Untuk
menghentikan program tekan Ctrl+C.
$ g++ -o fork 2 fork 2.cpp
$ ./fork 2
Hasil :
3.
Amati output yang dihasilkan
Analisa : Program di atas bertujuan untuk menggabungkan file fork2.cpp dengan perintag g++ -o fork2.cpp, lalu jika
tidak ada file yang error maka jalankan programform2 dengan perintah ./fork2.
Hasil dari promgram ini adalah membuat fua proses secara terus menerus yang
dimulai dengan x=5 dengan sebuah system call fork().
Percobaan
3 : Membuat dua proses sebanyak lima kali
1.
Dengan
menggunakan editor vi, buatlah file fork3.cpp dan ketikkan program berikut:
Hasil
:
Analisa :
Membuat file fork3.cpp dengan editor vi. Isi dari file
nya yaitu membuat dua proses sebanyak lima kali.
2.
Gunakan
g++ compiler untuk menjalankan program di atas
$ g++ -o fork 3 fork 3.cpp
$ ./fork 3
3.
Amati
output yang dihasilkan
Analisa
: Program ini hampir sama dengan program fork2, hanya saja bedanya pada program
ini loop yang dilakukan dibatasi hingga 5 kali saja.
Percobaan
4 : Proses parent menunggu sinyal dari proses child dengan sistem call wait
1.
Dengan
menggunakan editor vi, buatlah fork4.cpp dan ketikkan program berikut:
Hasil
:
Analisa :
File fork4.cpp untuk membuat script yang nantinya akan
digunakan untuk proses parent menunggu sinyal dari proses child dengan system call
wait.
2.
Gunakan
g++ compiler untuk menjalankan program di atas
$ g++ -o fork 4 fork 4.cpp
$ ./fork 4
3.
Amati
output yang dihasilkan
Analisa
: Program
ini digunakan untuk menggabungkan fork4.cpp yang dipakai untuk proses parent
menunggu sinyal dari proses child dengan system call wait. Pada hasilkan akan
diketahui parent dengan pid dan child dengan pid nya.
Percobaan
5 : Sistenm call fork/exec dan wait mengeksekusi program bernama ls,
menggunakan file executable /bin/ls dengan satu parameter -l yang ekuivalen
dengan ls –l
1.
Dengan
menggunakan editor vi, buatlah fork5.cpp dan ketikkan program berikut:
Hasil :
Analisa :
Program file fork5,cpp digunakan untuk mengeksekusi
ls.
2.
Gunakan
g++ compiler untuk menjalankan program di atas
$ g++ -o fork 5 fork 5.cpp
$ ./fork 5
3.
Amati output yang dihasilkan
Analisa : 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 argument -l dan
/home. Fungsi execl dapat dimasukkan banyak parameter. Namun, parameter utama
yang harus dimasukkan ada 3, yaitu path dari file yang akan dieksekusi,
argument perintah (bisa lebih dari satu), dan NULL (sebagai penanda akhiran
dari argument). System call execl akan mengganti process image sebelumnya
dengan process image yang baru. Sehingga jika execl berhasil dijalankan, maka
setelah execl selesai dijalankan oleh process child dan diterminasi, proses
child akan tetap berjalan. Itulah mengapa baris proses child dibawah execl pada
percobaan diatas tidak dijalankan.
Percobaan
6 : Sistem call fork/exec dan wait mengeksekusi program lain
1.
Dengan
menggunakan editor vi, buatlah fork6.cpp dan ketikkan program berikut:
Hasil
:
Analisa :
Fork6.cpp digunakan untuk menggunakna system call fork
/exec dan wait untuk mengeksekusi program lain.
2.
Gunakan
g++ compiler untuk menjalankan program di atas
$ g++ -o fork 6 fork 6.cpp
$ ./fork 6
3.
Amati
Output yang dihasilkan
Analisa
: Pada
file fork6.cpp digunakan untuk mengeksekusi program lain yang isinya proses dan
pid nya yang menampilkan 2 proses yang berbeda.
Percobaan
7 : Melihat Manajemen Memory
1.
Perhatikan
dengan perintah dmesg jumlah memori tersedia dan proses swapping
$ dmesg | more
Hasil :
Analisa : Perintah dmesg digunakan untuk
mencetak dan mengontrol buffer ring kernel. Perintah
ini juga untuk melihat jumlah memory tersedia dan proses swapping.
2.
Dengan
perintah free perhatikan jumlah memory “free”, “used”, “share”, dan “buffer”
$ free
Hasil
:
Analisa
:
Perintah free diguanakn untuk mengetahui total memori
yang digunakan dalam proses.
3.
Dengan
perintah dibawah ini apakah hasilnya sama dengan no 2?
$ cat /proc/meminfo
Hasil
:
Analisa
: Hasil yang ditampilak oleh cat /proc/meminfo hampir sama dengan hasil pada
free. Perintah
ini menampilkan informasi lebih terperinci seperti memori total dan swab total.
4.
Gunakan
perintah di bawah ini
$ ls –lR /,
Hasil
:
Analisa
: Perintah ls -lR /. Digunakan untuk menampilkan isi dari suatu direktori
dengan cara menampilkan informasi file tersebut.
5.
Perhatikan
perubahan manajemen memory
$ free
Hasil :
Analisa : 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.
Jalankan sebuah program, misalnya open Office.
Perhatikan perubahan manajemen memori.
$ free
Hasil :
Analisa : Perubahan
yang terjadi memory share yaitu menjadi bertambah, sedangkan memory used, free,
buff dan available menjadi berkurang.
7.
Dengan perintah ps bagaimana penggunaan memory
untuk setiap proses diatas?
$ ps -uax
Hasil :
Analisa : Perintah
ini digunakan untuk menunjukkan perubahan secara dinamis dan proses individu
dari memori yang digunakan.
VI.
Latihan
1. Ubahlah
program fork5.cpp pada percobaan 5 untuk mengeksekusi perintah yang ekuivalen
dengan
a. ls –al /etc.
b. cat fork2.
c. ./fork2
2.
Informasi
apa saja mengenai manajemen memory yang ditampilkan pada perintah dmesg pada percobaan anda ?
Jawab :
Perintan dmesg digunakan untuk melihat jumlah memori
yang tersedia dan proses swapping.
3.
Bagaimana
informasi yang ditampilkan dengan perintah free pada percobaan anda ?
Jawab :
Free digunakan untuk mengetahui total memori yang
digunakan. Yang ditampilkan oleh perintah ini yaitu total kapasitas memori,
memori yang terpakai, yang tidak dipakai, yang dibagi, buffer, cache dan swap.
4.
Apa
isi file /proc/meminfo pada percobaan yang Anda lakukan?
Jawab :
Isi file nya yaitu menampilkan space dari linux.
5.
Berapa
besar memory yang digunakan setelah percobaan 7 dengan perintah ps –uax?
Jawab :
Besar memori yang digunakan setelah proses ps-uax 21296kb.
6. Lakukan hal yang sama dengan percobaan 7 untuk melihat perubahan memory setelah dilakukan beberapa proses pada shell. Tentukan perintah yang dilakukan misalnya membuka browser danperhatikan hal-hal berikut :
a.
Informasi
apa saja yang ditampilkan dengan perintah free?
Jawab : Informasi yang ditampilkan pada perintah free yaitu
menampilkan jumlah memori, memori yang sudah digunakan, yang dibagikan, cache,
dan jumlah memori yang tersedia.
b.
Informasi
apa saja yang disimpan file /proc/meminfo?
Jawab : Informasi yang ditampilkan yaitu space dari linux
secara detail
c.
Berapa
besar kapasitas memory total? 4841488 kb
d.
Berapa
kapasitas memory yang sudah terpakai? 674820 kb
e.
Berapa
kapasitas memory yang belum terpakai? 3315008 kb
f.
Berapa
kapasitas memory yang digunakan sharing beberapa proses? 16964 kb
g. Berapa kapasitas buffer cache? 851660 kb
VII.
Kesimpulan
Dari percobaan praktikum
diatas dapat disimpulkan bahwa :
1. Sistem call merupakan penyedia antarmuka dari pelayanan yang tersedia
dengan system operasi yang membuat suatu proses baru pada system operasi UNIX.
Sistem call menggunakan Bahasa C dan C++.
2. Percobaan ini menggunakan mesin Linux dan program yang berisi system call
fork(). Sistem call execl adalah peletakkan program executable baru ke memori
dan mengasosiakannya atau mengubah segala sesuatu sehingga program mulai
mengeksekusi dari file yang berbeda.
3. System call wait mengasilkan pid dari proses yang mengirim sinyal
4. System call wait menyebabkan tipe sinyal ditunggu hingga sampai dari
prosesnya.
5. Virtual memory adalah proses memintahkan antara memori logis (keseluruhan
halaman program) dan memori fisiknya (memori utama)
6. Swapping adalah manajemen memori dengan pemindahan proses antara memori
utama dan disk selama berjalan.
7. Buffer cache sebagai sumber daya memori terutama sumber daya I/O.
Comments
Post a Comment