Ingatan maya

Ingatan maya adalah teknik sistem komputer yang memberikan aturcara applikasi gambaran bahawa ia memiliki ingatan kerja berkelompok (ruang alamat), ketima sebenarnya ia berpecah secara fizikal malah melimpah kedalam simpanan cakera.

Dibangunkan bagi kernal komputer banyak tugasan ("Computer multitasking"), ingatan maya memberikan dua fungsi utama:
 Setiap proses memiliki ruang alamatnya sendiri, dengan itu tidak memerlukan dipindahkan ataupun menggunakan mod alamat bandingan.
 Setaip proses mencari satu ingatan bebas blok berterusan apabila dilancarkan. Ruang berserpih disorok.

Semua perlaksanaan (kecuali pengajuk ("emulators")) memerlukan sokongan perkakasan. Ini biasanya dalam bentuk unit pengurusan ingatan dibina pada CPU.

Ingatan maya adalah ingatan yang disediakan oleh sistem pengoperasian kepada pengguna dan tugas pemetaan antara ingatan maya kepada ingatan sebenar dilakukan oleh sistem pengoperasian.  
Ingatan maya ini menyediakan saiz ingatan yang jauh lebih besar dibandingkan dengan ingatan sebenar yang ada.
Pemetaan di antara ingatan maya dan ingatan sebenar dapat dibuat dengan menggunakan satu fungsi tertentu dengan N adalah ruang alamat dalam ingatan maya dan M adalah ruang ingatan utama.  

f : N   ->   M

Lokasi yang digunakan oleh seseorang juruaturcara di dalam ingatan maya dikenali sebagai “alamat aturcara”,  manakala lokasi yang sebenar di dalam ingatan sebenar dikenali sebagai “lokasi ingatan”.  Dengan memilih f yang berlainan kita akan mendapatkan ingatan maya yang berbeza.


Ingatan maya dapat diimplementasikan dengan tiga cara :
i.	Berhalaman
ii.	Bersegmen
iii.	Segmen Berhalaman

Berhalaman
Dengan teknik berhalaman,  storan bantuan adalah seolah-olah sambungan kepada ingatan utama.  Teknik ini membahagikan ruang alamat ingatan maya kepada berhalaman –halaman yang mempunyai saiz yang sama dan ingatan utama juga dibahagikan kepada rangka halaman yang sama saiznya.

Rangka halaman ini dikongsi oleh proses-proses yang berada di dalam sistem ketika itu.  Jadi pada ketika bagi tiap-tiap proses terdapat beberapa halaman di dalam ingatan utama (dikenali sebagai halaman aktif) dan beberapa halaman yang lain berada di dalam storan bantuan (dikenali sebagai halaman pasif).

Tugas mekanisma berhalaman ialah:
 melakukan operasi pemetaan alamat untuk menentukan halaman yang dirujuk oleh satu alamat aturcara dan seterusnya mencari rangka halaman yang digunakan,  jika ada.
 Memindahkan halaman daripada storan bantuan ke dalam ingatan utama bila halaman itu diperlukan dan memindahkan halaman dari ingatan utama ke dalam storan bantuan apabila halaman itu tidak diperlukan lagi.

Bersegmen
Cara berhalaman dapat menyediakan saiz ingatan maya yang lebih besar.  Cara bersegmen,  juruaturcara dapat merujuk kepada tiap-tiap segmen dengan menggunakn nama yang ditentukannya sendiri.  Jadi ruang alamat perlu disusun di dalam bentuk dua matra kerana alamat aturcara mesti terdiri daripada nama segmen dan alamat di dalam segmen.

Segmen Berhalaman
Cara bersegmen yang paling baik ialah penyediaan terdapatnya bilangan segmen yang banyak dan tiap-tiap segmen mempunyai saiz yang besar.  Setiap proses mempunyai satu jadual segmen dan tiap-tiap segmen mempunyai satu penghurai segmen.  Disebabkan bilangan segmen yang banyak maka jadual segmen itu sendiri adalah merupakan satu segmen dan mempunyai halaman-halamannya.  Penghurai segmen mengandungi satu maklumat untuk menentukan samada segmen tersebut berada di dalam ingatan atau tidak.  Tiap-tiap halaman di dalam satu segmen mempunyai saiz yang tertentu.

Perbezaan Pemetaan Alamat Segmentasi Dan Halaman

Halaman	
  Saiz ditetapkan oleh mesin saiz seperti halaman tidak berubah-ubah.
  Pembahagi fizikal terhadap ingatan.
  Pembahagian alamat program kepada nombor halaman dan perkataan adalah diwaskan oleh perkakasan.  Jika berlaku limpahan nombor perkataan,  otomatik nombor halaman meningkat.	

Segmentasi
  Saiz ditentukan oleh pengguna saiz setiap segmen boleh berubah-ubah.
  Pembahagi logikal bagi ruang alamat.
  Pembahagian alamat program adalah secara logikal dan tiada limpahan daripada nombor perkataan kepada nombor segmen.

Rujukan

 Hennessy, John L.; and Patterson, David A.; Computer Architecture, A Quantitative Approach (ISBN 1-55860-724-2)

Pautan luar
Linux Memory Management
Linux Kernel Mailing List Discussion 
Pointers to virtual memory visualizations 
The Virtual-Memory Manager in Windows NT