The paging mechanism. Menentukan halaman-halaman mana saja yang harus dibawa kembali

9.7. Pemetaan Memori Program

Pada Linux, binary loader tidak perlu me-load berkas biner ke memori fisik, melainkan dengan cara memetakan halaman dari binary file ke region dari memori virtual. Sehingga hanya ketika program mengakses halaman tertentu akan menyebabkan page fault yang mengakibatkan halaman yang dibutuhkan di-load ke memori fisik. Dalam pemetaan program ke memori juga terjadi proses load dan eksekusi. Eksekusi dari kernel Linux dilakukan oleh panggilan terhadap system call exec . System call exec memerintahkan kernel untuk menjalankan program baru di dalam proses yang sedang berlangsung atau current process, dengan cara meng- overwrite current execution dengan initial context dari program baru yang akan dijalankan. Untuk meng-overwrite dan mengeksekusi, akan dilakukan dua kegiatan, yakni: 1. Memeriksa apakah proses baru yang dipanggil memiliki izin untuk melakukan overwrite terhadap berkas yang sedang dieksekusi. 2. Kernel memanggil loader routine untuk memulai menjalankan program. Loader tidak perlu untuk me-load isi dari berkas program ke memori fisik, tetapi paling tidak mengatur pemetaan program ke memori virtual. Gambar 9.4. Executable and Linking Format Linux menggunakan tabel loader untuk loading program baru. Dengan menggunakan tabel tersebut, Linux memberikan kesempatan bagi setiap fungsi untuk me-load program ketika system call exec dipanggil. Linux menggunakan tabel loader, karena format standar berkas binary Linux telah berubah antara kernel Linux 1.0 dan 1.2. Format Linux versi 1.0 menggunakan format a.out , sementara Linux baru sejak 1.2 menggunakan format ELF. Format ELF memiliki fleksibilitas dan ekstensibilitas dibanding dengan a.out karena dapat menambahkan sections baru ke binary ELF, contohnya dengan menambahkan informasi debugging, tanpa menyebabkan loader routine menjadi bingung. Saat ini Linux mendukung pemakaian baik format binary ELF dan a.out pada single 68 running system karena menggunakan registrasi dari multiple loader routine.

9.8. Link Statis dan Dinamis

Ketika program di-load dan sudah mulai dieksekusi, semua berkas biner yang dibutuhkan telah di-load ke ruang alamat virtual. Meski pun demikian, sebagian besar program juga butuh menjalankan fungsi yang terdapat di sistem pustaka seperti algoritma sorting, fungsi-fungsi aritmatika, dan lain-lain. Untuk itulah fungsi pustaka perlu untuk di-load juga. Untuk mendapatkan fungsi-fungsi yang terdapat di sistem pustaka, ada dua cara, yaitu: 1. Link Statis. Aplikasi dikatakan dikompilasi statis apabila pustaka-pustaka yang dibutuhkan dikompilasi ke dalam binary apllication. Dengan demikian, aplikasi tidak lagi membutuhkan pustaka tambahan. Fungsi pustaka yang dibutuhkan diload langsung ke berkas biner yang dapat dijalankan executable program. Kerugian link statis adalah setiap program yang dibuat harus menggandakan fungsi-fungsi dari sistem pustaka, sehingga tidak efisien dalam penggunaan memori fisik dan pemakaian ruang disk.

2. Link Dinamis. Pada dasarnya link dinamis merupakan suatu metode penghubungan antara

program dengan suatu sistem pustaka secara dinamis dengan cara menghubungkan routine-routine yang ada ke dalam sistem pustaka. Hal ini sangat berguna pada program yang membutuhkan suatu pustaka. Bayangkan saja jika di dalam suatu sistem operasi tidak mempunyai metode penghubungan seperti ini. Setiap sistem program harus mempunyai salinan dari pustakanya agar program tersebut dapat berjalan dengan baik. Hal ini tentu saja akan membuang disk space dan memori utama untuk hal yang kurang perlu.

9.9. Rangkuman

Alokasi memori pada Linux menggunakan dua buah alokasi utama, yaitu algoritma buddy dan slab. Manajemen memori pada Linux mengandung dua komponen utama yang berkaitan dengan: 1. Pembebasan dan pengalokasian halamanblok pada memori utama. 2. Penanganan memori virtual. Linux memisahkan memori fisik ke dalam tiga zona berbeda, dimana tiap zona mengindentifikasikan blok-blok yang berbeda pada memori fisik. Ketiga zona tersebut adalah: 1. Zona DMA 2. Zona NORMAL 3. Zona HIGHMEM Pada Linux, sebuah slab dapat berstatus: 1. Full 2. Empty 3. Partial Sistem memori virtual Linux berperan dalam mengatur beberapa hal: 1. Mengatur ruang alamat supaya dapat dilihat oleh tiap proses. 2. Membentuk halaman-halaman yang dibutuhkan. 3. Mengatur lokasi halaman-halaman tersebut dari disk ke memori fisik atau sebaliknya, yang biasa disebut swapping Sistem memori virtual Linux juga mengatur dua view berkaitan dengan ruang alamat: 1. Logical View 2. Physical View Eksekusi dari Kernel Linux dilakukan oleh panggilan terhadap system call exec . System call exec memerintahkan kernel untuk menjalankan program baru di dalam proses yang sedang berlangsung atau current process, dengan cara meng- overwrite current execution dengan initial context dari program baru yang akan dijalankan. Terdapat dua cara untuk mendapatkan fungsi-fungsi yang terdapat di sistem pustaka, yaitu:

1. Link Statis.

Kerugian link statis adalah setiap program yang dibuat harus meng-copy fungsi-fungsi dari sistem pustaka, sehingga tidak efisien dalam penggunaan memori fisik dan pemakaian ruang disk.

2. Link Dinamis. Link dinamis menggunakan single loading, sehingga lebih efisien dalam

penggunaan memori fisik dan pemakaian ruang disk. 69 Rujukan [Silberschatz2005] Avi Silberschatz, Peter Galvin, dan Grag Gagne. 2005. Operating Systems Concepts. Seventh Edition. John Wiley Sons. [Tanenbaum1997] Andrew S Tanenbaum dan Albert S Woodhull. 1997. Operating Systems Design and Implementation . Second Edition. Prentice-Hall. [WEBAmirSch2000] Yair Amir dan Theo Schlossnagle. 2000. Operating Systems 00.418: Memory Management – http:www.cs.jhu.edu ~yairamir cs418 os5 . Diakses 29 Mei 2006. [WEBFunkhouser2002] Thomas Funkhouser. 2002. Computer Science 217 Introduction to Programming Systems: Memory Paging – http:www.cs.princeton.educoursesarchivespring02 cs217lecturespaging.pdf . Diakses 28 Juni 2006. [WEBGottlieb2000] Allan Gottlieb. 2000. Operating Systems: Page tables – http:allan.ultra.nyu.edu ~gottliebcourses1999-00-springos lecture-11.html . Diakses 28 Juni 2006. [WEBSolomon2004] Marvin Solomon. 2004. CS 537 Introduction to Operating Systems: Lecture Notes Part 7 – http:www.cs.wisc.edu ~solomon cs537 paging.html . Diakses 28 Juni 2006. [WEBWIKI2007] Wikipedia. 2007. Slab Allocator - Wikipedia, the free encyclopedia http:en.wikipedia.orgwikislab_allocator . Diakses 11 April 2007. [WEBilmukomputer2007] M Zainal Arifin. 2007. Manajemen Proses dan Memori di Linux. http:ilmukomputer.com 20060828 manajemen-proses-dan-memori-di-linux . Diakses 11 April 2007. 70

Bagian VI. MasukanKeluaran

Sistem MasukanKeluaran MK merupakan bagian penting yang menentukan kinerja sistem secara keseluruhan. Pada bagian ini akan diperkenalkan perangkat-perangkat MK, konsep polling, interupsi, Direct Memory Access DMA, subsistem kernel, aplikasi antarmuka, streams, penjadwalan, RAID, kinerja, MK sistem Linux, serta sistem penyimpanan tersier.