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.