LENGKAP!!! Praktikum Linux 7 "UNIX System Call dan Manajemen Memori"
π©π»π» UNIX System Call dan Manajemen Memori π©π»π»
Oleh: Damelia
π Pokok Bahasan:
- Unix System Cell
- 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. Untuk menjalankannya pada Linux gunakan g++.
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 tetapi 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.
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.
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 :
Kemudian informasi penting ditampilkan selama proses booting pada linux seperti terlihat berikut:
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 :
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 :
π TUGAS PENDAHULUAN:
1. Apa yang dimaksud dengan system cell?
System call merupakan penyedia antarmuka dari pelayanan-pelayanan yang tersedia dengan system operasi. Umumnya system call mnggunakan bahasa C dan C++, meskipun tugas-tugas seperti hardware yang harus diakses langsung, maka menggunakan bahasa assembly. Pada sistem operasi UNIX akan menggunakan UNIX system call yaitu call fork, excel, dan wait.
2. Apa yang dimaksud dengan system call fork(), execl() dan wait(). Jawablah dengan menggunakan perintah man (contoh : man 2 fork, man 2 execl dan man 2 wait)?
- System call fork adalah suatu system call yang membuat suatu proses baru pada system operasi UNIX.
- 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.
- 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.
3. Apa yang dimaksud dengan virutal memory, proses swapping dan buffer cache pada manajemen memory?
Virtual memory adalah suatu teknik memisahkan antara memori logis dan memori fisiknya. 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 dengan perintah free dan cat /proc/meminfo?
Free digunakan untuk mengetahui total memori yang digunakan dalam proses. Dalam perintah free ditampilkan total kapasitas memori, memori yang terpakai, yang tidak sedang dipakai, yang dibagi, buffer, cache dan juga swap. Cat /proc/meminfo digunakan untuk mengetahui isi dari meminfo kemudian ditampilkan.
5. Apa yang dimaksud dengan perintah ps?
Perintah ps digunakan untuk menampilkan informasi proses yang sedang berjalan termasuk nomor PID dari proses tersebut.
π PERCOBAAN:
- Login sebagai user.
- Bukalah Console Terminal dan lakukan percobaan-percobaan di bawah ini kemudian analisa hasil percobaan.
- Selesaikan soal-soal latihan
Percobaan 1 : Melihat proses parent dan proses child
1. Dengan menggunakan editor vi, buatlah file fork1.cpp dan ketikkan program berikut :
Analisis: Bila suatu program berisi sebuah fungsi fork(), eksekusi dari program akan menghasilkan eksekusi dua proses. Satu proses dibuat untuk memulai eksekusi program. Bila system call fork() dieksekusi,proses lain dibuat. Proses asal disebut proses parent dan proses kedua disebut proses child. Proses child merupakan duplikat dari proses parent. Kedua proses melanjutkan eksekusi dari titik dimana system call.
2. Gunakan g++ compiler untuk menjalankan program diatas
3. Amati output yang dihasilkan
Analisis: Setelah scipt program file fork1.cpp telah dibuat maka untuk menjalankannya menggunakan g++compailer. Tetapi jika pada laptop g++ belum terinstall, maka harus melakukan penginstallan terlebih dahulu dengan ketikkan 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 :
2. Gunakan g++ compiler untuk menjalankan program diatas. Pada saat dijalankan, program tidak akan pernah berhenti. Untuk menghentikan program tekan Ctrl+C.
3. Amati output yang dihasilkan
Analisa: Compile file fork2.cpp yang sudah kita buat dengan menggunakan perintah g++ -o fork2fork2.cpp, lalu jika tidak ada file yang eror, maka ketikkan ./fork2 untuk menjalankan programfork2 . Output dari program ini adalah membuat dua proses 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:
Analisa: Menggunakan editor vi untuk membuat file fork3.cpp. Isi dari file fork3.cpp ialah untuk membuat dua proses sebanyak lima kali.
2. Gunakan g++ compiler untuk menjalankan program diatas
3. Amati output yang dihasilkan
Analisa: Percobaan ini membuat dua proses dalam satu terminal, yang dapat berjalan sebanyak 5 kali dengan file fork3.cpp. Untuk mendapatkan hasil seperti itu kita menggunakan perulangan for yang akan menampilkan this is process (pid).
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 :
Analisa: File fork4.cpp berisi 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 diatas.
3. Amati output yang dihasilkan
Analisa: Digunakan untuk mencompile fork4.cpp yang dipakai untuk proses parent menunggu sinyal dariproses child dengan system call wait. Dan outputnya seperti gambar diatas.
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:
2. Gunakan g++ compiler untuk menjalankan program diatas.
3. Amati output yang dihasilkan
Analisa: Compile program fork5.cpp dan program ini digunakan untuk mengeksekusi program bernama ls, menggunakan file executable /bin/ls dengan satu parameter –l yang ekuivalen dengan ls –l.
Percobaan 6 : System call fork/exec dan wait mengeksekusi program lain
1. Dengan menggunakan editor vi, buatlah file fork6.cpp dan ketikkan program berikut:
Analisa: Membuat program fork6.cpp yang akan digunakan untuk menggunakan system call fork/exec dan wait untuk mengeksekusi program lain.
2. Gunakan g++ compiler untuk menjalankan program diatas.
3. Amati output yang dihasilkan
Analisa: Compile file fork6.cpp untuk menjalankan program system call fork/exec dan wait yang nantinya akan digunakan untuk mengeksekusi program lain. Yang isinya dalam program ini seperti diatas. Dan disana juga menampilkan 2 proses yang berbeda.
Percobaan 7 : Melihat Manajemen Memory
1. Perhatikan dengan perintah dmesg jumlah memory tersedia dan proses swapping
$ dmesg | more
Analisa: Perintah dmesg digunakan untuk melihat jumlah memory tersedia dan proses swapping.
2. Dengan perintah freeperhatikan jumlah memory ”free”, ”used”, “share” dan “buffer” .
$ free
Analisa: Free
digunakan untuk mengetahui total memori yang digunakan dalam proses.
Dalam perintah free ditampilkan total kapasitas memori, memori yang
terpakai,yang tidak sedang dipakai, yang dibagi, buffer, cache dan juga
swap.
3. Dengan perintah dibawah ini apakah hasilnya sama dengan no 2 ?
$ cat /proc/meminfo
Analisa: Dalam percobaan dengan perintah cat /proc/meminfo berbeda
dengan nomer 2 dengan perintah free karena disini disk yang terpakai
lebih terperinci dengan jelas, dan informasi memori total dan swab total
sama, untuk yang lain sedikit berbeda dengan perintah free. sedangkan
perintah free hanya secara global bukan secara khusus.
4. Gunakan perintah dibawah ini
$ ls –lR /.
Analisa: Perintah ls –lR /. digunakan untuk menampilkan isi dari suatu direktori dengan menampilkan informasi file tersebut,
5. Perhatikan perubahan manajemen memory
$ free
Analisa: Perubahan
terjadi pada memory used, shared, dan buff/cache menjadi bertambah,
sedangkan memory free dan available menjadi berkurang.
6. Jalankan sebuah program, misalnya open Office. Perhatikan perubahan manajemen memory
$ free
Analisa: Perubahan
terjadi pada memory shared menjadi bertambah, sedangkan memory used,
free, buff/cache, dan available menjadi berkurang.
7. Dengan perintah ps bagaimana penggunaan memory untuk setiap proses diatas ?
$ ps-uax
Analisa: Perintah ps -uax digunakan untuk menunjukkan bagaimana penggunaan memory berubah secara dinamis dan bagaimana proses individu menggunakan memory.
π 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: Perintah dmesg digunakan untuk melihat jumlah memory tersedia dan proses swapping.
3. Bagaimana informasi yang ditampilkan dengan perintah free pada percobaan Anda ?
Jawab: Free digunakan untuk mengetahui total memori yang digunakan dalam
proses. Dalam perintah free ditampilkan total kapasitas memori, memori
yang terpakai,yang tidak sedang dipakai, yang dibagi, buffer, cache dan
juga swap.
4. Apa isi file /proc/meminfo pada percobaan yang Anda lakukan ?
Jawab: Dalam percobaan dengan perintah cat /proc/meminfo berbeda
dengan nomer 2 percobaan 7 dengan perintah free karena disini disk yang
terpakai lebih terperinci dengan jelas, dan informasi memori total dan
swab total sama, untuk yang lain sedikit berbeda dengan perintah free.
sedangkan perintah free hanya secara global bukan secara khusus.
5. Berapa besar memory yang digunakan setelah percobaan 7 dengan perintah ps –uax ?
Jawab: Besar memory yang digunakan setelah percobaan 7 dengan perintah ps – uax ialah 0,3 %.
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 ? 1004628 kB atau 1 GB.
d. Berapa kapasitas memory yang sudah terpakai ? 158552 kB.
e. Berapa kapasitas memory yang belum terpakai ? 279496 kB.
f. Berapa kapasitas memory yang digunakan sharing beberapa proses ? 512 kB.
g. Berapa kapasitas buffer cache ? 16376 kB.
π Kesimpulan:
- System call merupakan penyedia antarmuka dari pelayanan-pelayanan yang tersedia dengan system operasi. Umumnya system call mnggunakan bahasa C dan C++, meskipun tugas-tugas seperti hardware yang harus diakses langsung, maka menggunakan bahasa assembly. 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(). Sistem call execl adalah peletakkan 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.
- System call wait dapat menyebabkan proses menunggu sinyal (menunggu sampai sembarang tipe sinyal diterima dari sembarang proses). System call wait menghasilkan pid dari proses yang mengirimi sinyal.
- Virtual memory adalah suatu teknik memisahkan antara memori logis dan memori fisiknya. Memori logis merupakan kumpulan keseluruhan halaman dari suatu program. Tanpa memori virtual, memori logis akan langsung dibawa ke memori fisik (memori utama).
- 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.













Komentar
Posting Komentar