Memori adalah pusat kegiatan pada sebuah komputer, karena setiap
proses yang akan dijalankan harus memlalui memori terlebih dahulu. CPU
mengambil instruksi dari memori sesuai dengan yang ada pada
program counter. Tugas sistem operasi
adalah mengatur peletakan banyak proses pada suatu memori.
Sebelum masuk ke memori, suatu proses harus menunggu di sebuah
input queue, setelah itu barulah mereka
akan diberikan alamat pada memori. Pemberian alamat dapat dilakukan
pada waktu compile, waktu pemanggilan,
dan waktu eksekusi. Alamat logika (virtual) adalah alamat yang
dibentuk di CPU, sedangkan alamat fisik adalah alamat yang terlihat
oleh memori. Seluruh proses dan data berada dalam memori ketika
dieksekusi. Berhubung ukuran dari memori fisik terbatas, kita harus
melakukan pemanggilan dinamis untuk mendapatkan utilisasi ruang memori
yang baik.
Sebuah proses dapat di-swap sementara
keluar memori ke sebuah backing store
untuk kemudian dibawa masuk lagi ke memori untuk melanjutkan
pengeksekusian. Salah satu proses yang memanfaatkan metode ini adalah
roll out, roll in, yang pada intinya
adalah proses swapping berdasarkan
prioritas.
Agar main memory dapat melayani sistem
operasi dan proses dengan baik, dibutuhkan pembagian memori seefisien
mungkin. Salah satunya adalah dengan contiguous memory
allocation. Artinya alamat memori diberikan kepada OS
secara berurutan dari kecil ke besar. Ruang memori yang masih kosong
dan dapat dialokasikan untuk proses disebut
hole. Metode pencarian hole ada
beberapa, diantaranya adalah first fit, next fit, best
fit, worst fit. Masalah yang sering muncul dalam
pengalamatan memori adalah fragmentasi (baik intern maupun ekstern),
yaitu munculnya hole-hole yang tidak
cukup besar untuk menampung permintaan dari proses.
Paging adalah suatu metode yang
memungkinkan suatu alamat fisik memori yang tersedia dapat tidak
berurutan. Prinsipnya adalah memecah memori fisik dan memori logika
menjadi blok-blok dengan ukuran sama (disebut
page). Setelah itu kita membuat
page table yang akan menerjemahkan
memori logika menjadi memori fisik dengan perantara
Memory Management Unit (MMU), dan
pengeksekusian proses akan mencari memori berdasarkan tabel tersebut.
Segmentasi adalah skema manajemen memori dengan cara membagi memori
menjadi segmen-segmen. Berbeda dengan
page, ukuran tiap segmen tidak harus
sama dan memiliki ciri tertentu, yaitu nama dan panjang segmen.
Memori virtual adalah suatu teknik yang memisahkan antara memori
logika dan memori fisiknya. Keuntungannya adalah memori virtual dapat
menampung program dalam skala besar, menurunnya lalu lintas I/O, ruang
memori menjadi lebih leluasa, meningkatnya respon, dan bertambahnya
jumlah user yang dapat dilayani.
Demand paging adalah salah satu
implementasi memori virtual yang umum digunakan, yakni mengatur agar
page tidak akan dibawa ke memori fisik
sampai benar-benar dibutuhkan. Mengukur kinerja demand
paging adalah dengan mengukur Effective
Access Time-nya. Beberapa teknik yang disediakan
memori virtual untuk meningkatkan kinerja pembuatan dan pengeksekusian
suatu proses antara lain adalah
copy-on-write dan
memory-mapped files.
Konsep page replacement adalah jika
tidak ada frame yang kosong, carilah
frame yang tidak sedang digunakan, lalu
dikosongkan dengan swapping dan ubah
semua tabelnya sebagai indikasi bahwa
page tersebut tidak akan lama berada di
dalam memori. Beberapa algoritma page
replacement: First-in-First-Out
(FIFO), Optimal,
Counting, LRU, dan Perkiraan
LRU.
Masalah yang penting dari alokasi frame
dengan penggunaan memori virtual adalah bagaimana membagi memori
dengan bebas untuk beberapa proses yang sedang dikerjakan. Contoh
algoritma yang lazim digunakan adalah equal
allocation dan proportional
allocation.
Algoritma page replacement dapat
diklasifikasikan dalam 2 kategori, yaitu penggantian global dan
penggantian lokal. Perbedaan antara keduanya terletak pada boleh
tidaknya setiap proses memilih frame
pengganti dari semua frame yang ada.
Utilitas dari CPU dapat menyebabkan
trashing, dimana sistem sibuk melakukan
swapping dikarenakan banyaknya
page-fault yang terjadi. Efek dari
trashing dapat dibatasi dengan algoritma penggantian lokal atau
prioritas. Cara untuk mengetahui berapa banyak proses yang dibutuhkan
suatu proses salah satunya adalah dengan strategi
working set.
Pemilihan algoritma penggantian dan aturan alokasi adalah
keputusan-keputusan utama yang kita buat untuk sistem
paging. Selain itu, ada beberapa
pertimbangan lain, antara lain prepaging, TLB
reach, ukuran page,
struktur program, I/O interlock, dan
lain sebagainya. Beberapa contoh sistem operasi yang
mengimplementasikan virtual memori adalah Windows NT, Solaris 2 dan
Linux.