SlideShare une entreprise Scribd logo
1  sur  15
Télécharger pour lire hors ligne
Praktikum 7
Unix System Call dan
Manajemen Memory
POKOK BAHASAN:
ü UNIX System Call
ü Manajemen Memory

TUJUAN BELAJAR:
Setelah mempelajari materi dalam bab ini, mahasiswa diharapkan mampu:
ü Menggunakan system call fork, wait dan execl pada Linux.
ü Menggunakan perintah-perintah untuk manajemen memory.

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 c fork, execl dan wait.
all

Pada percobaan yang dilakukan

akan dibuat program yang didalamnya terdapat fungsi system call.
menjalankannya pada Linux gunakan g++.

97

Untuk
PRAKTIKUM 7 UNIX SYSTEM CALL DAN MANAJEMEN MEMORY

98

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 ketikkan man 2 fork.

•

Untuk melihat 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.
PRAKTIKUM 7 UNIX SYSTEM CALL DAN MANAJEMEN MEMORY

99

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.

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 .

System Call Execl
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.
PRAKTIKUM 7 UNIX SYSTEM CALL DAN MANAJEMEN MEMORY

100

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 terlih at 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.
sebagai “used ”.

Memory digunakan untuk proses atau disk bufferring

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.
PRAKTIKUM 7 UNIX SYSTEM CALL DAN MANAJEMEN MEMORY

101

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 :
total
used
Mem:
247184
145772
-/+ buffers/cache: 77336
Swap: 522072
0

free
101412
169848
522072

shared
0

buffers
10872

cached
57564

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 / .)
total
used
Mem:
247184
230604
-/+ buffers/cache: 125596
Swap: 522072
308

free
16580
121588
522072

shared
0

buffers
45260

cached
59748

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 :
USER
PID %CPU %MEM VSZ
student 4581 0.0 0.3 4316
student 4699 0.0 0.2 2604

RSS TTY
STAT START
856 pts/0 S
10:25
656 pts/0 R
10.39

TIME COMMAND
0:00 bash
0:00 ps -u
PRAKTIKUM 7 UNIX SYSTEM CALL DAN MANAJEMEN MEMORY

102

TUGAS PENDAHULUAN :
Jawablah pertanyaan-pertanyaan berikut ini :
1. Apa yang dimaksud dengan system call ?
2. Apa yang dimaksud dengan sistem call fork(), execl() dan wait(). Jawablah
dengan menggunakan perintah man (contoh : man 2 fork, man 2 execl dan
man 2 wait) ?

3. Apa yang dimaksud sistem virtual memory, proses swapping dan buffer cache pada
manajemen memory ?
4. Apa yang dimaksud perintah free dan cat /proc/meminfo ?
5. Apa yang dimaksud perintah ps ?

PERCOBAAN:
1. Login sebagai user.
2. Bukalah Console Terminal dan lakukan percobaan-percobaan di bawah ini
kemudian analisa hasil percobaan.
3. Selesaikan soal-soal latiha n.
PRAKTIKUM 7 UNIX SYSTEM CALL DAN MANAJEMEN MEMORY

103

Percobaan 1 : Melihat proses parent dan proses child
1. Dengan menggunakan editor vi, buatlah file fork1.cpp dan ketikkan program
berikut :
#include <iostream>
using namespace std;
#include <sys/types.h>
#include <unistd.h>
/* getpid() adalah system call yg dideklarasikan pada unistd.h.
Menghasilkan suatu nilai dengan type pid_t.
pid_t adalah type khusus untuk process id yg ekuivalen dg int
*/
int main(void) {
pid_t mypid;
uid_t myuid;
for (int i = 0; i < 3; i++) {
mypid = getpid();
cout << "I am process " << mypid << endl;
cout << "My parent is process " << getppid() << endl;
cout << "The owner of this process has uid " << getuid()
<< endl;
/* sleep adalah system call atau fungsi library
yang menghentikan proses ini dalam detik
*/
sleep(1);
}
return 0;
}

2. Gunakan g++ compiler untuk menjalankan program diatas
$ g++ -o fork1 fork1.cpp
$ ./fork 1

3. Amati output yang dihasilkan

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 :
PRAKTIKUM 7 UNIX SYSTEM CALL DAN MANAJEMEN MEMORY

104

#include <iostream>
using namespace std;
#include <sys/types.h>
#include <unistd.h>
/* getpid() dan fork() adalah system call yg dideklarasikan
pada unistd.h.
Menghasilkan suatu nilai dengan type pid_t.
pid_t adalah type khusus untuk process id yg ekuivalen dg int
*/
int main(void) {
pid_t childpid;
int x = 5;
childpid = fork();
while (1) {
cout << "This is process " << getpid() << endl;
cout << "x is " << x << endl;
sleep(1);
x++;
}
return 0;
}

2. Gunakan g++ compiler untuk menjala nkan program diatas. Pada saat dijalankan,
program tidak akan pernah berhenti. Untuk menghentikan program tekan Ctrl+C.
$ g++ -o fork2 fork2.cpp
$ ./fork2

3. Amati output yang dihasilkan

Percobaan 3 : Membuat dua proses sebanyak lima kali
1. Dengan menggunakan editor vi, buatlah file fork3.cpp dan ketikkan program
berikut :
#include <iostream>
using namespace std;
#include <sys/types.h>
#include <unistd.h>
PRAKTIKUM 7 UNIX SYSTEM CALL DAN MANAJEMEN MEMORY

105

/* getpid() dan fork() adalah system call yg dideklarasikan
pada unistd.h.
Menghasilkan suatu nilai dengan type pid_t.
pid_t adalah type khusus untuk process id yg ekuivalen dg int
*/
int main(void) {
pid_t childpid;
childpid = fork();
for (int i = 0; i < 5; i++) {
cout << "This is process " << getpid() << endl;
sleep(2);
}
return 0;
}

2. Gunakan g++ compiler untuk menjalankan program diatas
$ g++ -o fork3 fork3.cpp
$ ./fork 3

3. Amati output yang dihasilkan

Percobaan 4 : Proses parent menunggu sinyal dari proses child dengan
system call wait
1. Dengan menggunakan editor vi, buatlah file fork4.cpp dan ketikkan program
berikut :

#include <iostream>
using namespace std;
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
/* pid_t fork() dideklarasikan pada unistd.h.
pid_t adalah type khusus untuk process id yg ekuivalen dg int
*/
PRAKTIKUM 7 UNIX SYSTEM CALL DAN MANAJEMEN MEMORY

106

int main(void) {
pid_t child_pid;
int status;
pid_t wait_result;
child_pid = fork();
if (child_pid == 0) {
/* kode ini hanya dieksekusi proses child */
cout << "I am a child and my pid = " << getpid() << endl;
cout << "My parent is " << getppid() << endl;
/* keluar if akan menghentikan hanya proses child */
}
else if (child_pid > 0) {
/* kode ini hanya mengeksekusi proses parent */
cout << "I am the parent and my pid = " << getpid()
<< endl;
cout << "My child has pid = " << child_pid << endl;
}
else {
cout << "The fork system call failed to create a new
process" << endl;
exit(1);
}
/* kode ini dieksekusi baik oleh proses parent dan child */
cout << "I am a happy, healthy process and my pid = "
<< getpid() << endl;
if (child_pid == 0) {
/* kode ini hanya dieksekusi oleh proses child */
cout << "I am a child and I am quitting work now!"
<< endl;
}
else {
/* kode ini hanya dieksekusi oleh proses parent */
cout << "I am a parent and I am going to wait for my
child" << endl;
do {
/* parent menunggu sinyal SIGCHLD mengirim tanda
bahwa proses child diterminasi */
wait_result = wait(&status);
} while (wait_result != child_pid);
cout << "I am a parent and I am quitting." << endl;
}
return 0;
}

2. Gunakan g++ compiler untuk menjalankan program diatas
$ g++ -o fork4 fork4.cpp
$ ./fork 4
PRAKTIKUM 7 UNIX SYSTEM CALL DAN MANAJEMEN MEMORY

107

3. Amati output yang dihasilkan

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
1. Dengan menggunakan editor vi, buatlah file fork5.cpp dan ketikkan program berikut :
#include <iostream>
using namespace std;
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
/* pid_t fork() dideklarasikan pada unistd.h.
pid_t adalah type khusus untuk process id yg ekuivalen dg int
*/
int main(void) {
pid_t child_pid;
int status;
pid_t wait_result;
child_pid = fork();
if (child_pid == 0) {
/* kode ini hanya dieksekusi proses child */
cout << "I am a child and my pid = " << getpid() << endl;
execl("/bin/ls", "ls", "-l", "/home", NULL);
/* jika execl berhasil kode ini tidak pernah digunakan */
cout << "Could not execl file /bin/ls" << endl;
exit(1);
/* exit menghentikan hanya proses child */
}
else if (child_pid > 0) {
/* kode ini hanya mengeksekusi proses parent */
cout << "I am the parent and my pid = " << getpid()
<< endl;
cout << "My child has pid = " << child_pid << endl;
}
else {
cout << "The fork system call failed to create a new
process" << endl;
exit(1);
}
PRAKTIKUM 7 UNIX SYSTEM CALL DAN MANAJEMEN MEMORY

108

/* kode ini hanya dieksekusi oleh proses parent karena
child mengeksekusi dari “/bin/ls” atau keluar
*/
cout << "I am a happy, healthy process and my pid = "
<< getpid() << endl;
if (child_pid == 0) {
/* kode ini tidak pernah dieksekusi */
printf("This code will never be executed!n");
}
else {
/* kode ini hanya dieksekusi oleh proses parent */
cout << "I am a parent and I am going to wait for my
child" << endl;
do {
/* parent menunggu sinyal SIGCHLD mengirim tanda
bila proses child diterminasi */
wait_result = wait(&status);
} while (wait_result != child_pid);
cout << "I am a parent and I am quitting." << endl;
}
return 0;
}

2. Gunakan g++ compiler untuk menjalankan program diatas
$ g++ -o fork5 fork5.cpp
$ ./fork 5

3. Amati output yang dihasilkan

Percobaan 6 : System call fork/exec dan wait mengeksekusi program lain
1. Dengan menggunakan editor vi, buatlah file fork6.cpp dan ketikkan program berikut :

#include <iostream>
using namespace std;
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
/* pid_t fork() dideklarasikan pada unistd.h.
pid_t adalah type khusus untuk process id yg ekuivalen dg int
*/
PRAKTIKUM 7 UNIX SYSTEM CALL DAN MANAJEMEN MEMORY

109

int main(void) {
pid_t chil d_pid;
int status;
pid_t wait_result;
child_pid = fork();
if (child_pid == 0) {
/* kode ini hanya dieksekusi proses child */
cout << "I am a child and my pid = " << getpid() << endl;
execl("fork3", "goose", NULL);
/* jika execl berhasil kode ini tidak pernah digunakan */
cout << "Could not execl file fork3" << endl;
exit(1);
/* exit menghentikan hanya proses child */
}
else if (child_pid > 0) {
/* kode ini hanya mengeksekusi proses parent */
cout << "I am the parent and my pid = " << getpid()
<< endl;
cout << "My child has pid = " << child_pid << endl;
}
else {
cout << "The fork system call failed to create a new
process" << endl;
exit(1);
}
/* kode ini hanya dieksekusi oleh proses parent karena
child mengeksekusi dari “fork3” atau keluar
*/
cout << "I am a happy, healthy process and my pid = "
<< getpid() << endl;
if (child_pid == 0) {
/* kode ini tidak pernah dieksekusi */
printf("This code will never be executed!n");
}
else {
/* kode ini hanya dieksekusi oleh proses parent */
cout << "I am a parent and I am going to wait for my
child" << endl;
do {
/* parent menunggu sinyal SIGCHLD mengirim tanda
bila proses child diterminasi */
wait_result = wait(&status);
} while (wait_result != child_pid);
cout << "I am a parent and I am quitting." << endl;
}
return 0;
}
PRAKTIKUM 7 UNIX SYSTEM CALL DAN MANAJEMEN MEMORY

110

2. Gunakan g++ compiler untuk menjalankan program diatas
$ g++ -o fork6 fork6.cpp
$ ./fork 6

3. Amati output yang dihasilkan

Percobaan 7 : Melihat Manajemen Memory
1. Perhatikan dengan perintah dmesg jumlah memory tersedia dan proses
swapping
$ dmesg | more

2. Dengan perintah free perhatikan jumlah memory ”free”, ”used”, “share” dan
“buffer” .
$ free

3. Dengan perintah dibawah ini apakah hasilnya sama dengan no 2 ?
$ cat /proc/meminfo

4. Gunakan perintah dibawah ini
$ ls –lR /.

5. Perhatikan perubahan manajemen memory
$ free

6. Jalankan sebuah program, misalnya open Office.

Perhatikan perubahan

manajemen memory
$ free

7. Dengan perintah ps bagaimana penggunaan memory untuk se tiap proses diatas ?
$ ps -uax
PRAKTIKUM 7 UNIX SYSTEM CALL DAN MANAJEMEN MEMORY

111

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 ?

3. Bagaimana informasi yang ditampilkan dengan perintah free pada percobaan
Anda ?
4. Apa isi file /proc/meminfo pada percobaan yang Anda lakukan ?
5. Berapa besar memory yang digunakan setelah percobaan 7 dengan perintah ps –
uax ?

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 dan perhatikan hal hal berikut :
a. Informasi apa saja yang ditampilkan dengan perintah free ?
b. Informasi apa saja yang disimpan file /proc/meminfo ?
c. Berapa besar kapasitas memory total ?
d. Berapa kapasitas memory yang sudah terpakai ?
e. Berapa kapasitas memory yang belum terpakai ?
f. Berapa kapasitas memory yang digunakan sharing beberapa proses ?
g. Berapa kapasitas buffer cache ?

LAPORAN RESMI:
1.

Analisa hasil percobaan yang Anda lakukan.

2.

Kerjakan latihan diatas dan analisa hasil tampilannya.

3.

Berikan kesimpulan dari praktikum ini.

Contenu connexe

Tendances

Sistem operasi pertemuan 10
Sistem operasi pertemuan 10Sistem operasi pertemuan 10
Sistem operasi pertemuan 10
Afrina Ramadhani
 

Tendances (18)

Manajemen Proses pada Linux
Manajemen Proses pada LinuxManajemen Proses pada Linux
Manajemen Proses pada Linux
 
Sistem operasi pertemuan 10
Sistem operasi pertemuan 10Sistem operasi pertemuan 10
Sistem operasi pertemuan 10
 
algoritma
algoritmaalgoritma
algoritma
 
Praktikum Sistem Operasi Linux
Praktikum Sistem Operasi LinuxPraktikum Sistem Operasi Linux
Praktikum Sistem Operasi Linux
 
Fungsi dan Cara Penggunaan Terminal (CLI, Gedit, dan VI Editor)
Fungsi dan Cara Penggunaan Terminal (CLI, Gedit, dan VI Editor)Fungsi dan Cara Penggunaan Terminal (CLI, Gedit, dan VI Editor)
Fungsi dan Cara Penggunaan Terminal (CLI, Gedit, dan VI Editor)
 
Perintah Dasar Linux
Perintah Dasar LinuxPerintah Dasar Linux
Perintah Dasar Linux
 
Pertemuan14 linux booting proses
Pertemuan14   linux booting prosesPertemuan14   linux booting proses
Pertemuan14 linux booting proses
 
Implementasi RTOS (Femto OS) pada Mikrokontroller Seri ATMega32
Implementasi RTOS (Femto OS) pada Mikrokontroller Seri ATMega32Implementasi RTOS (Femto OS) pada Mikrokontroller Seri ATMega32
Implementasi RTOS (Femto OS) pada Mikrokontroller Seri ATMega32
 
Aca
AcaAca
Aca
 
Tipe dan format instruksi 1
Tipe dan format instruksi 1Tipe dan format instruksi 1
Tipe dan format instruksi 1
 
5 penjadwalan aplod
5 penjadwalan aplod5 penjadwalan aplod
5 penjadwalan aplod
 
L I N U X
L I N U XL I N U X
L I N U X
 
Lima puluh perintah dasar linux
Lima puluh perintah dasar linuxLima puluh perintah dasar linux
Lima puluh perintah dasar linux
 
Memory
MemoryMemory
Memory
 
Tipe dan format instruksi 2
Tipe dan format instruksi 2Tipe dan format instruksi 2
Tipe dan format instruksi 2
 
Ppt sinkronisasi dalam Sistem Operasi
Ppt sinkronisasi dalam Sistem OperasiPpt sinkronisasi dalam Sistem Operasi
Ppt sinkronisasi dalam Sistem Operasi
 
Manjemen proses
Manjemen prosesManjemen proses
Manjemen proses
 
FreeBSD Basic Setting
FreeBSD Basic SettingFreeBSD Basic Setting
FreeBSD Basic Setting
 

En vedette

RiSE (Research in School of Education ) newsletter Issue04 (Summer 2011)
RiSE (Research in School of Education ) newsletter Issue04 (Summer 2011)RiSE (Research in School of Education ) newsletter Issue04 (Summer 2011)
RiSE (Research in School of Education ) newsletter Issue04 (Summer 2011)
Uni Northampton School of Education
 
Road Safety (Cell Phones)
Road Safety (Cell Phones)Road Safety (Cell Phones)
Road Safety (Cell Phones)
M S RAO
 
RiSE (Research in School of Education ) newsletter Issue05 (Autumn 2011)
RiSE (Research in School of Education ) newsletter Issue05 (Autumn 2011) RiSE (Research in School of Education ) newsletter Issue05 (Autumn 2011)
RiSE (Research in School of Education ) newsletter Issue05 (Autumn 2011)
Uni Northampton School of Education
 

En vedette (16)

Praktikum 2
Praktikum 2Praktikum 2
Praktikum 2
 
Praktikum 6A
Praktikum 6APraktikum 6A
Praktikum 6A
 
Praktikum 11
Praktikum 11Praktikum 11
Praktikum 11
 
Praktikum 3
Praktikum 3Praktikum 3
Praktikum 3
 
Pertemuan13
Pertemuan13Pertemuan13
Pertemuan13
 
Praktikum 6B
Praktikum 6BPraktikum 6B
Praktikum 6B
 
Pertemuan7
Pertemuan7Pertemuan7
Pertemuan7
 
Praktikum 12
Praktikum 12Praktikum 12
Praktikum 12
 
Praktikum 5B
Praktikum 5BPraktikum 5B
Praktikum 5B
 
Education Inspire magazine Issue01
Education Inspire magazine Issue01Education Inspire magazine Issue01
Education Inspire magazine Issue01
 
RiSE (Research in School of Education ) newsletter Issue04 (Summer 2011)
RiSE (Research in School of Education ) newsletter Issue04 (Summer 2011)RiSE (Research in School of Education ) newsletter Issue04 (Summer 2011)
RiSE (Research in School of Education ) newsletter Issue04 (Summer 2011)
 
Education Inspire magazine Issue04
Education Inspire magazine Issue04Education Inspire magazine Issue04
Education Inspire magazine Issue04
 
Road Safety (Cell Phones)
Road Safety (Cell Phones)Road Safety (Cell Phones)
Road Safety (Cell Phones)
 
RiSE (Research in School of Education ) newsletter Issue02
RiSE (Research in School of Education ) newsletter Issue02RiSE (Research in School of Education ) newsletter Issue02
RiSE (Research in School of Education ) newsletter Issue02
 
Education Inspire magazine Issue03
Education Inspire magazine Issue03Education Inspire magazine Issue03
Education Inspire magazine Issue03
 
RiSE (Research in School of Education ) newsletter Issue05 (Autumn 2011)
RiSE (Research in School of Education ) newsletter Issue05 (Autumn 2011) RiSE (Research in School of Education ) newsletter Issue05 (Autumn 2011)
RiSE (Research in School of Education ) newsletter Issue05 (Autumn 2011)
 

Similaire à Praktikum 7

Konsep proses dan penjadwalan
Konsep proses dan penjadwalanKonsep proses dan penjadwalan
Konsep proses dan penjadwalan
Dickdick Maulana
 
100perintahdasarlinux 130224233003-phpapp02
100perintahdasarlinux 130224233003-phpapp02100perintahdasarlinux 130224233003-phpapp02
100perintahdasarlinux 130224233003-phpapp02
zieqie
 
Praktikum os babk3
Praktikum os babk3Praktikum os babk3
Praktikum os babk3
yats hidayat
 

Similaire à Praktikum 7 (20)

Pertemuan11 unix system call dan manajemen memory
Pertemuan11   unix system call dan manajemen memoryPertemuan11   unix system call dan manajemen memory
Pertemuan11 unix system call dan manajemen memory
 
Proses di Sistem Operasi
Proses di Sistem OperasiProses di Sistem Operasi
Proses di Sistem Operasi
 
Muhammad Arifin - Proses pada Sistem Operasi
Muhammad Arifin - Proses pada Sistem OperasiMuhammad Arifin - Proses pada Sistem Operasi
Muhammad Arifin - Proses pada Sistem Operasi
 
THREAD SO KELOMPOK 5.pptx
THREAD SO KELOMPOK 5.pptxTHREAD SO KELOMPOK 5.pptx
THREAD SO KELOMPOK 5.pptx
 
Konsep proses dan penjadwalan
Konsep proses dan penjadwalanKonsep proses dan penjadwalan
Konsep proses dan penjadwalan
 
Konsep sistem operasi
Konsep sistem operasiKonsep sistem operasi
Konsep sistem operasi
 
Manajemen proses
Manajemen prosesManajemen proses
Manajemen proses
 
Praktikum Sistem Operasi Linux (4A)
Praktikum Sistem Operasi Linux (4A)Praktikum Sistem Operasi Linux (4A)
Praktikum Sistem Operasi Linux (4A)
 
Pertemuan5 proses dan manajemen proses - a- handout
Pertemuan5   proses dan manajemen proses - a- handoutPertemuan5   proses dan manajemen proses - a- handout
Pertemuan5 proses dan manajemen proses - a- handout
 
Jamaludin - Proses pada Sistem Operasi
Jamaludin - Proses pada Sistem OperasiJamaludin - Proses pada Sistem Operasi
Jamaludin - Proses pada Sistem Operasi
 
MATERI KULIAH KONSEP PROSES dan PENJADWALAN.ppt
MATERI KULIAH  KONSEP PROSES dan PENJADWALAN.pptMATERI KULIAH  KONSEP PROSES dan PENJADWALAN.ppt
MATERI KULIAH KONSEP PROSES dan PENJADWALAN.ppt
 
Praktikum 4A
Praktikum 4APraktikum 4A
Praktikum 4A
 
1.pengenalan sistem operasi
1.pengenalan sistem operasi1.pengenalan sistem operasi
1.pengenalan sistem operasi
 
100perintahdasarlinux 130224233003-phpapp02
100perintahdasarlinux 130224233003-phpapp02100perintahdasarlinux 130224233003-phpapp02
100perintahdasarlinux 130224233003-phpapp02
 
referensi materi Manajemen Proses - Sistem Operasi 1
referensi materi Manajemen Proses - Sistem Operasi 1referensi materi Manajemen Proses - Sistem Operasi 1
referensi materi Manajemen Proses - Sistem Operasi 1
 
Pertemuan6 proses dan manajemen proses - b
Pertemuan6   proses dan manajemen proses - b Pertemuan6   proses dan manajemen proses - b
Pertemuan6 proses dan manajemen proses - b
 
Anita dadi (sistem operasi)
Anita dadi (sistem operasi)Anita dadi (sistem operasi)
Anita dadi (sistem operasi)
 
Praktikum os bab2 perintah dasar di linux
Praktikum os bab2 perintah dasar di linuxPraktikum os bab2 perintah dasar di linux
Praktikum os bab2 perintah dasar di linux
 
Praktikum os babk3
Praktikum os babk3Praktikum os babk3
Praktikum os babk3
 
Dasar sistem operasi
Dasar sistem operasiDasar sistem operasi
Dasar sistem operasi
 

Dernier

Aksi Nyata Sosialisasi Profil Pelajar Pancasila.pdf
Aksi Nyata Sosialisasi Profil Pelajar Pancasila.pdfAksi Nyata Sosialisasi Profil Pelajar Pancasila.pdf
Aksi Nyata Sosialisasi Profil Pelajar Pancasila.pdf
JarzaniIsmail
 
HAK DAN KEWAJIBAN WARGA NEGARA ppkn i.ppt
HAK DAN KEWAJIBAN WARGA NEGARA ppkn i.pptHAK DAN KEWAJIBAN WARGA NEGARA ppkn i.ppt
HAK DAN KEWAJIBAN WARGA NEGARA ppkn i.ppt
nabilafarahdiba95
 
Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...
Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...
Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...
pipinafindraputri1
 
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptxBab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
ssuser35630b
 
SEJARAH PERKEMBANGAN KEPERAWATAN JIWA dan Trend Issue.ppt
SEJARAH PERKEMBANGAN KEPERAWATAN JIWA dan Trend Issue.pptSEJARAH PERKEMBANGAN KEPERAWATAN JIWA dan Trend Issue.ppt
SEJARAH PERKEMBANGAN KEPERAWATAN JIWA dan Trend Issue.ppt
AlfandoWibowo2
 

Dernier (20)

MODUL AJAR BAHASA INDONESIA KELAS 6 KURIKULUM MERDEKA.pdf
MODUL AJAR BAHASA INDONESIA KELAS 6 KURIKULUM MERDEKA.pdfMODUL AJAR BAHASA INDONESIA KELAS 6 KURIKULUM MERDEKA.pdf
MODUL AJAR BAHASA INDONESIA KELAS 6 KURIKULUM MERDEKA.pdf
 
Aksi Nyata Sosialisasi Profil Pelajar Pancasila.pdf
Aksi Nyata Sosialisasi Profil Pelajar Pancasila.pdfAksi Nyata Sosialisasi Profil Pelajar Pancasila.pdf
Aksi Nyata Sosialisasi Profil Pelajar Pancasila.pdf
 
Bab 4 Persatuan dan Kesatuan di Lingkup Wilayah Kabupaten dan Kota.pptx
Bab 4 Persatuan dan Kesatuan di Lingkup Wilayah Kabupaten dan Kota.pptxBab 4 Persatuan dan Kesatuan di Lingkup Wilayah Kabupaten dan Kota.pptx
Bab 4 Persatuan dan Kesatuan di Lingkup Wilayah Kabupaten dan Kota.pptx
 
LATAR BELAKANG JURNAL DIALOGIS REFLEKTIF.ppt
LATAR BELAKANG JURNAL DIALOGIS REFLEKTIF.pptLATAR BELAKANG JURNAL DIALOGIS REFLEKTIF.ppt
LATAR BELAKANG JURNAL DIALOGIS REFLEKTIF.ppt
 
DAFTAR PPPK GURU KABUPATEN PURWOREJO TAHUN 2024
DAFTAR PPPK GURU KABUPATEN PURWOREJO TAHUN 2024DAFTAR PPPK GURU KABUPATEN PURWOREJO TAHUN 2024
DAFTAR PPPK GURU KABUPATEN PURWOREJO TAHUN 2024
 
vIDEO kelayakan berita untuk mahasiswa.ppsx
vIDEO kelayakan berita untuk mahasiswa.ppsxvIDEO kelayakan berita untuk mahasiswa.ppsx
vIDEO kelayakan berita untuk mahasiswa.ppsx
 
HAK DAN KEWAJIBAN WARGA NEGARA ppkn i.ppt
HAK DAN KEWAJIBAN WARGA NEGARA ppkn i.pptHAK DAN KEWAJIBAN WARGA NEGARA ppkn i.ppt
HAK DAN KEWAJIBAN WARGA NEGARA ppkn i.ppt
 
CAPACITY BUILDING Materi Saat di Lokakarya 7
CAPACITY BUILDING Materi Saat di Lokakarya 7CAPACITY BUILDING Materi Saat di Lokakarya 7
CAPACITY BUILDING Materi Saat di Lokakarya 7
 
Prakarsa Perubahan ATAP (Awal - Tantangan - Aksi - Perubahan)
Prakarsa Perubahan ATAP (Awal - Tantangan - Aksi - Perubahan)Prakarsa Perubahan ATAP (Awal - Tantangan - Aksi - Perubahan)
Prakarsa Perubahan ATAP (Awal - Tantangan - Aksi - Perubahan)
 
MODUL P5 KEWIRAUSAHAAN SMAN 2 SLAWI 2023.pptx
MODUL P5 KEWIRAUSAHAAN SMAN 2 SLAWI 2023.pptxMODUL P5 KEWIRAUSAHAAN SMAN 2 SLAWI 2023.pptx
MODUL P5 KEWIRAUSAHAAN SMAN 2 SLAWI 2023.pptx
 
Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...
Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...
Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...
 
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptxBab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
 
Modul Projek - Batik Ecoprint - Fase B.pdf
Modul Projek  - Batik Ecoprint - Fase B.pdfModul Projek  - Batik Ecoprint - Fase B.pdf
Modul Projek - Batik Ecoprint - Fase B.pdf
 
Sesi 1_PPT Ruang Kolaborasi Modul 1.3 _ ke 1_PGP Angkatan 10.pptx
Sesi 1_PPT Ruang Kolaborasi Modul 1.3 _ ke 1_PGP Angkatan 10.pptxSesi 1_PPT Ruang Kolaborasi Modul 1.3 _ ke 1_PGP Angkatan 10.pptx
Sesi 1_PPT Ruang Kolaborasi Modul 1.3 _ ke 1_PGP Angkatan 10.pptx
 
power point bahasa indonesia "Karya Ilmiah"
power point bahasa indonesia "Karya Ilmiah"power point bahasa indonesia "Karya Ilmiah"
power point bahasa indonesia "Karya Ilmiah"
 
Tim Yang Lolos Pendanaan Hibah Kepedulian pada Masyarakat UI 2024
Tim Yang Lolos Pendanaan Hibah Kepedulian pada Masyarakat  UI 2024Tim Yang Lolos Pendanaan Hibah Kepedulian pada Masyarakat  UI 2024
Tim Yang Lolos Pendanaan Hibah Kepedulian pada Masyarakat UI 2024
 
Kontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptx
Kontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptxKontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptx
Kontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptx
 
PEMANASAN GLOBAL - MATERI KELAS X MA.pptx
PEMANASAN GLOBAL - MATERI KELAS X MA.pptxPEMANASAN GLOBAL - MATERI KELAS X MA.pptx
PEMANASAN GLOBAL - MATERI KELAS X MA.pptx
 
Salinan dari JUrnal Refleksi Mingguan modul 1.3.pdf
Salinan dari JUrnal Refleksi Mingguan modul 1.3.pdfSalinan dari JUrnal Refleksi Mingguan modul 1.3.pdf
Salinan dari JUrnal Refleksi Mingguan modul 1.3.pdf
 
SEJARAH PERKEMBANGAN KEPERAWATAN JIWA dan Trend Issue.ppt
SEJARAH PERKEMBANGAN KEPERAWATAN JIWA dan Trend Issue.pptSEJARAH PERKEMBANGAN KEPERAWATAN JIWA dan Trend Issue.ppt
SEJARAH PERKEMBANGAN KEPERAWATAN JIWA dan Trend Issue.ppt
 

Praktikum 7

  • 1. Praktikum 7 Unix System Call dan Manajemen Memory POKOK BAHASAN: ü UNIX System Call ü Manajemen Memory TUJUAN BELAJAR: Setelah mempelajari materi dalam bab ini, mahasiswa diharapkan mampu: ü Menggunakan system call fork, wait dan execl pada Linux. ü Menggunakan perintah-perintah untuk manajemen memory. 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 c fork, execl dan wait. all Pada percobaan yang dilakukan akan dibuat program yang didalamnya terdapat fungsi system call. menjalankannya pada Linux gunakan g++. 97 Untuk
  • 2. PRAKTIKUM 7 UNIX SYSTEM CALL DAN MANAJEMEN MEMORY 98 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 ketikkan man 2 fork. • Untuk melihat 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.
  • 3. PRAKTIKUM 7 UNIX SYSTEM CALL DAN MANAJEMEN MEMORY 99 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. 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 . System Call Execl 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.
  • 4. PRAKTIKUM 7 UNIX SYSTEM CALL DAN MANAJEMEN MEMORY 100 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 terlih at 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. sebagai “used ”. Memory digunakan untuk proses atau disk bufferring 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.
  • 5. PRAKTIKUM 7 UNIX SYSTEM CALL DAN MANAJEMEN MEMORY 101 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 : total used Mem: 247184 145772 -/+ buffers/cache: 77336 Swap: 522072 0 free 101412 169848 522072 shared 0 buffers 10872 cached 57564 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 / .) total used Mem: 247184 230604 -/+ buffers/cache: 125596 Swap: 522072 308 free 16580 121588 522072 shared 0 buffers 45260 cached 59748 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 : USER PID %CPU %MEM VSZ student 4581 0.0 0.3 4316 student 4699 0.0 0.2 2604 RSS TTY STAT START 856 pts/0 S 10:25 656 pts/0 R 10.39 TIME COMMAND 0:00 bash 0:00 ps -u
  • 6. PRAKTIKUM 7 UNIX SYSTEM CALL DAN MANAJEMEN MEMORY 102 TUGAS PENDAHULUAN : Jawablah pertanyaan-pertanyaan berikut ini : 1. Apa yang dimaksud dengan system call ? 2. Apa yang dimaksud dengan sistem call fork(), execl() dan wait(). Jawablah dengan menggunakan perintah man (contoh : man 2 fork, man 2 execl dan man 2 wait) ? 3. Apa yang dimaksud sistem virtual memory, proses swapping dan buffer cache pada manajemen memory ? 4. Apa yang dimaksud perintah free dan cat /proc/meminfo ? 5. Apa yang dimaksud perintah ps ? PERCOBAAN: 1. Login sebagai user. 2. Bukalah Console Terminal dan lakukan percobaan-percobaan di bawah ini kemudian analisa hasil percobaan. 3. Selesaikan soal-soal latiha n.
  • 7. PRAKTIKUM 7 UNIX SYSTEM CALL DAN MANAJEMEN MEMORY 103 Percobaan 1 : Melihat proses parent dan proses child 1. Dengan menggunakan editor vi, buatlah file fork1.cpp dan ketikkan program berikut : #include <iostream> using namespace std; #include <sys/types.h> #include <unistd.h> /* getpid() adalah system call yg dideklarasikan pada unistd.h. Menghasilkan suatu nilai dengan type pid_t. pid_t adalah type khusus untuk process id yg ekuivalen dg int */ int main(void) { pid_t mypid; uid_t myuid; for (int i = 0; i < 3; i++) { mypid = getpid(); cout << "I am process " << mypid << endl; cout << "My parent is process " << getppid() << endl; cout << "The owner of this process has uid " << getuid() << endl; /* sleep adalah system call atau fungsi library yang menghentikan proses ini dalam detik */ sleep(1); } return 0; } 2. Gunakan g++ compiler untuk menjalankan program diatas $ g++ -o fork1 fork1.cpp $ ./fork 1 3. Amati output yang dihasilkan 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 :
  • 8. PRAKTIKUM 7 UNIX SYSTEM CALL DAN MANAJEMEN MEMORY 104 #include <iostream> using namespace std; #include <sys/types.h> #include <unistd.h> /* getpid() dan fork() adalah system call yg dideklarasikan pada unistd.h. Menghasilkan suatu nilai dengan type pid_t. pid_t adalah type khusus untuk process id yg ekuivalen dg int */ int main(void) { pid_t childpid; int x = 5; childpid = fork(); while (1) { cout << "This is process " << getpid() << endl; cout << "x is " << x << endl; sleep(1); x++; } return 0; } 2. Gunakan g++ compiler untuk menjala nkan program diatas. Pada saat dijalankan, program tidak akan pernah berhenti. Untuk menghentikan program tekan Ctrl+C. $ g++ -o fork2 fork2.cpp $ ./fork2 3. Amati output yang dihasilkan Percobaan 3 : Membuat dua proses sebanyak lima kali 1. Dengan menggunakan editor vi, buatlah file fork3.cpp dan ketikkan program berikut : #include <iostream> using namespace std; #include <sys/types.h> #include <unistd.h>
  • 9. PRAKTIKUM 7 UNIX SYSTEM CALL DAN MANAJEMEN MEMORY 105 /* getpid() dan fork() adalah system call yg dideklarasikan pada unistd.h. Menghasilkan suatu nilai dengan type pid_t. pid_t adalah type khusus untuk process id yg ekuivalen dg int */ int main(void) { pid_t childpid; childpid = fork(); for (int i = 0; i < 5; i++) { cout << "This is process " << getpid() << endl; sleep(2); } return 0; } 2. Gunakan g++ compiler untuk menjalankan program diatas $ g++ -o fork3 fork3.cpp $ ./fork 3 3. Amati output yang dihasilkan Percobaan 4 : Proses parent menunggu sinyal dari proses child dengan system call wait 1. Dengan menggunakan editor vi, buatlah file fork4.cpp dan ketikkan program berikut : #include <iostream> using namespace std; #include <sys/types.h> #include <unistd.h> #include <sys/wait.h> /* pid_t fork() dideklarasikan pada unistd.h. pid_t adalah type khusus untuk process id yg ekuivalen dg int */
  • 10. PRAKTIKUM 7 UNIX SYSTEM CALL DAN MANAJEMEN MEMORY 106 int main(void) { pid_t child_pid; int status; pid_t wait_result; child_pid = fork(); if (child_pid == 0) { /* kode ini hanya dieksekusi proses child */ cout << "I am a child and my pid = " << getpid() << endl; cout << "My parent is " << getppid() << endl; /* keluar if akan menghentikan hanya proses child */ } else if (child_pid > 0) { /* kode ini hanya mengeksekusi proses parent */ cout << "I am the parent and my pid = " << getpid() << endl; cout << "My child has pid = " << child_pid << endl; } else { cout << "The fork system call failed to create a new process" << endl; exit(1); } /* kode ini dieksekusi baik oleh proses parent dan child */ cout << "I am a happy, healthy process and my pid = " << getpid() << endl; if (child_pid == 0) { /* kode ini hanya dieksekusi oleh proses child */ cout << "I am a child and I am quitting work now!" << endl; } else { /* kode ini hanya dieksekusi oleh proses parent */ cout << "I am a parent and I am going to wait for my child" << endl; do { /* parent menunggu sinyal SIGCHLD mengirim tanda bahwa proses child diterminasi */ wait_result = wait(&status); } while (wait_result != child_pid); cout << "I am a parent and I am quitting." << endl; } return 0; } 2. Gunakan g++ compiler untuk menjalankan program diatas $ g++ -o fork4 fork4.cpp $ ./fork 4
  • 11. PRAKTIKUM 7 UNIX SYSTEM CALL DAN MANAJEMEN MEMORY 107 3. Amati output yang dihasilkan 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 1. Dengan menggunakan editor vi, buatlah file fork5.cpp dan ketikkan program berikut : #include <iostream> using namespace std; #include <sys/types.h> #include <unistd.h> #include <sys/wait.h> /* pid_t fork() dideklarasikan pada unistd.h. pid_t adalah type khusus untuk process id yg ekuivalen dg int */ int main(void) { pid_t child_pid; int status; pid_t wait_result; child_pid = fork(); if (child_pid == 0) { /* kode ini hanya dieksekusi proses child */ cout << "I am a child and my pid = " << getpid() << endl; execl("/bin/ls", "ls", "-l", "/home", NULL); /* jika execl berhasil kode ini tidak pernah digunakan */ cout << "Could not execl file /bin/ls" << endl; exit(1); /* exit menghentikan hanya proses child */ } else if (child_pid > 0) { /* kode ini hanya mengeksekusi proses parent */ cout << "I am the parent and my pid = " << getpid() << endl; cout << "My child has pid = " << child_pid << endl; } else { cout << "The fork system call failed to create a new process" << endl; exit(1); }
  • 12. PRAKTIKUM 7 UNIX SYSTEM CALL DAN MANAJEMEN MEMORY 108 /* kode ini hanya dieksekusi oleh proses parent karena child mengeksekusi dari “/bin/ls” atau keluar */ cout << "I am a happy, healthy process and my pid = " << getpid() << endl; if (child_pid == 0) { /* kode ini tidak pernah dieksekusi */ printf("This code will never be executed!n"); } else { /* kode ini hanya dieksekusi oleh proses parent */ cout << "I am a parent and I am going to wait for my child" << endl; do { /* parent menunggu sinyal SIGCHLD mengirim tanda bila proses child diterminasi */ wait_result = wait(&status); } while (wait_result != child_pid); cout << "I am a parent and I am quitting." << endl; } return 0; } 2. Gunakan g++ compiler untuk menjalankan program diatas $ g++ -o fork5 fork5.cpp $ ./fork 5 3. Amati output yang dihasilkan Percobaan 6 : System call fork/exec dan wait mengeksekusi program lain 1. Dengan menggunakan editor vi, buatlah file fork6.cpp dan ketikkan program berikut : #include <iostream> using namespace std; #include <sys/types.h> #include <unistd.h> #include <sys/wait.h> /* pid_t fork() dideklarasikan pada unistd.h. pid_t adalah type khusus untuk process id yg ekuivalen dg int */
  • 13. PRAKTIKUM 7 UNIX SYSTEM CALL DAN MANAJEMEN MEMORY 109 int main(void) { pid_t chil d_pid; int status; pid_t wait_result; child_pid = fork(); if (child_pid == 0) { /* kode ini hanya dieksekusi proses child */ cout << "I am a child and my pid = " << getpid() << endl; execl("fork3", "goose", NULL); /* jika execl berhasil kode ini tidak pernah digunakan */ cout << "Could not execl file fork3" << endl; exit(1); /* exit menghentikan hanya proses child */ } else if (child_pid > 0) { /* kode ini hanya mengeksekusi proses parent */ cout << "I am the parent and my pid = " << getpid() << endl; cout << "My child has pid = " << child_pid << endl; } else { cout << "The fork system call failed to create a new process" << endl; exit(1); } /* kode ini hanya dieksekusi oleh proses parent karena child mengeksekusi dari “fork3” atau keluar */ cout << "I am a happy, healthy process and my pid = " << getpid() << endl; if (child_pid == 0) { /* kode ini tidak pernah dieksekusi */ printf("This code will never be executed!n"); } else { /* kode ini hanya dieksekusi oleh proses parent */ cout << "I am a parent and I am going to wait for my child" << endl; do { /* parent menunggu sinyal SIGCHLD mengirim tanda bila proses child diterminasi */ wait_result = wait(&status); } while (wait_result != child_pid); cout << "I am a parent and I am quitting." << endl; } return 0; }
  • 14. PRAKTIKUM 7 UNIX SYSTEM CALL DAN MANAJEMEN MEMORY 110 2. Gunakan g++ compiler untuk menjalankan program diatas $ g++ -o fork6 fork6.cpp $ ./fork 6 3. Amati output yang dihasilkan Percobaan 7 : Melihat Manajemen Memory 1. Perhatikan dengan perintah dmesg jumlah memory tersedia dan proses swapping $ dmesg | more 2. Dengan perintah free perhatikan jumlah memory ”free”, ”used”, “share” dan “buffer” . $ free 3. Dengan perintah dibawah ini apakah hasilnya sama dengan no 2 ? $ cat /proc/meminfo 4. Gunakan perintah dibawah ini $ ls –lR /. 5. Perhatikan perubahan manajemen memory $ free 6. Jalankan sebuah program, misalnya open Office. Perhatikan perubahan manajemen memory $ free 7. Dengan perintah ps bagaimana penggunaan memory untuk se tiap proses diatas ? $ ps -uax
  • 15. PRAKTIKUM 7 UNIX SYSTEM CALL DAN MANAJEMEN MEMORY 111 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 ? 3. Bagaimana informasi yang ditampilkan dengan perintah free pada percobaan Anda ? 4. Apa isi file /proc/meminfo pada percobaan yang Anda lakukan ? 5. Berapa besar memory yang digunakan setelah percobaan 7 dengan perintah ps – uax ? 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 dan perhatikan hal hal berikut : a. Informasi apa saja yang ditampilkan dengan perintah free ? b. Informasi apa saja yang disimpan file /proc/meminfo ? c. Berapa besar kapasitas memory total ? d. Berapa kapasitas memory yang sudah terpakai ? e. Berapa kapasitas memory yang belum terpakai ? f. Berapa kapasitas memory yang digunakan sharing beberapa proses ? g. Berapa kapasitas buffer cache ? LAPORAN RESMI: 1. Analisa hasil percobaan yang Anda lakukan. 2. Kerjakan latihan diatas dan analisa hasil tampilannya. 3. Berikan kesimpulan dari praktikum ini.