• Tidak ada hasil yang ditemukan

Swaping

Dalam dokumen Disusun oleh Imam Muiz (Halaman 124-126)

8.5. Manajemen Memori Linux

8.5.4. Swaping

Linux menggunakan tehnik page aging agar adil dalam memilih page yang akan dihapus dari sistem. Ini berarti setiap page memiliki usia sesuai dengan berapa sering page itu diakses. Semakin sering sebuah page diakses, semakin muda page tersebut. Page yang tua adalah kandidat untuk diswap. Dua mekanisme terpenting dalam sistem memori virtual adalah swapping dan paging, yakni mekanisme dalam mengalokasikan halaman-halaman (halamans) dari memori virtual ke memori fisik (swap-in) maupun sebaliknya (swap-out). Mekanisme ini cukup penting mengingat kemungkinan adanya halaman-halaman yang sudah tidak dibutuhkan lagi, tapi masih 'nongkrong' di memori fisik, padahal ada proses yang memiliki prioritas tinggi membutuhkan halaman di memori fisik namun masih berada di memori virtual. Mekanisme swap-in mengatur pengeluaran (relokasi) halaman yang sudah tidak dibutuhkan lagi dari memori fisik ke memori virtual, sementara mekanisme swap-out mengatur pemasukan(alokasi) halaman yang dibutuhkan dari memori virtual ke memori fisik.

Gambar 8.17 Skema algoritma clock Sistem paging di linux dibagi dua, antara lain:

1. Halaman-out Policy. Lebih fokus pada metoda swap-out, yakni menentukan halaman-halaman mana yang akan dikeluarkan dari memori fisik dan kapan. Contoh: algoritma pergantian halaman (halaman replacement),yakni algoritma clock yang mengacu pada Least Frequently Used (LFU) policy.

2. Paging Mechanism. Lebih fokus pada metoda swap-in, namun lebih menitikberatkan pada halaman-halaman yang akan dibutuhkan kembali ke memori fisik, dalam artian halaman-halaman tersebut sebelumnya pernah digunakan dan berada di memori fisik.

8.5.5. Pengaksesan Memori Virtual Bersama

Memori virtual mempermudah proses untuk berbagi memori saat semua akses ke memori menggunakan tabel page. Proses yang akan berbagi memori virtual yang sama, page fisik yang sama direference oleh banyak proses. Tabel page untuk setiap proses mengandung anggota page table yang mempunyai PFN fisik yang sama.

8.5.6. Efisiensi

Desainer dari CPU dan sistem operasi berusaha meningkatkan kinerja dari sistem. Disamping membuat prosesor, memori semakin cepat, jalan terbaik adalah manggunakan cache. Berikut ini adalah beberapa cache dalam manajemen memori di linux:

• Page Cache. Digunakan untuk meningkatkan akses ke image dan data dalam disk. Saat dibaca dari disk, page dicache di page cache. Jika page ini tidak dibutuhkan lagi pada suatu saat, tetapi dibutuhkan lagi pada saat yang lain, page ini dapat segera diambil dari page cache.

Buffer Cache. Page mungkin mengandung buffer data yang sedang digunakan oleh kernel, device

driver dan lain-lain. Buffer cache tampak seperti daftar buffer. Contohnya, device driver membutuhkan buffer 256 bytes, adalah lebih cepat untuk mengambil buffer dari buffer cache daripada mengalokasikan page fisik lalu kemudian memecahnya menjadi 256 bytes buffer-buffer.

Swap Cache. Hanya page yang telah ditulis ditempatkan dalam swap file. Selama page ini tidak

mengalami perubahan setelah ditulis ke dalam swap file, maka saat berikutnya page di swap out tidak perlu menuliskan kembali jika page telah ada di swap file. Di sistem yang sering mengalami swap, ini dapat menghemat akses disk yang tidak perlu. Salah satu implementasi yang umum dari hardware cache adalah di CPU, cache dari anggota tabel page. Dalam hal ini, CPU tidak secara langsung membaca tabel page, tetap mencache terjemahan page yang dibutuhkan.

8.5.7. Load dan Eksekusi Program

Eksekusi dari Kernel Linux dilakukan oleh panggilan terhadap sistem call exec(). System call exec() memerintahkan kernel untuk menjalankan program baru di dalam proses yang sedang berlangsung (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:

a. Memeriksa apakah proses baru yang dipanggil memiliki izin untuk melakukan overwrite terhadap berkas yang sedang dieksekusi.

b. 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.

Linux menggunakan tabel loader untuk loading program baru. Dengan menggunakan tabel tersebut, Linux memberikan setiap fungsi kesempatan untuk me-load program ketika sistem 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 (contoh, menambahkan informasi debugging) tanpa menyebabkan loader routine menjadi bingung. Saat ini Linux mendukung pemakaian baik format binary ELF dan a.out di single running sistem, karena menggunakan registrasi dari multiple loader routine. Dua subbab (Pemetaan Program ke Memori dan Static and Dynamic Linking) selanjutnya yang dibahas adalah format binary ELF. Pemetaan Program ke Memori

Di 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 halaman fault yang mengakibatkan halaman yang dibutuhkan diload ke memori fisik.

Gambar 8.18 Struktur format ELF

8.5.8. Static dan Dynamic Linking

Ketika program diload dan sudah mulai dieksekusi, semua berkas biner yang dibutuhkan telah diload ke ruang alamat virtual. Meskipun demikian, sebagian besar program juga butuh menjalankan fungsi yang terdapat di sistem librari seperti algoritma sorting, fungsi-fungsi aritmatika, dan lain-lain. Untuk itulah fungsi librari perlu untuk diload juga. Untuk mendapatkan fungsi-fungsi yang terdapat di sistem librari, ada dua cara, yaitu:

a. Static Linking. Fungsi librari yang dibutuhkan diload langsung ke berkas biner yang dapat dijalankan (executable) program. Kerugian static linking adalah setiap program yang dibuat harus meng-copy fungsi-fungsi dari sistem librari, sehingga tidak efisien dalam penggunaan memori fisik dan pemakaian ruang disk.

b. Dynamic Linking. Dynamic linking menggunakan single loading, sehingga lebih efisien dalam penggunaan memori fisik dan pemakaian ruang disk. Link librari dapat menentukan fungsi-fungsi yang dibutuhkan program dengan cara membaca informasi yang terkandung di dalam section dari ELF.

Referensi:

[Silberschantz2005] Abraham Silberschantz, Peter Baer Galvin & Greg Gagne. 2005. Operating System Concepts. Seventh Edition. John Wiley & Son

[MDGR2006] Masyarakat Digital Gotong Royong (MDGR). 2006. Pengantar Sistem Operasi Komputer Plus Illustrasi Kernel Linux. http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/BUKU/. Diakses 31 Agustus 2007

Dalam dokumen Disusun oleh Imam Muiz (Halaman 124-126)

Dokumen terkait