Praktikum Sistem Operasi - Unix System Call Dan Manajemen Memory [PDF]

  • 0 0 0
  • Suka dengan makalah ini dan mengunduhnya? Anda bisa menerbitkan file PDF Anda sendiri secara online secara gratis dalam beberapa menit saja! Sign Up
File loading please wait...
Citation preview

PRAKTIKUM SISTEM OPERASI



Unix System Call dan Manajemen Memory



Kelompok 5 3 D4 Teknik Komputer B 1. Didi Alfandi



2210181033



2. Lusiana Diyan Ningrum



2210181051



3. Aditya Yuliyanto



2210181060



PROGRAM STUDI D4 TEKNIK KOMPUTER DEPARTEMEN TEKNIK INFORMATIKA DAN KOMPUTER POLITEKNIK ELEKTRONIKA NEGERI SURABAYA 2020



BAB 1 PENDAHULUAN



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



BAB 2 DASAR TEORI 1. UNIX SYSTEM CALL Pada praktikum ini akan dilakukan percobaan menggunakan system call yang berhubungan denga 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 di dalamnya terdapat fungsi system call. Untuk menjalankan 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 variabel bertipe pid_t, yang berupa nilai integer. Karena nilai dari variabel 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 variabel dengan current value dan stack



-



Membedakan program counter (PC) yang menunjukkan eksekusi berikutnya meskipun awalnya keduanya mempunyai nilai yang sama tetapi setelah ini berbeda



-



Setelah fork, kedua proses tersebut tidak menggunakan variabel 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 proses parent untuk menunggu sinyal dari system operasi ke parent bila child diterminasi. System call wait menghasilkan pid dari proses yang mengirim 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 819K). Jika ingin melihat pesan saat booting kernel yang terlalu cepat dibaca dapat dilihat kembali dengan perintah dmesg. Seperti 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 buffering 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 pada shell. Kolom “buffers” menampilkan berapa banyak memory digunakan untuk disk buffering. Perintah free juga menunjukkan dengan jelas bagaimana swap space dilakukan dan berapa banyak swapping yang terjadi. Percobaan berikut untuk mengetahui manajemen memory : 1. Pada saat bootup, dengan satu user login, dengan perintah free sistem melaporkan berikut :



Terdapat free memory (4.4 MB) dan sedikit disk buffer (1.1 MB). 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 call ? System Call adalah penyedia antarmuka dari pelayanan-palayanan yang tersedia dengan Sistem Operasi. System call adalah sebuah instruksi, mirip dengan instruksi "add" atau "jump". Pada tingkat tinggi, sebuah system call adalah cara sebuah program pada level user untuk meminta pada sistem operasi untuk menjalankan sesuatu untuknya. Jika kita seorang programmer, dan kita membutuhkkan untuk membaca dari sebuah file, kita akan menggunakan system call untuk meminta sistem operasi untuk membaca file tersebut untuk kita. System calls adalah sebuah sistem yang menyediakan interface (antar muka)antara program (user program yang berjalan) dan bagian OS. System calls menjadi jembatan antara proses dan OS. System call biasanya tersedia dalam bentuk instruksi bahasa assembly. 2. Apa yang dimaksud dengan sistem call fork(), execl(), dan wait(). Jawab dengan menggunakan perintah man (contoh : man 2 fork, man 2 execl dan man 2 wait ) ? Sistem call fork adalah suatu system call yang membuat suatu proses baru padasystem operasi UNIX. Nilai yang dihasilkan fork() disimpan dalam variable bertipe pid_t, yang berupa nilai integer, karena tidak digunakan, maka hasil fork() dapatdiabaikanSistem call execl() adalah suatu sistem call yang meletakkan program executable baru ke memory dan mengasosiasikannya dengan proses saat itu.Sistem call wait() adalah suatu sistem call yang menyebabkan proses menunggusinyal (menunggu sampai sembarang tipe sinyal dari sembarang proses). Biasanyadigunakan oleh



proses parent untuk menunggu sinyal dari system operasi ke parent bila child diterminasi. 3. Apa yang dimaksud sistem virtual memory, proses swapping dan buffer cache pada manajemen memory ? Virtual memory adalah sebuah mekanisme yang digunakan oleh aplikasi untuk menggunakan sebagian dari memori sekunder seolah-olah ia menggunakannya sebagai RAM fisik yang terinstal di dalam sebuah sistem. Swap merupakan memori backup atau cadangan apabila memori utama sudah kewalahan menangani operasi di komputer kita, dan biasanya Swap ini kita temukan pada waktu instalasi Linux dengan alokasi di hard disk. Pada linux, Swap merupakan partisi yang berbeda untuk selanjutnya juga digunakan sebagai virtualmemory dan menyimpan file-file sementara (temporary). Buffer cache adalah buffer yang dipakai di kernel. 4. Apa yang dimaksud perintah free dan cat/proc/meminfo ? Free digunakan untuk mengetahui total memori yang digunakan dalam proses. Dalamperintah free ditampilkan total kapasitas memori, memori yang terpakai, yang tidaksedang dipakai, yang dibagi, buffer, cache dan juga swap. Cat /proc/meminfo digunakanuntuk mengetahui isi dari meminfo kemudian ditampilkan. 5. Apa yang dimaksud perintah ps ? Perintah “ps” adalah aplikasi di Linux yang digunakan untuk menampilkan aktif proses yang berjalan pada sistem. Aplikasi ini dapat Anda gunakan untuk melakukan manajemen proses Linux. Perintah ps digunakan untuk menampilkan informasi proses yang sedang berjalan termasuk nomor PID dari proses tersebut.



BAB 3 PERCOBAAN PERCOBAAN 1 : Melihat proses parent dan proses child



PERCOBAAN 2 : Membuat dua proses terus menerus dengan sebuah system call fork()



PERCOBAAN 3 : Membuat dua proses sebanyak lima kali



PERCOBAAN 4 : Proses parent menunggu sinyal dari proses child dengan system call wait



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



PERCOBAAN 6 : System call fork/exec dan wait mengeksekusi program lain



PERCOBAAN 7 : Melihat Manajemen Memory



LATIHAN



a. b.



c. ./fork2



1. dmesg adalah perintah untuk mengeluarkan pesan buffer dari driver yang ada pada computer 2. free adalah perintah untuk melihat jumlah pengguna memori pada computer. Memori disini merupakan memory dalam bentuk RAM dan swap.



3. isi file /proc/meminfo adalah detail penggunaan memori 4. memori yang digunakan 2010224



a. detail mengenai penggunaan memori, memori yang digunakan, dan memori bebas b. yang disimpan dalam file /proc/meminfo sama dengan pada perintah free, namun lebih lengkap c. kapasitas memory total adalah 3912972 d. kapasitas memori terpakai adalah 1825320 e. kapasitas memori yang belum terpakai adalah 435908 f. kapasitas memory yang digunakan sharing adalah 515428



g. kapasitas buffer cache adalah 1651744



BAB 4 PEMBAHASAN Praktikum ini mempelajari mengenai Unix System Call dan Manajemen Memory. System call yang diuji cobakan pada praktikum ini adalah menggunakan fork,wait dan execl. Sistem call fork adalah suatu system call yang membuat suatu proses baru pada sistem operasi UNIX. 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 parend dan proses kedua disebut proses child. Proses child merupakanduplikat dari proses parent. Kedua proses melanjutkan eksekusi dari titik dimana system call. Sistem call execl() adalah suatu sistem call yang meletakkan program executable baru ke memory dan mengasosiasikannya dengan proses saat itu. Sistem call wait() adalah suatu sistem call yang menyebabkan proses menunggu sinyal (menunggu sampai sembarang tipe sinyal dari sembarang proses). Pada bagian manajemen memori terdapat beberapa fungsi yang dapat menampilkan manajemen memori pada sistem operasi Linux yaitu free, cat /proc/meminfo, dmesg, ls -lR /. dan ps -UAX. Dua fungsi pertama memiliki 2 kegunaan dasar yang sama yaitu menampilkan berapa memori yang masih tersedia, berapakah memori yang di swap, digunakan dan dalam keadaan di buffer/cached. Sedangkan perintah ls dan dmesg menampilkan lebih detail program apa yang menggunakan memori tersebut tetapi dmesg lebih ke display pesan kernel dibandingkan memori. Pada perintah terakhir (ps -UAX) maka sistem operasi akan menampilkan proses dan penggunaan memori secara per proses dibandingkan perintah sebelum-sebelumnya, hal ini juga termasuk informasi pengguna dan pid proses tersebut.. Perintah $dmesg | more digunakan untuk melihat jumlah memory tersedia yang ada di PC dan proses swapping, sedangkan perintah $free digunakan untuk melihat jumlah memory yang free (kosong), yang sudah digunakan(used) dan “share”, “buffer”. Percobaan menggunakan perintah $ ls –IR ./ digunakan untuk



menampilkan isi dari suatu direktori dengan menampilkan informasi file tersebut, seperti ukuran file. Memory ”total” adalah jumlah memory yang 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 satuproses. Program seperti shell mempunyai lebih dari satu proses yang berjalan. Kode executableread-only dan dapat disharing oleh semua proses yang berjalan pada shell. Kolom “buffers” menampilkan berapa banyak memory digunakan untuk disk buffering. Setelah menjalankan sebuah program disk buffer bertambah dan ini berakibat juga pada kolom “used” dan memory “free” berkurang. Perintah ps -uax berguna untuk menunjukkan bagaimana penggunaan memory berubah secara dinamis dan bagaimana proses individu menggunakan memory. KESIMPULAN Berdasarkan hasil praktikum diatas dapat disimpulkan bahwa : 1. 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.



-



Membedakan copy dari semua data, termasuk variable dengan current value dan stack



-



Membedakan program counter yang menunjukkan eksekusi berikutnya meskipun awalnyakeduanya mempunyai nilai yang sama tetapi setelah itu berbeda



-



Setelah fork, kedua proses tersebut tidak menggunakan variable bersama.



2. System call fork menghasilkan :



-



Pid proses child yang baru ke proses parent, hal ini sama dengan memberitahukan prosesparent nama dari child-nya.



-



0 : menunjukkan proses child



-



-1 : 1 jika terjadi error, fork() gagal karena proses baru tidak dapat dibuat.



3. Sistem call execl meletakkan program executable baru ke memory dan



mengasosiasikannyadengan proses saat itu. Dengan kata lain, mengubah segala sesuatunya sehingga programmulai mengeksekusi dari file yang berbeda.