Memori Linux Anggota Kelompok 116-36:
Jani RR Siregar Martin Leonard T Muhamad Mulki A
1204000491 120400058Y 1204000637
Jani, Martin, Mulki ©2005 Silakan menggandakan slide ini tanpa mengubah 1 nota h
Manajemen Memori di Linux
Manajemen memori di Linux terdiri dari 2 komponen: 1. Berkaitan dengan pengalokasian dan pembebasan halaman pada main memory 2. Berkaitan dengan penanganan memori virtual
Linux membagi memori fisik ke dalam tiga Zona berbeda, yang mengientifikasikan region-region di main memory. Ketiga zona tersebut adalah: 1. Zona DMA 2. Zona NORMAL 3. Zona HIGHMEM
Zona ZONE_DMA ZONE_NORMAL ZONE_HIGHMEM
Main Memori < 16 MB 16…896 MB >896 MB 2
Jani, Martin, Mulki ©2005 Silakan menggandakan slide ini tanpa mengubah no
•
Memori manager di Linux berusaha untuk mengefisienkan ruang alamat pada memori fisik, agar kecepatan memori tidak terlampau berkurang. Maka digunakanlah dua tekhnik alokasi, yaitu alokasi halaman dan alokasi slab
Alokasi halaman menggunakan algoritma buddy: 1. Pada saat alokasi data di memori, maka region di memori akan di-split (dibagi) menjadi dua region berukuran sama besar, hal ini akan terus berlangsung hingga didapat region (blok) yang sesuai dengan kebutuhan data 2. Pada saat pembebasan halaman, maka region yang kini bebas (kosong) akan digabung kembali dengan region tetangga yang berukuran sama serta berstatus bebas
3
Jani, Martin, Mulki ©2005 Silakan menggandakan slide ini tanpa mengubah no
Contoh algoritma buddy
4
Jani, Martin, Mulki ©2005 Silakan menggandakan slide ini tanpa mengubah no
Alokasi slab menggunakan algoritma slab: Slab --> dibentuk dari halaman – halaman memori fisik yang berdekatan, digunakan untuk kegiatan pengalokasian memori Sebuah cache terdiri satu atau lebih slab, dan diisi oleh beberapa objek
Objek --> bentuk instansiasi dari struktur data kernel yang direpresentasikan oleh cache yang bersangkutan. Ketika sebuah cache dibuat maka semua objek (di dalam cache tersebut) berstatus free, dan baru ketika terjadi sebuah request maka objek-objek yang dibutuhkan untuk memenuhi request tersebut akan dibuat berstatus used
5
Jani, Martin, Mulki ©2005 Silakan menggandakan slide ini tanpa mengubah no
Gambar kerja slab Di Linux, sebuah slab dapat berstatus: 1. Full -> semua objek di dalam slab tersebut adalah used 2. Empty -> semua objek di dalam slab tersebut adalah free 3. Partial -> ada objek yang used dan ada pula yang free
6
Jani, Martin, Mulki ©2005 Silakan menggandakan slide ini tanpa mengubah no
Keuntungan algoritma slab: 1. memperkecil kemungkinan terjadinya fragmentasi 2. request memory cepat terpenuhi (dengan mendayagunakan kerja cache)
Sistem memori virtual berkaitan erat dengan sistem page cache, karena pembacaan halaman data dari memori ke dalam page cache (oleh kernel) membutuhkan pemetaan halaman ke page cache yang dilakukan oleh sistem memori virtual
Keuntungan sistem memori virtual pada Linux: 1. Ruang alamat yang besar 2. Pembagian memori fisik yang adil 3. Proteksi 4. Penggunaan memori virtual bersama
7
Jani, Martin, Mulki ©2005 Silakan menggandakan slide ini tanpa mengubah no
Memori Virtual Linux
Pada dasarnya, memori virtual linux bertanggungjawab dlm: -mengatur ruang alamat spy dpt dilihat (visible) oleh tiap proses -membentuk halaman2x (pages) di memori virtual sesuai permintaan -mengatur alokasi/loading halaman2x tsb dari disk ke memori fisik atau sebaliknya (swapping)
Di dalam memori virtual linux mengenal 2 ruang alamat proses: 1. sebagai kumpulan region 2. sebagai kumpulan halaman2x (pages)
Sistem memori virtual linux mengatur 2 view yg berbeda dari ruang alamat proses: 1. physical view mendeskripsikan instruksi2x yg diterima oleh sistem memori virtual, berkaitan dgn susunan dari ruang alamat.
8
Jani, Martin, Mulki ©2005 Silakan menggandakan slide ini tanpa mengubah no
Memori Virtual Linux (cont.)
2. logical view berupa page tables, dimana entri2xnya menentukan lokasi yg tepat bagi tiap page di memori virtual, apakah berada di disk atau di memori fisik.
a. Bagian(region) Memori Virtual Karakteristik dari bagian memori virtual: 1. Backing Store mendeskripsikan berasal dari mana halaman2x di suatu bagian dalam memori virtual. Biasanya berasal dari suatu file atau kosong/nothing (demand zero memory) 2. Reaksi Region dalam me-write berhubungan dgn berbagi bagian yg sama oleh lebih dari 1 proses. Untuk bagian yg bersifat private dan dipakai oleh lebih dari 1 proses, jika ada proses yg hendak mengubah(me-write) bagian tsb, maka akan dilakukan Copy-On-Write (mengubah/me-write salinannya).
9
Jani, Martin, Mulki ©2005 Silakan menggandakan slide ini tanpa mengubah no
Memori Virtual Linux (cont.)
b. Lifetime of Virtual Adress Space Kernel akan membentuk ruang alamat yang baru, dalam 2 situasi: 1. Proses menjalankan suatu program dgn system call exec() ketika program dieksekusi, proses diberikan ruang alamat virtual yg masih kosong, kemudian routine2x akan me-load program untuk mengisi ruang alamat di memori virtual 2. Pembentukan proses baru dgn system call fork() -membentuk salinan semua ruang alamat virtual dari proses ybs. -kernel menyalin deskriptor proses induk vm_area_struct, membentuk page tables utk si anak, dan menyalin isi page tables induk ke page tables anak -induk dan anak akan berbagi physical page yg sama
10
Jani, Martin, Mulki ©2005 Silakan menggandakan slide ini tanpa mengubah no
Memori Virtual Linux (cont.)
special case => proses penyalinan melibatkan bagian memori virtual yg private. Menggunakan Copy-on-Write jika ada proses yang ingin mengubah page yg dishare bersama.
c. Swapping dan Paging Salah satu tugas penting dalam sistem memori virtual : swapping, dalam hal ini merelokasi page2x dari memori fisik ke disk (memori virtual), manakala memori dibutuhkan untuk keperluan lain atau page2x tsb tidak dibutuhkan lagi. System paging di linux dibagi 2 : 1. pageout-policy menentukan page2x mana yg akan dikeluarkan dari memori dan kapan, contoh : algoritma page replacement --> Least Frequently Used (LFU) policy
11
Jani, Martin, Mulki ©2005 Silakan menggandakan slide ini tanpa mengubah no
Memori Virtual Linux (cont.) 2. Paging mechanism mengatur kembalinya page2x data ke memori fisik ketika dibutuhkan lagi.
d. Memori Virtual Kernel Kernel menyediakan(reserves) suatu ruang alamat virtual untuk tiap proses yg bersifat konstan dan architecture-dependant. Entri2x dlm page table yg dipetakan ke ruang alamat ini berstatus protected, yakni tidak visible & tidak modifiable ketika sistem berjalan dlm user-mode. Area memori virtual kernel ini dibagi 2: 1. Static area --> mengandung referensi page-table utk setiap physical page di memori yg tersedia, sehingga ketika menjalankan kode kernel, sehingga translasi dari alamat fisik ke alamat virtualnya lebih mudah dan simpel. 2. Remainder of Reserved Section --> Entri2x page-tablenya dapat dimodifikasi oleh kernel, untuk ditujukan ke area lain di memori.
12
Jani, Martin, Mulki ©2005 Silakan menggandakan slide ini tanpa mengubah no
Executing and Loading User Programs
Kernel Linux dieksekusi ketika system call exec() dipanggil
Linux menggunakan tabel fungsi untuk loading program; Setiap fungsi mempunyai kesempatan untuk meload file ketika system call exec() dipanggil
Standar format binari Linux antara 1.0 dan 1.2 telah berubah
Kernel Linux terdahulu(1.0) menggunakan format a.out
System Linux terbaru(sejak 1.2) menggunakan format ELF
Keuntungan ELF: flexibilitas dan ekstensibilitas
Dengan menggunakan registrasi dari multiple loader routine, Linux dapat men-support binari format ELF dan a.out di single running system
13
Jani, Martin, Mulki ©2005 Silakan menggandakan slide ini tanpa mengubah no
Pemetaan Program ke Memori
Binari loader tidak langsung meload binari file ke memori fisik
Page dari binary file dipetakan ke region dari virtual memori
Hanya ketika program mencoba mengakses page, page tersebut diload ke memori fisik
14
Jani, Martin, Mulki ©2005 Silakan menggandakan slide ini tanpa mengubah no
ELF memory layout
15
Jani, Martin, Mulki ©2005 Silakan menggandakan slide ini tanpa mengubah no
Static dan Dynamic linking
Banyak program membutuhkan fungsi-fungsi dari system libraries, sehingga system libraries perlu untuk diload juga
Static Linking => Fungsi library yang diperlukan diload langsung ke file binari executable program
Dynamic Linking => Menggunakan Linker library
Kerugian static linking adalah setiap program yang dibuat harus men-copy fungsi-fungsi dari system library
Dynamic linking lebih efisien baik untuk memori fisik dan pemakaian ruang disk, karena sistem librari hanya diload satu kali ke memori
16
Jani, Martin, Mulki ©2005 Silakan menggandakan slide ini tanpa mengubah no
Algoritma Clock 0
N-1
.
.
Page 9 Page 19 Use = 1 Use = 1 Page 1 Use = 1
. Page 222 Use = 0
1
t Nex
me F ra
P
er oint
Page 45 Use = 1 Page 191 Use = 1
8
2
3
Page 33 Page 556 Use = 1 Use = 0 Page 67 Page 13 Use = 1 Use = 0 7 4 6
5
17
Jani, Martin, Mulki ©2005 Silakan menggandakan slide ini tanpa mengubah no
Algoritma Clock N-1
.
.
0
Page 9 Page 19 Use = 1 Use = 1
1 Page 1 Use = 1 Page 45 Use = 0
. Page 222 Use = 0
Page 191 Use = 0
8
2
3
Page 33 Page 727 Use = 1 Use = 1 Page 67 Page 13 4 Use = 1 Use = 0 7 6
5
18
Jani, Martin, Mulki ©2005 Silakan menggandakan slide ini tanpa mengubah no