Anda di halaman 1dari 80

Main and Virtual Memory

Kel om po k 6
Anggota :
1.Elsa Vania (19082010027)

2.Sella Yuniar (19082010044)

3.Anindya Dewi N. (19082010060)

4.Salma Nuraini (19082010075)


Main Memory
Memory & Cpu • Memori adalah pusat dari pengoperasian sistem
komputer.
• CPU mengambil instruksi dari memori.
Instruksi dapat berupa
menempatkan/menyimpan dari/ke alamat di
memori, penambahan, dan sebagainya.
1. Control Unit (CU) mengambil intruksi dari
memori
2. CU menginterpretasi instruksi dan
memindahkan data ke Arithmetic/Logic Unit
(ALU)
3. ALU mengeksekusi instruksi dan data,
berdasarkan persepsi CU
4. ALU menyimpan hasil eksekusi ke memori
data register kemudian dikirim ke memori
Address Binding
Proses pengalamatan instruksi dan data ke alamat memori
dapat dilakukan pada setiap langkah yaitu:
• Compile time. Lokasi alamat fisik proses pada memori telah
diketahui, maka compiler mengeluarkan absolute address
(alamat fisik).
• Load Time. Jika alamat fisik memori tidak diketahui saat
compile time, maka compiler memberikan relocatable address.
Pengalamatan akhir diundur hingga load time.
• Execution time. Jika proses dapat dipindahkan selama
eksekusinya dari satu segmen memori ke segmen memori
lainnya, maka pengalamatan harus ditunda sampai run time
(waktu proses). Perangkat keras khusus harus tersedia agar
skema ini berfungsi.
Logical, Physical Address dan
MMU
Logical, Physical Address Memory-Management Unit (MMU)
• Logical Address / Alamat logika (alamat virtual) ⇒ • Perangkat keras yang memetakan alamat virtual ke
alamat yang dihasilkan CPU. alamat fisik.
• Physical Address Alamat fisik ⇒alamat pada unit • MMU memetakan dengan cara menambahkan nilai
memori. pada relocation register (base register) ke setiap
alamat yang dihasilkan pada proses user.
⇒ Jika base register=14000, setiap akses user ke
lokasi 0 akan dipetakan ke lokasi 14000. Akses user
ke 346 dipetakan ke 14346.
• Program user hanya mengetahui alamat virtual,
namun tidak alamat fisik
Dynamic Loading & Dynamic Linking
Dynamic Loading Dynamic Linking
• Kapasitas memori terbatas sehingga routine • Proses linking terjadi saat execution time .
(kumpulan intruksi) hanya diload jika dibutuhkan. • Pada saat linking, Terdapat kode kecil yang disebut
• Dynamic loading digunakan untuk meningkatkan stub digunakan untuk meletakkan rutin library di
utilisasi memori. memori dengan tepat. Stub diisi dengan alamat rutin
• Mekanisme dari dynamic loading adalah program dan mengeksekusi rutin. Sistem operasi perlu
utama di-load dahulu dan dieksekusi. Bila suatu memeriksa apakah rutin berada di alamat memori.
routine perlu memanggil routine lain, routine yang • Dynamic linking  biasanya digunakan dengan
dipanggil lebih dahulu diperiksa apakah rutin yang sistem  library, seperti language subroutine library.
dipanggil sudah di-load. Jika tidak, relocatable
linking loader dipanggil untuk me-load  routine yg
diminta ke memori.
Memory Protection
Proteksi memori adalah sebuah sistem yang mencegah sebuah proses dari
pengambilan memori proses lain yang sedang berjalan pada komputer yang
sama dan pada saat yang sama pula.

Proteksi memori selalu mempekerjakan hardware (Memory Managemen


Unit) dan sistem software untuk mengalokasikan memori yang berbeda
untuk proses yang berbeda dan untuk mengatasi exception yang muncul
ketika sebuah proses mencoba untuk mengakses memori di luar batas.
Ketika penjadwal CPU memilih proses untuk
eksekusi, dispatcher memuat relokasi dan
membatasi register dengan nilai yang benar.
Karena setiap alamat yang dihasilkan oleh CPU
diperiksa terhadap register ini, sehingga dapat
melindungi sistem operasi dan program dan
data yang telah dimodifikasi oleh proses yang
sedang berjalan ini.
Memory Allocation
Salah satu metode paling sederhana dari mengalokasikan memori adalah
untuk menetapkan proses ke partisi yang memiliki ukuran bervariasi dalam
suatu memori. Memori biasanya dibagi menjadi dua partisi, satu untuk
operasi sistem dan satu untuk proses pengguna.

Dalam skema partisi ini, sistem operasi menyimpan tabel yang


menunjukkan bagian mana dari memori tersedia dan mana yang ditempati.
Awalnya, semua memori tersedia untuk proses pengguna dan dianggap
sebagai satu blok besar memori yang tersedia, yaitu hole (lubang). Memori
berisi satu set hole (lubang) dari berbagai ukuran.
Memory Allocation
Pada gambar di bawah ini, awalnya, memori sepenuhnya digunakan dan berisi proses 5, 8, dan 2.
Setelah proses 8 meninggalkan memori, maka akan terdapat hole (Lubang). Kemudian, proses 9
tiba dan dialokasikan memori. Kemudian proses 5 meninggalkan memori, mengakibatkan dua
lubang yang tidak bersebelahan.
Memory Allocation Partisi dalam memori ini dapat dialokasikan
berdasarkan beberapa strategi yang mungkin,
seperti :
1. First fit: Mengalokasikan lubang pertama
ditemukan yang besarnya mencukupi.
Pencarian dimulai dari awal.
2. Best fit: Mengalokasikan lubang dengan besar
minimum yang mencukupi permintaan.
3. Next fit: Mengalokasikan lubang pertama
ditemukan yang besarnya mencukupi.
Pencarian dimulai dari akhir pencarian
sebelumnya.
4. Worst fit: Mengalokasikan lubang terbesar
yang ada.
Fragmentasi
Fragmentasi adalah masalah yang dapat terjadi karena munculnya lubang-lubang yang tidak
cukup besar untuk menampung permintaan dari proses.

Fragmentasi Internal. Fragmentasi yang


terjadi apabila jumlah memori yang
diberikan oleh penjadwal CPU untuk
ditempati proses lebih besar daripada
yang diminta proses karena adanya selisih
antara permintaan proses dengan alokasi
lubang yang sudah ditetapkan.
Fragmentasi

Fragmentasi Eksternal. Fragmentasi yang terjadi apabila jumlah keseluruhan memori kosong
yang tersedia memang mencukupi untuk menampung permintaan tempat dari proses, tetapi
letaknya tidak berkesinambungan atau terpecah menjadi beberapa bagian kecil sehingga proses
tidak dapat masuk.
Solusi Fragmentasi
Fragmentasi Internal Fragmentasi Eksternal
• Memecah memori fisik menjadi • Compaction
berukuran tetap. Menempatkan semua isi memori
• Memblokir dan mengalokasikan pada satu lokasi.
memori dalam satuan Hanya dapat dilakukan bila
berdasarkan ukuran blok. relokasi memori bersifat dinamis.
• Pengalamatan menggunakan paging.
Mengizinkan ruang alamat logis
proses menjadi tidak bersebelahan.
Paging
Paging atau pemberian halaman adalah skema manajemen memori yang
memungkinkan ruang alamat fisik proses menjadi tidak bersebelahan (tidak
berurutan).

Paging diimplementasikan melalui kerja sama antara sistem operasi dan


perangkat keras computer ( hardware ).
Basic Method of Paging
Metode dasar untuk mengimplementasikan paging
melibatkan pemecahan memori fisik menjadi blok
berukuran tetap yang disebut frame dan memecah
memori logis menjadi blok dengan ukuran yang sama
disebut pages (halaman).

Setiap alamat yang dihasilkan oleh CPU dibagi


menjadi dua bagian, yaitu page number (nomor
halaman) (p) dan page offset (offset halaman) (d)
Ukuran ruang alamat logika adalah 2 m dan ukuran
page adalah 2n.
Basic Method of Paging
Page number (nomor halaman) (p)
digunakan sebagai indeks ke dalam page
table (tabel halaman) per-prosesnya. Page
table berisi basis alamat di setiap frame
dalam memori fisik. Page offset (offset
halaman) (d) adalah lokasi dalam frame yang
direferensikan. Basis ini dikombinasikan
dengan offset halaman untuk menentukan
alamat memori fisik yang dikirim ke unit
memori.
Hardware Support in Paging
• Page table dapat disimpan dalam register atau memori. Jika terlalu besar, page
table disimpan di memori.
• Page-table base register (PTBR) merujuk ke page table yang ada di memori.
• Page-Table Length Register (PTLR)
Register yang menyimpan Panjang page table. PTLR nantinya akan
dibandingkan dengan alamat logika suatu proses untuk keperluan validasi
alamat.
• Akses memori membutuhkan duakali akses memori, yaitu akses kepage table dan
akses ke frame di memori.
Paging Hardware With TLB
• Agar memori dapat dilakukan sekali akses, kita bisa menggunakan
cache hadware yang biasa disebut : Translation Look-aside
Buffers (TLBs)
• TLB hanya berisi beberapa entri page table. Ketika alamat logika
dihasilkan oleh CPU, MMU terlebih dahulu memeriksa apakah
nomor halamannya ada di TLB. Jika nomor halaman ditemukan,
frame number segera tersedia dan digunakan untuk mengakses
memori.
• Beberapa TLB menyimpan Address-space Identifiers (ASIDs)
pada setiap entry. ASIDs digunakan untuk memberikan proteksi
terhadap ruang alamat proses.
• TLB Hit →kondisi dimana page number pada entri TLB
ditemukan.
• TLB Miss
– Kondisi dimana page number pada TLB tidak ditemukan.
– ASIDs milik proses tidak sesuai dengan ASIDs pada entri TLB.
Protection in Paging
• Perlindungan memori di lingkungan paging, dilakukan
dengan bit perlindungan yang terkait dengan setiap frame.
Biasanya, bit ini disimpan dalam page table (tabel
halaman).
• Protection bit (Prot)
Bit = 0 →Read/Write Page
Bit = 1 →Read Only Page
• Bit yang umumnya juga dilampirkan ke setiap entri dalam
page table adalah valid–invalid bit.
Bit = 0 →invalid bit
Bit = 1 →valid bit
• Ketika bit ini diatur ke mode valid , halaman terkait berada
di ruang alamat logis proses. Ketika bit diatur ke invalid,
halaman tidak berada di ruang alamat logis proses.
Shared Page
• Keuntungan dari paging adalah kemungkinan berbagi
kode saat beberapa proses dijalankan.
• Saat beberapa proses dijalankan, beberapa proses
tersebut dapat mengeksekusi kode yang sama dan pada
saat yang sama pula. Kode ini disebut dengan reentrant
code, yaitu kode yang tidak memodifikasi sendiri dan
kode tidak pernah berubah selama eksekusi. Kode
harus berada di lokasi yang sama pada ruang alamat
fisik.
• Setiap proses memiliki salinan register dan
penyimpanan data sendiri untuk menyimpan data untuk
eksekusi proses.
Hierarchical Paging
Hierarchical paging atau pemberian halaman secara bertingkat merupakan
sebuah metode pemberian halaman dengan cara membagi sebuah page
table menjadi beberapa page table yang berukuran lebih kecil. Metode ini
merupakan solusi dari permasalahan alokasi page table berukuran sangat
besar pada main memory yang umumnya dihadapi pada sistem komputer
modern yang memiliki ruang alamat logika yang besar sekali.
Sebagai contoh, pada suatu sistem komputer 32 bit dengan ukuran page 4 KB, alamat
logika dibagi ke dalam nomor page yang terdiri dari 20 bit dan page offset-nya 12 bit.
Jadi, alamat logisnya adalah sebagai berikut:

dimana p1 adalah indeks ke dalam tabel halaman luar, dan p2 adalah perpindahan
dalam halaman dari tabel halaman dalam .
Translasi Alamat pada Two-Level Paging

Dengan metode ini, isi pada indeks page table pertama akan menunjuk pada page
table kedua yang indeksnya bersesuaian dengan isi dari page table pertama tersebut.
Sedangkan isi dari page table kedua menunjukkan tempat dimana page table ketiga
bermula, sedang segmen alamat logika kedua adalah indeks ke-n setelah starting
point page table ketiga dan seterusnya sampai dengan segmen terakhir.
Hashed Page Tables
Satu cara untuk menangani ruang alamat yang lebih besar dari 32 bit menggunakan.
Hashed page table menggunakan tabel hash sebagai page table-nya dengan ukuran
yang terbatas untuk menghemat ruang memori dan sebuah hash function untuk
mengalokasikan alamat virtual pada page table tersebut. Setiap entri/blok pada page
table berisi linked list yang menghubungkan elemen-elemen yang di- hash ke lokasi
yang sama.
Setiap elemen terdiri dari tiga field:
1. Virtual page number
2. Nomor frame dimana alamat virtual tersebut dipetakan
3. Pointer yang menunjukkan elemen berikutnya dalam linked list. 
Mekanisme paging pada metode ini yaitu:

1. Alamat logika dipetakan ke suatu lokasi/entri di page


table dengan menggunakan hash function.

2. Page number tersebut kemudian di simpan


sebagai field pertama pada sebuah elemen dalam entri
yang teralokasikan.

3. Page number tersebut lalu dipasangkan dengan frame


number yang available yang disimpan
pada field kedua di elemen yang sama .

4. Untuk mendapatkan lokasi yang sebenarnya pada


memori fisik, frame number pada field kedua di-
concate dengan offset .
Inverted Page Tables
Sebuah Inverted Page Table memiliki satu entri untuk setiap real page
memori. Setiap entri terdiri dari alamat virtual halaman yang disimpan
di lokasi memori sebenarnya, dengan informasi tentang proses yang
memiliki laman tersebut. Jadi, hanya satu halaman tabel dalam sistem,
dan hanya memiliki satu entri untuk setiap halaman fisik Penyimpanan.
Inverted Page Table Mengurangi memori yang dibutuhkan untuk
menyimpan setiap tabel halaman, tetapi menambah waktu yang
dibutuhkan untuk mencari tabel ketika referensi halaman terjadi.
Contoh sistem yang menggunakan Inverted Page Table adalah 64-bit
UltraSPARC dan PowerPC.
Oracle SPARC Solaris
Sebagai contoh system operasi 64-bit modern dengan HW terintegrasi erat untuk menyediakan
memori virtual dengan overhead rendah. Solaris bekerja di SPARC CPU adalah sistem operasi
64-bit sepenuhnya dan dengan demikian harus diselesaikan masalah memori virtual tanpa
menggunakan semua memori fisiknya dengan mempertahankan beberapa tingkat page table.
Untuk memecahkan masalah secara efisien menggunakan Hashed Page Table. Ada dua hash
table — satu untuk kernel dan satu untuk semua proses pengguna. Setiap memori peta alamat
dari memori virtual ke fisik. Setiap entri tabel hash mewakili area berdekatan dari memori
virtual yang dipetakan, yang lebih efisien daripada memiliki entri tabel hash terpisah untuk
setiap halaman. Setiap entri memiliki alamat dasar dan rentang yang menunjukkan jumlah
halaman yang diwakili oleh entri tersebut.
Swapping
Sebuah proses harus berada di memori sebelum dieksekusi. Proses swapping menukarkan sebuah
proses keluar dari memori untuk sementara waktu ke sebuah penyimpanan sementara dengan
sebuah proses lain yang sedang membutuhkan sejumlah alokasi memori untuk dieksekusi. .
Sebuah contoh untuk menggambarkan
teknik swapping ini menggunakan Algoritma Round-
Robin yang digunakan pada multiprogramming
environment menggunakan waktu kuantum (satuan waktu
CPU) dalam pengeksekusian proses-prosesnya. Ketika
waktu kuantum berakhir, memory manager akan
mengeluarkan (swap out) proses yang telah selesai
menjalani waktu kuantumnya pada suatu saat serta
memasukkan (swap in) proses lain ke dalam memori yang
telah bebas tersebut. Pada saat yang bersamaan penjadwal
CPU akan mengalokasikan waktu untuk proses lain dalam
memori. Hal yang menjadi perhatian adalah, waktu
kuantum harus cukup lama sehingga waktu penggunaan
CPU dapat lebih optimal jika dibandingkan dengan proses
penukaran yang terjadi antara memori dan disk.
Swapping on Mobile Systems
Sebagian besar sistem operasi untuk PC dan server mendukung swapping page .
Sebaliknya, sistem seluler biasanya tidak mendukung swapping dalam bentuk apa
pun. Perangkat selular umumnya menggunakan memori flash daripada harddisk.
Batasan ruang yang dihasilkan menjadi salah satu alasan mengapa perancang
mobile sistem operasi menghindari swapping. Alasan lainnya Jumlah siklus tulis
terbatas dan throughput yang buruk antara main memori dan memori flash pada
platform seluler.
Contoh: Intel 32- and 64-bit Architectures

Arsitektur chip Intel telah mendominasi lanskap komputer pribadi selama beberapa dekade. Intel
8086 16-bit muncul pada akhir 1970-an dan segera diikuti oleh chip 16-bit lainnya. Intel
kemudian memproduksi seri 32-bit chip — itu IA-32 — termasuk keluarga prosesor Pentium 32-
bit. Saat ini Intel telah memproduksi serangkaian chip 64-bit berdasarkan x86-64 Arsitektur.
IA-32 Architecture
Manajemen memori dalam IA-32 sistem dibagi menjadi dua komponen— segmentasi dan
paging — dan berfungsi sebagai berikut: CPU menghasilkan alamat logika, yang diberikan ke
unit segmentasi. Unit segmentasi menghasilkan alamat linier untuk setiap alamat logis.
Kemudian alamat liniernya diberikan ke unit paging, yang pada gilirannya menghasilkan alamat
fisik main memory. Jadi, unit segmentasi dan halaman membentuk ekuivalen dari unit
manajemen memori (MMU).
IA-32 Segmentation
IA-32 Arsitektur memungkinkan segmen menjadi sebesar 4
GB, dan maksimal jumlah segmen per-proses adalah 16 K.
Ruang alamat logis dari sebuah proses dibagi menjadi dua
partisi. Partisi pertama terdiri dari hingga 8 K segmen yang
bersifat pribadi untuk proses itu. Partisi kedua terdiri hingga 8
K segmen yang dibagi di antara semua proses. Informasi
tentang partisi pertama disimpan di local descriptor table
(LDT); informasi tentang partisi kedua disimpan di global
descriptor table(GDT). Setiap entri di LDT dan GDT terdiri
dari segmen 8-byte descriptor dengan informasi terperinci
tentang segmen tertentu, termasuk lokasi dasar dan batas
segmen tersebut.
Alamat logisnya adalah sepasang (selektor, offset), di mana
selektornya adalah 16-bit jumlah:
IA-32 Paging
IA -32 Arsitektur memungkinkan ukuran halaman 4
KB atau 4 MB. Untuk 4-KB halaman, IA-32
menggunakan skema two level paging dimana
pembagian 32-bit linier alamatnya adalah sebagai
berikut:
x86-64
Intel memiliki sejarah yang menarik dalam mengembangkan arsitektur 64-bit.
Awalnya entri adalah IA-64 arsitektur, tetapi arsitektur itu tidak diadopsi secara
luas. Sementara itu, produsen chip lain—AMD - mulai mengembangkan arsitektur
64-bit yang dikenal sebagai x86-64 yang berbasis tentang memperluas yang ada IA-
32. X86-64 mendukung banyak hal ruang alamat fisik dan logis yang lebih besar,
serta beberapa arsitektur lainnya.
Dukungan untuk ruang alamat 64-bit menghasilkan 64 byte dari memori yang dapat
dialamatkan — angka yang lebih dari 16 triliun (atau 16 exabytes). Namun, meskipun
sistem 64-bit berpotensi dapat mengatasi memori sebanyak ini, dalam praktiknya, jauh
kurang dari 64 bit digunakan untuk representasi alamat di desain saat ini. Arsitektur
x86-64 saat ini menyediakan alamat virtual 48-bit dengan dukungan untuk ukuran
halaman 4 KB, 2 MB, atau 1 GB menggunakan empat tingkatan dari Hierarchical
Paging. Karena skema pengalamatan ini bisa menggunakan page address
extension(PAE), alamat virtual adalah 48 bit dalam ukuran tetapi mendukung alamat
fisik 52-bit (4.096 terabyte).
Contoh: ARMv8 Architecture
Meskipun chip Intel telah mendominasi pasar komputer pribadi lebih lebih dari 30 tahun, Chip
untuk perangkat seluler seperti smartphone dan computer tablet sering dimenggunakan ARM
prosesor. Menariknya, Intel mendesain dan memproduksi chip, sedangkan ARM hanya
mendesainnya. Apple telah melisensikan ARM desain untuk perangkat seluler iPhone dan iPad,
dan sebagian besar ponsel cerdas berbasis Android menggunakan ARM prosesor. Selain perangkat
seluler, ARM juga menyediakan desain arsitektur untuk embedded system secara real-time.
ARMv8 memiliki tiga perbedaan translation granules : 4 KB, 16 KB, dan 64 KB.
Setiap translation granules memberikan ukuran halaman yang berbeda, serta lebih
besar bagian dari memori yang berdekatan, yang dikenal sebagai regions. Ukuran
page dan region untuk translation granules yang berbeda ditunjukkan di bawah ini:

Untuk 4-KB dan 16-KB granules, four level paging dapat digunakan, three level
paging digunakan untuk 64-KB granules.
Virtual Memory
Virtual memory adalah teknik yang memungkinkan pelaksanaan proses yang tidak
sepenuhnya dalam memori.
Virtual memory pada dasarnya, memetakan ruang alamat virtual ke ruang alamat fisik
(baik pada RAM atau perangkat keras). Setiap kali proses dibuat, kernel menyediakan
sebagian memori yang dapat ditempatkan di mana saja menggunakan VM.
Background
Virtual memory melibatkan pemisahan memori logis seperti yang dirasakan oleh pengembang dari
memori fisik. Pemisahan ini memungkinkan virtual memory yang sangat besar disediakan untuk
programmer jika hanya tersedia memori fisik yang lebih kecil.
Virtual address space dari suatu proses mengacu pada tampilan logis (atau virtual) tentang
bagaimana suatu proses disimpan dalam memori. Biasanya, pandangan ini adalah bahwa suatu
proses dimulai pada alamat logis tertentu — katakanlah, alamat 0 — dan berada dalam memori
yang berdekatan.
Virtual address space yang memiliki lubang (ruang Selain memisahkan memori logis (logical memory) dari
kosong) disebut sebagai sparse address spaces.. memori fisik (physical memory), memori virtual
Menggunakan sparse address space bermanfaat karena memungkinkan file dan memori digunakan bersama oleh
lubang dapat diisi saat tumpukan atau stack bertambah dua atau lebih proses melalui berbagi halaman.
atau jika kita ingin menautkan pustaka secara dinamis
(atau mungkin objek bersama lainnya) selama eksekusi
program.
Demand Paging
Teknik ini dikenal sebagai demand paging dan biasanya digunakan dalam sistem
memori virtual. Dengan menggunakan teknik ini, halaman dimuat hanya ketika
diminta selama eksekusi program. Halaman yang tidak pernah diakses dengan
demikian tidak pernah dimuat ke dalam memori fisik. Demand paging punya salah
satu manfaat utama dari virtual memory yaitu dengan memuat bagian program yang
diperlukan saja, sehingga memori digunakan secara lebih efisien.
Basic Concepts
Konsep umum di balik permintaan paging adalah memuat halaman dalam memori
hanya jika diperlukan. Akibatnya, saat suatu proses sedang dijalankan, beberapa
halaman akan berada di memori, dan beberapa di penyimpanan sekunder. Oleh
karena itu, diperlukan beberapa bentuk dukungan perangkat keras untuk
membedakan keduanya.

Skema bit valid - tidak valid dapat digunakan untuk tujuan ini. Ketika bit "valid",
halaman terkait adalah legal dan dalam memori. Jika bit "tidak valid", halaman
tersebut tidak valid atau valid tetapi saat ini berada di penyimpanan sekunder.
Prosedur untuk menangani
kesalahan 1. Memeriksa tabel internal, proses ini guna menentukan apakah
referensi itu valid atau tidak valid akses memori.
2. Jika referensi tidak valid, dapat menghentikan proses. Jika itu valid
tetapi belum membawa halaman itu, sekarang dapat
memasukkannya.
3. Menemukan free frames
4. Menjadwalkan operasi penyimpanan sekunder untuk membaca
halaman yang diinginkan ke dalam frame yang baru dialokasikan.
5. Ketika pembacaan penyimpanan selesai, lalu memodifikasi tabel
internal yang disimpan dengan proses dan tabel halaman untuk
menunjukkan bahwa halaman tersebut sekarang ada dalam memori.
6. Memulai kembali instruksi yang diinterupsi oleh trap. Prosesnya
sekarang dapat mengakses halaman seolah-olah selalu ada di
memori
Free-Frame List

Untuk mengatasi kesalahan halaman, sebagian besar sistem operasi mempertahankan free-frame list, kumpulan
free frames ini untuk memenuhi permintaan. Sistem operasi biasanya mengalokasikan free frames menggunakan
teknik yang dikenal sebagai zero-fillon-demand. Frame zero-fillon-demand "dikosongkan" sebelum
dialokasikan, sehingga menghapus konten sebelumnya.
Saat sistem dimulai, semua memori yang tersedia ditempatkan pada free-frame list. Saat free frames diminta
(misalnya, melalui halaman permintaan), ukuran free-frame list menyusut. Pada titik tertentu, daftar tersebut
jatuh ke nol atau berada di bawah ambang tertentu, yang pada titik itu harus diisi kembali.
Performance of Demand Paging
Dalam proses demand paging, jika terjadi page fault maka diperlukan waktu yang lebih lambat
untuk mengakses memori daripada jika tidak terjadi page fault. Perlu adanya penanganan page
fault itu sendiri. Kinerja demand paging ini dapat dihitung dengan menggunakan effective
access time yang dirumuskan sebagai berikut:

effective access time = (1 - p) x ma + p x page fault time

ma adalah memory access time, yang pada umumnya berkisar antara 10 hingga 200 nanosecond.
p adalah probabilitas terjadinya page fault, yang berkisar antara 0 hingga 1. Jika p sama dengan
0 yang berarti bahwa tidak pernah terjadi page fault, maka effective access time akan sama
dengan memory access time, dan itulah yang diharapkan. Sedangkan jika p sama dengan 1, yang
berarti bahwa semua halaman mengalami page fault, maka effective access time-nya akan
semaikin meningkat.
Contoh
Diketahui waktu pengaksesan memori (ma) sebesar 100 ns. Waktu page fault sebesar 20 ms.
Maka effective access time = (1 - p) x ma + p x page fault time
= (1 - p) x 100 + p x 20000000
= 100 - 100p + 20000000p
= 100 + 19.999.900p nanosecond
Pada demand paging, diusahakan agar kemungkinan terjadinya page fault rendah, karena bila
effective access time-nya meningkat, maka proses akan berjalan lebih lambat.
Copy-on-Write

Teknik ini menyediakan pembuatan proses yang cepat dan meminimalkan jumlah halaman baru yang harus
dialokasikan untuk proses yang baru dibuat.
Kita dapat menggunakan teknik yang dikenal sebagai copy-on-write, yang berfungsi dengan mengizinkan proses
induk dan anak pada awalnya untuk berbagi halaman yang sama. Halaman bersama ini ditandai sebagai halaman
salin saat menulis, artinya jika salah satu proses menulis ke halaman bersama, salinan halaman bersama akan
dibuat.
Page Replacement
Proses menukar halaman yang ada dari bingkai
memori utama dan menggantinya dengan halaman
yang diperlukan. Semua bingkai memori utama sudah
ditempati.

Basic Page Replacement


Jika tidak ada free frames, kita perlu menemukan satu
yang saat ini tidak digunakan dan membebaskannya
untuk menukar ruang dan mengubah tabel halaman
untuk menunjukkan bahwa halaman tidak lagi dalam
memori.
Memodifikasi kesalahan halaman untuk menyertakan
penggantian halaman:
1. Temukan lokasi halaman yang diinginkan pada
penyimpanan sekunder.
2. Temukan free frames:
• Jika ada free frames, gunakanlah.
• Jika tidak ada free frames, gunakan algoritme
penggantian halaman untuk memilih bingkai.
• mengubah halaman dan tabel bingkai sesuai.
3. Mengubah halaman dan bingkai tabel.
4. Lanjutkan proses dari mana kesalahan halaman
terjadi.
First in First Out (FIFO) Page Replacement

Ini adalah algoritma penggantian halaman yang paling sederhana. Dalam algoritma ini,
sistem operasi melacak semua halaman dalam memori dalam antrian, halaman terlama
berada di depan antrian. Ketika halaman perlu diganti halaman di depan antrian dipilih
untuk dihapus.
Optimal Page Replacement

Penggunaan penggantian halaman Optimal adalah untuk menyiapkan tolok ukur sehingga
algoritme pengganti lainnya dapat dianalisis terhadapnya. Pada halaman algoritma ini akan
diganti yang paling terakhir digunakan.
Least Recently Used (LRU) Page Replacement

Dalam halaman algoritma ini akan diganti yang paling terakhir digunakan. Ketika sebuah
halaman harus diganti, LRU memilih halaman yang sudah lama tidak digunakan.
Allocation of Frames
Aspek penting dari sistem operasi, memori virtual diimplementasikan dengan menggunakan
demand paging. Ini memerlukan pengembangan algoritme penggantian halaman dan algoritme
alokasi.

Ada berbagai kendala pada strategi alokasi frame:


Kita tidak dapat mengalokasikan lebih dari jumlah total bingkai yang tersedia.
Setidaknya jumlah minimum frame harus dialokasikan untuk setiap proses. Kendala ini
didukung oleh dua alas an berikut :
1. karena lebih sedikit jumlah frame yang dialokasikan, ada peningkatan rasio kesalahan
halaman, menurunkan kinerja eksekusi proses.
2. harus ada cukup bingkai untuk menampung semua halaman berbeda yang dapat dirujuk oleh
instruksi tunggal.
Allocation Algorithms
Equal Allocation
 

Dalam sistem dengan frame x dan proses y, setiap proses mendapatkan jumlah frame yang sama, yaitu .
Misalnya, jika sistem memiliki 48 frame dan 9 proses,
Sisa 3
maka setiap proses akan mendapatkan 5 frame. 3 frame yang tidak dialokasikan untuk proses apa pun
dapat digunakan sebagai kumpulan buffer bingkai bebas.

Proportional Allocation
Bingkai dialokasikan untuk setiap proses sesuai dengan ukuran proses. Untuk proses pi ukuran si,
jumlah frame yang dialokasikan adalah , di mana S adalah jumlah dari ukuran semua proses dan m
adalah jumlah frame dalam sistem. Misalnya pada sistem dengan 62 frame, jika ada proses 10KB dan
proses lain 127KB,
maka proses pertama akan dialokasikan frame
dan proses lainnya akan mendapatkan bingkai.
Global versus Local Allocation
Global Replacement
Ketika suatu proses membutuhkan halaman yang tidak ada dalam memori, itu dapat
membawa halaman baru dan mengalokasikannya sebuah bingkai dari himpunan semua
bingkai, bahkan jika bingkai tersebut saat ini dialokasikan ke beberapa proses lain yang
berarti, satu proses dapat mengambil kerangka dari proses lainnya.

Local Replacement
Ketika suatu proses membutuhkan halaman yang tidak ada dalam memori, itu dapat
membawa halaman baru dan mengalokasikan bingkai dari kumpulan bingkai yang
dialokasikan sendiri saja
Thrasing
Thrashing adalah keadaan dimana proses sibuk untuk mengganti halaman yang dibutuhkan
secara terus menerus
Pada saat CPU utilization terlalu rendah, maka sistem operasi akan meningkatkan
derajat multiprogramming dengan cara menghasilkan proses-proses baru, dalam
keadaan ini algoritma penggantian global akan digunakan. Ketika proses membutuhkan
bingkai yang lebih, maka akan terjadi page fault yang menyebabkan CPU
utilization semakin menurun. Ketika sistem operasi mendeteksi hal ini,
derajat multiprogramming makin ditingkatkan, yang menyebabkan CPU
utilization kembali menurun drastis, hal ini yang menyebabkan thrashing.

Untuk membatasi efek thrashing dapat menggunakan algoritma penggantian lokal.


Dengan algoritma penggantian lokal, jika terjadi thrashing, proses tersebut dapat
menggambil bingkai dari proses lain dan menyebabkan proses tersebut tidak
mengalami thrashing. Salah satu cara untuk menghindari thrashing adalah dengan cara
menyediakan jumlah bingkai yang pas sesuai dengan kebutuhan proses tersebut. Salah
satu cara untuk mengetahui jumlah bingkai yang diperlukan pada suatu proses adalah
dengan strategi working set.
Memory Compression
Kompresi memori virtual adalah teknik manajemen memori yang menggunakan kompresi data
untuk mengurangi ukuran atau jumlah permintaan paging.

Dalam sistem kompresi memori virtual, halaman yang akan ditampilkan dari memori virtual
dikompresi dan disimpan dalam RAM atau dikirim ke penyimpanan tambahan seperti hard disk
drive (HDD) atau solid state drive (SSD).
Allocation Kernel Memory
Ketika proses yang berjalan dalam mode pengguna meminta memori
tambahan, halaman dialokasikan dari daftar page frame bebas yang dikelola
oleh kernel. Memori kernel sering dialokasikan dari kumpulan memori
bebas yang berbeda dari daftar yang digunakan untuk memenuhi proses
mode pengguna biasa.

Manajemen memori untuk kernel : Buddy system dan slab allocation


Buddy System
Alokasi memori menggunakan segmen dengan
ukuran segmen tetap. Segmen berisikan page yang
berurutan (contiguous)
Alokasi memori menggunakan berkelipatan dua

Segmen dibagi menjadi dua bagian, jika segmen


terlalu besar untuk memenuhi kebutuhan memory
proses kernel.

Pembagian terus dilakukan hingga besar potongan


segmen memenuhi.
Slab Allocation
• Slab terdiri dari satu atau lebih page memory fisik yang berurutan

• Cache terdiri dari satu atau lebih slab

• Satu cache untuk setiap struktur data kernel yang unik

• Setiap cache diisi dengan objek yang merupakan contoh dari struktur data kernel
yang diwakili oleh cache. menyimpan instance objek deskriptor proses, dan
seterusnya.

• Jumlah objek dalam cache bergantung pada ukuran slab terkait.

• objek diberi tanda used, jika sedang digunakan


• Tiga status slab dalam linux
 Full, semua objek dalam slab used
 Empty, semua objek dalam slab free
 Partial, slab terdiri dari objek yang used
dan free

• Keuntungan
 Tidak ada memori yang terbuang karena
fragmentasi.
 Permintaan memori dapat dipenuhi dengan
cepat.
Other Consideration
• Prepaging
• Page Size
• TLB Reach
• Inverted Page Tables
• Program Structure
• I/O Interlock and Page Locking
Prepaging
Mengurangi terjadinya sejumlah page fault yang terjadi saat startup (pure demand paging)

Mengambil semua page yang dibutuhkan dalam sekali waktu sebelum referensi page terjadi

Jika terdapat banyak page yang tidak digunakan, I/O dan memory terbuang
Page Size
Faktor yang menjadi pertimbangan untuk menentukan ukuran page :
• Fragmentasi internal
Ukuran page kecil → mengurangi fragmentasi internal
• Besar page table
Ukuran page kecil → jumlah page bertambah → besar page table
bertambah
• Waktu I/O
I/O overhead (read/write page)
komponen waktu I/O : seek, latency, transfer time
Jika transfer rate = 2mb/s=0.2 ms untuk mentransfer 512 bytes seek
time=20ms, latency time= 8ms
total waktu I/O = 28,2ms ->512bytes
jika 2 page @512 byte butuh waktu I/O 56,4ms
Jika 1 page @1024 byte butuh waktu I/O 28,4ms
• Locality
 Besar proses = 200 kb; yang dieksekusi=100 kb
 Jika ukuran page > 200 Kb, eksekusi parsial (100kb) tidak dapat
dilakukan
 Terdapat page yang tidak digunakan
 Butuh memori besar
 Jika ukuran page < 200 Kb (misal = 1 byte), eksekusi parsial (100kb)
dapat dilakukan
 Keuntungan ukuran page besar: Butuh sedikit memori untuk
menampung page table & waktu I/O sedikit
 Kerugian ukuran page kecil: Page-fault tinggi & overhead
TLB Reach
• TLB Reach, jumlah memory yang dapat diakses melalui TLB
• TLB Reach = (besar TLB ) x (ukuran page)
• Idealnya working set setiap proses disimpan dalam TLB
• Jika tidak, frekuensi akses ke page table lebih tinggi dibanding ke TLB
• Cara meningkatkan TLBReach :
- Menambah ukuran page
- Menggunakan ukuran page yang bervariasi (multiple page size)
Inverted table
Tujuan dari bentuk manajemen halaman ini adalah untuk mengurangi jumlah memori fisik yang
diperlukan untuk melacak terjemahan alamat virtual-to-physical. Tabel yang memiliki satu entri
per halaman memori fisik, diindeks oleh pasangan <process-id, page-number>.
Program Structure
Paging permintaan dirancang agar transparan terhadap program pengguna. Dalam banyak kasus,
pengguna sama sekali tidak menyadari sifat paged memori. Namun, dalam kasus lain, kinerja sistem
dapat ditingkatkan jika pengguna (atau kompiler) memiliki kesadaran akan paging permintaan yang
mendasarinya.

Program 1 Program 2

Menghasilkan kesalahan 128 x 128 = 16.384 Menghasilkan kesalahan 128 halaman


halaman
I/O Interlock and Page Locking

I/O Interlock – Kadang page harus di lock didalam


memory

Page yang digunakan untuk menduplikasi file dari


sebuah device harus di lock agar tidak dikeluarkan
oleh algoritma pergantian page.
Operating System Examples
LINUX

• Linux menggunakan permintaan paging, mengalokasikan halaman dari daftar frame


gratis. Selain itu menggunakan kebijakan penggantian halaman global yang mirip
dengan algoritme jam perkiraan LRU.
• dua jenis daftar halaman:
– Daftar aktif, halaman-halaman yang dianggap digunakan
– Daftar tidak aktif, halaman-halaman yang belum lama ini direferensikan dan
memenuhi syarat untuk diklaim kembali.
• Setiap halaman memiliki bit akses yang diatur setiap kali halaman direferensikan.
• Kedua daftar disimpan dalam keseimbangan relatif, dan ketika daftar aktif tumbuh
jauh lebih besar daripada daftar tidak aktif, halaman di depan daftar aktif pindah ke
daftar tidak aktif, di mana mereka memenuhi syarat untuk reklamasi.
WINDOWS

• Windows 10 mengimplementasikan memori virtual menggunakan permintaan


paging dengan pengelompokan, sebuah strategi yang mengenali lokalitas
referensi memori dan karena itu menangani kesalahan halaman dengan
membawa tidak hanya halaman kesalahan tetapi juga beberapa halaman
sebelum dan setelah halaman kesalahan.
• Komponen kunci dari manajemen memori virtual di Windows 10 adalah
manajemen set kerja.
• Windows menggunakan algoritme jam perkiraan LRU, dengan kombinasi
kebijakan penggantian halaman lokal dan global. Manajer memori virtual
menyimpan daftar bingkai halaman gratis.
SOLARIS

Di Solaris, ketika sebuah utas mengalami kesalahan halaman, kernel menetapkan


sebuah halaman ke utas kesalahan dari daftar halaman bebas yang dipeliharanya.
Oleh karena itu, sangat penting bahwa kernel memiliki cukup memori kosong yang
tersedia.

Proses page out bekerja sebagai berikut: Jarum depan jam memindai semua
halaman dalam memori, menyetel bit referensi ke 0. Kemudian, jarum jam
belakang memeriksa bit referensi untuk halaman memori, menambahkan setiap
halaman yang bit referensinya adalah masih disetel ke 0 untuk daftar gratis dan
menulis isinya ke penyimpanan sekunder jika sudah dimodifikasi. Solaris juga
mengelola kesalahan halaman kecil dengan mengizinkan proses untuk mengklaim
kembali halaman dari daftar gratis jika halaman tersebut diakses sebelum
dipindahkan ke proses lain.
Terima Kasih

Anda mungkin juga menyukai