Remastering Ubuntu ( 100% WORK )


Remastering adalah Membuat distro dari turunan distro, maksudnya adalah membuat sebuah sistem operasi baru yang merupakan hasil salinan dari sistem operasi yang ingin di salin, namun dalam hal penyalinan ini bukan hanya menyalin sistem operasi saja, tetapi ada beberapa aplikasi-aplikasi/ sistem kerja yang di ubah (modifikasi). Dari segi remastering ini basis pembuatannya lebih di sarankan ke Open Source. 

Sistem Operasi yang akan digunakan adalah LINUX Ubuntu 14.04 LTS (Trusty Tahr) menggunakan OS Ubuntu 14.01 menjadi Mac-OS. Dengan paket-paket berbasis multimedia. Terlebih dahulu PC harus terinstall OS Ubuntu 14.01 atau bisa juga dual-booting. 

Langkah Langkah remastering:

1. Menyiapkan file iso Ubuntu dan simpan di folder home lalu rubah namanya menjadi ubuntu_14.01.iso untuk mempermudah proses unpack. 
2. Menginstal sofware pendukung, saya menggunkaan software UCK.
    Install UCK : 1. Masuk ke terminal
                           2. sudo apt-get install libfribidi-bin
                           3. sudo apt-get install uck


3. Unpack file iso untuk di remaster. Untuk mempermudah proses unpack file iso maka command-line di baut kedalam script bash dengan menggunakan nano text editor. Ketik perintah di terminal nano unpack.sh. Kemudian tulis script dan simpan. Berikut scriptnya :
#! /bin/bash
sudo uck-remaster-unpack-iso ubuntu_14.04.iso
sudo uck-remaster-unpack-rootfs
sudo uck-remaster-unpack-initrd
sudo uck-remaster-chroot-rootfs

Simpan dengan cara tekan Ctrl+X lalu ketik “y” tekan enter


4. Compile script tersebut dengan perintah: chmod 755 unpack.sh


5. Lalu jalankan script tersebut dengan perintah: ./unpack.sh


Setelah script tersebut dijalankan maka terminal akan masuk ke mode chroot, dan setelah ini baru dapat untuk menginstal atau meremove aplikasi dan mengkonfigurasi Ubuntu yang diremaster
6. Menambahkan repository ubuntu 14.04 dengan mengedit file sources.list dengan text editor nano. Ketik: nano /etc/apt/sources.list


deb http://kambing.ui.ac.id/ubuntu/ trusty main restricted universe multiverse
deb http://kambing.ui.ac.id/ubuntu/ trusty-updates main restricted universe multiverse
deb http://kambing.ui.ac.id/ubuntu/ trusty-security main restricted universe multiverse
deb http://kambing.ui.ac.id/ubuntu/ trusty-backports main restricted universe multiverse
deb http://kambing.ui.ac.id/ubuntu/ trusty-proposed main restricted universe multiverse

Kemudian Upadate dengan ketik: sudo apt-get update


7. Setelah itu selesai maka selanjutnya yaitu menginstal aplikasi yang dibutuhkan. untuk mempermudah penginstalan maka command-line tersebut di buat script, pertama membuat script denga nama install.sh dengan nano text editor.

Ketik: nano install.sh
Isikian Aplikasi yang di butuhkan.
Misal :

#mp3
sudo add-apt-repository ppa:kubuntu-ppa/backports;
sudo apt-get update;
sudo apt-get install amarok;
sudo apt-get install clementine;
sudo apt-get install audacious;

#image view
sudo apt-get install gwenview;
sudo apt-get install gthumb;
sudo apt-get install viewnior;
sudo apt-get install gpicview;
sudo apt-get install eog;

#image editor
sudo add-apt-repository ppa:otto-kesselgulasch/gimp;
sudo apt-get update;
sudo apt-get install gimp;
apt-get install pencil;

#media player (music and video )
sudo add-apt-repository ppa:team-xbmc/ppa;
sudo apt-get update;
sudo apt-get install xbmc;
sudo apt-get install mplayer;
sudo apt-get install vlc;
sudo add-apt-repository ppa:rvm/smplayer;
sudo apt-get update;
sudo apt-get install smplayer smplayer-themes smtube;



Simpan dengan cara tekan Ctrl+X lalu ketik “y” tekan enter
8. Compile script tersebut dengan perintah: chmod 755 install.sh

9. Lalu jalankan script tersebut dengan perintah: ./install.sh


10. Mengubah background deflaut, Pertama siapkan dahulu walpaper yang akan digunakan sebagai default dan ubah namanya menjadi warty-final-ubuntu.png.
Kemudian, buka terminal baru sehingga ada dua terminal yang terbuka.
11. Buka nautilus dengan perintahgksu nautilus pada terminal yang baru dibuka lalu akan muncul perintah memasukan password, setelah itu akan muncul jendela nautilus. Masuk ke directory wallpaper yang sudah di sediakan lalu di pindahkan ke directory /tmp/remaster-root/usr/share/bacgrounds. Replace gambar aslinya.
12. Mengubah tema deflaut ubuntu menjadi tema Mac-OS. buka terminal yang berada di mode chroot lalu install tema mac-ithemes-v3 dengan perintah: sudo add-apt-repository ppa:noobslab/themes
update dengan perintah: sudo apt-get update
Install dengan perintah: sudo apt-get install mac-ithemes-v3
buka kembali nautilus dan sekarang masuk pada directory /tmp/remaster-root/usr/share/themes
ubah nama folder 'ambiace' menjadi 'ambiace1'
ubah nama folder 'Mbuntu-Zukimac' menjadi 'Ambiance'

13. Mengubah icon deflaut menjadi numix. Buka terminal yang berada di mode chroot lalu instal numix icon dengan perintah: sudo apt-add-repository ppa:numix/ppa

Update dengan perintah: sudo apt-get update
Install dengan perintah: sudo apt-get install numix-icon-theme numix-icon-theme-circle

buka kembali nautilus dan masuk ke directory /tmp/remaster-root/usr/share/icons.ubah nama folder 'ubuntu-mono-dark menjadi ubuntu-mono-dark-original'.
ubah nama folder 'Numix-Circle menjadi ubuntu-mono-dark'.


14. Mengubah MBuntu Splash dengan perintah: sudo add-apt-repository ppa:noobslab/themes
Update dengan perintah: sudo apt-get update
Install dengan perintah: sudo apt-get install mbuntu-bscreen-v3


15. Mengubah MacBuntu theme for LightDM dengan perintah: sudo add-apt-repository ppa:noobslab/themes
Update dengan perintah: sudo apt-get update
Install dengan perintah: sudo apt-get install mbuntu-lightdm-v3


16. Mengubah teks ‘Ubuntu Desktop’ dengan ‘MultiMax-Ubie’ pada Panel dengan langkah-langkah seperti berikut:
a. Buka terminal yang berada pada mode chroot atau terminal yang kita gunakan untuk merimaster ubuntu lalu ketikan perintah berikut: cd && wget -O Mac.po http://drive.noobslab.com/data/Mac-14.04/change-name-on-panel/mac.po




b. Edit file yang bernama 'Mac.po' yang baru saja di download dengan nano text editor.
c. Ubah “Mac OS X” pada baris kedua menjadi “MultiMax-Ubie”. Save.
d. ketikan perintah di bawah ini untuk menginstal:
cd /usr/share/locale/en/LC_MESSAGES; sudo msgfmt -o unity.mo ~/Mac.po;rm ~/Mac.po;cd


17. Proses selanjutnya yaitu keluar dari mode chroot dengan perintah:
umount /proc
umount /sys

exit



18. membuat script untuk pack dengan nama pack.sh dengan nano editor dengan script berisi command-line.


sudo uck-remaster-pack-initrd
sudo uck-remaster-pack-rootfs
sudo uck-remaster-pack-iso Oky64beta2.iso

Simpan dengan cara tekan Ctrl+X lalu ketik “y” tekan enter.


19. Compile dengan perintah: chmod 755 pack.sh dan jalankan dengan perintah: ./pack.sh.


Tunggu sampai proses compile sampai selesai.


20. Ubuntu hasil remaster akan berada di folder /root/tmp/remaster-new-file.




sumber

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

laporan praktikum 7

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

System call fork menghasilkan :
 







99
 



 

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
Swap:194640
19464
 
2328
 
2800
 


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. 






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
 
free
 
shared
 
buffers
 
cached
 
Mem:
 
247184
 
145772
 
101412
 
0
 
10872
 
57564
 
-/+ buffers/cache: 77336
 
169848
 
Swap:
 
522072
 
0
 
522072
 


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
 
free
 
shared
 
buffers
 
cached
 
Mem:
 
247184
 
230604
 
16580
 
0
 
45260
 
59748
 
-/+ buffers/cache: 125596
 
121588
 
Swap:
 
522072
 
308
 
522072
 


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
 
RSS TTY
 
STAT START
 
TIME COMMAND
 
student 4581
student 4699
 
0.0
0.0
 
0.3 4316
0.2 2604
 
856 pts/0 S
656 pts/0 R
 
10:25
10.39
 
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
$ ./fork1

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
$ ./fork3

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
$ ./fork4 






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
$ ./fork5

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 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("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
$ ./fork6

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.
2.
3.
 

Analisa hasil percobaan yang Anda lakukan.
Kerjakan latihan diatas dan analisa hasil tampilannya.
Berikan kesimpulan dari praktikum ini.

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS