Rabu, 14 April 2010

mangement memory linux

Sistem manajemen memori pada linux

Pada dasarnya dalam semua sistem operasi kegunaan memori adalah mengalokasi suatu program agar bisa di eksekusi oleh computer karena keterbatasan jumlah memori dengan system memori virtual. Karena dalam tiap pengeksekusian suatu program kita pasti melewati tahapan alokasi memori (address binding) seperti dalam penyimpanan ataupun dalam menentukan instruksi yang dapat dipahami oleh komputer seperti binary file agar lebih sederhana dan tidak memakan banyak memori (overlays). Selain itu juga dalam tiap pengeksekusian program komputer secara otomatis akan melakukan teknik swapping agar CPU tidak memakan banyak memori ketika pengeksekusian. Dan pada kali ini system operasi yang akan digunakan adalah Linux. Memori merupakan salah satu bagian terpenting dari sebuah komputer, maka harus dikelola sebaik mungkin agar :

1. Utilitas CPU meningkat.

2. Data dan instruksi dapat diakses dengan cepat oleh CPU.

3. Tercapai efisiensi dalam pemakaian memori yang terbatas.

4. Transfer data dari/ke memori utama ke/dari CPU dapat lebih efisien.

Dalam system operasi linux juga biasa digunakan memori virtual untuk menangani keterbatasan memori sebenarnya. Adapun kegunaan memori virtual itu sendiri adalah

· Memberikan ruang alamat yang besar (terlihat besar dari ukuran sebenarnya)

· Pembagian memori fisik.

· Perlindungan dari program yang rusak (crash) sehingga tidak berpengaruh pada program lain yang sedang di jalankan.

· Pembagian memori virtual bersama.

Manajemen memori di Linux

a. Pengalamatan memori.

b. Pengalokasian memori dinamis secara kontigu dan non kontigu.

c. Proses address space.

Pengalamatan memori (memory addressing)

Dalam mengakses isi dari sel memori programmer biasanya mengacu pada alamat memori (memory addresses). Pada microprocessor Intel 80x86 memory addresses dibedakan menjadi tiga jenis address :

1. Logical Address

Terdapat pada instruksi bahasa mesin untuk menspesifikkan alamat dari sebuah operan atau instruksi. Setiap logical address terdiri dari sebuah segment dan sebuah offset (displacement) yang menyatakan jarak dari awal segment ke alamat aktual.

2. Linear Address

Merupakan sebuah 32-bit unsigned integer tunggal yang bisa digunakan untuk pengalamatan hingga 4 GB. Biasanya direpresentasikan dalam notasi heksadesimal.

3. Physical Address

Digunakan untuk pengalamatan sel memori, terdapat pada chip memori.

CPU control unit mengubah logical address ke linear address dengan menggunakan perangkat hardware yang disebut segmentation unit, dan kemudian circuit hardware kedua yang disebut paging unit mengubah linear address ke physical address.

Segmentation pada Linux

Linux menggunakan segmentasi secara sangat terbatas. Kenyataannya, segmentasi dan paging merupakan hal yang redundan karena keduanya digunakan untuk memisahkan ruang physical address padai proses. Segmentasi bisa menugaskan sebuah ruang linear address yang berbeda, sementara paging bisa memetakan ruang linear address yang sama ke ruang physical address yang berbeda. Linux lebih menyukai paging karena alasan berikut :

· Manajemen memori lebih sederhana bila semua proses menggunakan nilai segment register yang sama, yaitu, pada saat saling berbagi linear addressess yang sama.

· Salah satu tujuan desain Linux adalah portabilitas untuk sebagian besar arsitektur populer; sementara beberapa prosesor RISC hanya mendukung segmentasi secara terbatas.

Paging pada Linux

Linux mengadopsi model three-level paging sehingga paging memungkinkan pada arsitektur 64 bit. Tiga tipe paging tables :

  • Page Global Directory
  • Page Middle Directory
  • Page Table

MEMORY MANAGEMENT

Beberapa bagian dari RAM digunakan oleh kernel untuk menyimpan kode kernel dan struktur data statis kernel. Sisa dari bagian yang digunakan oleh kernel tersebut disebut dynamic memory. Dynamic memory ini tidak hanya digunakan oleh proses, tetapi juga oleh kernel senidri. Kualitas performansi dari keseluruhan sistem tergantung pada seberapa efisien manajemen dynaimc memory. Manajemen memori yang akan dibahas berikut menggambarkan bagaimana kernel mengalokasikan memori untuk keperluannya. Macam teknik manajemen memori :

1. Physically contigous memory areas

a. Page Frame Management

b. Memory Area Management

  1. Physically noncontigous memory areas

a. Noncontigous Memory Area Management

Memory Area Managemet

Manajemen memory area ini digunakan untuk mengatasi request untu memory area dengan ukuran kecil. Dengan adanya manajemen memory area maka internal fragmentation yang terjadi akibat adanya sistem buddy dapat dikurangi. Untuk iu digunakan algoritma slab allocator.

The Slab Allocator

Algoritma ini menggambarkan memory area sebagai objek-objek yang terdiri dari struktur data dan pasangan metode, yaitu constructor yang berfungsi untuk menginisialisasi memory area, dan destructor yang berfungsi untuk meng-deinisialisasi memory area. Objek-objek yang ada dikelompokkan ke dalam caches. Area dari main memory terdiri dari suatu cache yang dibagi menjadi slab-slab yang terdiri dari satu atau lebih page frame yang kontigu yang juga terdiri dari dari objek yang sudah dialokasikan dan yang masih bebas.

PROSES ADDRESS SPACE

Ketika user mode process meminta alokasi memori, maka proses tersebut bagi kernel :

· Dianggap nonurgent sehingga proses tersebut tidak dengan segera mendapat alokasi memori.

· Tidak bersih dari error sehingga kernel harus berusaha menangguli error yang ada.

Karena kernel berusaha sebisa mungkin untuk menunda permintaan alokasi memory maka user mode process menggunakan sebuah interval linier address yang baru yang merupakan bagian dari address space yang disebut memory region.

Address space sebuah proses terdiri dari semua linier address yang proses tersebut dapat gunakan. Interval linier address tersebut disebut memory region. Memory region dikarakterisasi dengan initial address, length (panjang) dan hak akses. Untuk alasan efisiensi, maka initial address dan panjang dari memory region harus merupakan kelipatan dari 4096.

Diberdayakan oleh Blogger.