Back To IF2130 Sistem Operasi

Topic

Questions/Cues

  • Definisi Paging?
  • Keuntungan Paging?
  • Cara Kerja Dasar Paging? (Frames & Pages)
  • Apa itu Page Table?
  • Masalah Fragmentasi Internal pada Paging?
  • Contoh Kalkulasi Fragmentasi Internal?
  • Trade-off Ukuran Page?
  • Apa itu Frame Table?
  • Dukungan Hardware: PTBR & PTLR?
  • Masalah Kinerja Paging & Solusinya?
  • Apa itu TLB?
  • Cara Kerja TLB (Hit vs. Miss)?
  • Peran ASID di TLB?
  • Apa itu TLB Reach?
  • Proteksi Memori pada Paging?
  • Fungsi Bit Valid-Invalid?
  • Masalah Ukuran Page Table?
  • Struktur: Paging Berjenjang (Hierarchical)?
  • Struktur: Page Table Hash?
  • Struktur: Page Table Terbalik (Inverted)?

Konsep Dasar Paging

Paging adalah sebuah teknik manajemen memori yang mengizinkan ruang alamat fisik sebuah proses untuk bersifat non-kontigu (tidak berdekatan). Ini adalah solusi paling umum untuk mengatasi fragmentasi eksternal.

Keuntungan Paging

  • Menghilangkan Fragmentasi Eksternal: Karena proses dapat ditempatkan di frame fisik mana pun yang tersedia, tidak perlu lagi mencari blok memori kosong yang berdekatan.
  • Menyederhanakan Alokasi: Sistem tidak lagi berurusan dengan “lubang” memori yang ukurannya bervariasi.

Cara Kerja Dasar Paging

  • Memori Fisik (RAM) dibagi menjadi blok-blok berukuran tetap yang disebut Frame.

  • Memori Logis (yang dilihat proses) juga dibagi menjadi blok-blok dengan ukuran yang sama persis, yang disebut Page.

  • Ukuran Page/Frame biasanya merupakan pangkat 2, berkisar antara 512 byte hingga 16 MB.

  • Ketika sebuah proses berukuran N page akan dijalankan, sistem operasi harus mencari N frame kosong di RAM dan memuat page-page tersebut ke dalamnya.

Alamat logis yang dibikin CPU sekarang dibagi jadi dua bagian:

  • Nomor Halaman (p - page number): Bagian depan alamat, dipakai buat nyari di tabel khusus.
  • Offset Halaman (d - page offset): Bagian belakang alamat, nunjukin posisi di dalam halaman itu.

Page Table Buat nerjemahin alamat logis (p, d) jadi alamat fisik (lokasi beneran di RAM), ada tabel khusus namanya page table (tabel halaman). Setiap program punya page table sendiri. Isinya: buat tiap nomor halaman (p) dari program itu, dia disimpan di nomor bingkai (f) mana di RAM. Jadi, MMU bakal:

  1. Ambil nomor halaman (p) dari alamat logis.
  2. Pakai ‘p’ buat nyari di page table dan dapetin nomor bingkai (f) yang sesuai.
  3. Gabungin nomor bingkai (f) itu sama offset (d) dari alamat logis.

Meskipun Paging menyelesaikan fragmentasi eksternal, ia masih menderita fragmentasi internal. Karena alokasi dilakukan per unit frame, jika ukuran proses bukanlah kelipatan pas dari ukuran page, maka frame terakhir yang dialokasikan tidak akan terisi penuh. Ruang sisa di dalam frame terakhir inilah yang menjadi fragmentasi internal. Contoh Kalkulasi Fragmentasi Internal:

  • Ukuran Page/Frame: 2.048 byte.
  • Ukuran Proses: 72.766 byte.
  • Proses membutuhkan 72.766 / 2.048 = 35,53 page. Ini berarti proses akan dialokasikan 36 frame.
  • Memori yang digunakan pada frame terakhir: 72.766 - (35 * 2.048) = 1.086 byte.
  • Fragmentasi Internal: 2.048 (ukuran frame) - 1.086 (yang terpakai) = 962 byte.
  • Rata-rata fragmentasi internal adalah 1/2 ukuran page.

Ukuran page yang kecil mungkin diinginkan untuk mengurangi fragmentasi internal rata-rata. Namun, setiap entri page table membutuhkan memori untuk dilacak, dan overhead ini berkurang seiring bertambahnya ukuran page. Juga, I/O disk lebih efisien ketika jumlah data yang ditransfer lebih besar. Umumnya, ukuran page telah meningkat seiring waktu.

  • Solaris mendukung dua ukuran page: 8 KB dan 4 MB.
  • Pada sistem x86-64, Windows 10 mendukung ukuran page 4 KB dan 2 MB.
  • Linux juga mendukung dua ukuran page: ukuran default (biasanya 4 KB) dan ukuran yang lebih besar yang bergantung pada arsitektur yang disebut huge pages. Ukuran page pada sistem Linux bervariasi tergantung arsitektur.

Frame Table

  • Sistem operasi harus mengetahui detail alokasi memori fisik, seperti frame mana yang dialokasikan, frame mana yang tersedia, dan berapa total frame yang ada.
  • Informasi ini umumnya disimpan dalam struktur data tunggal di seluruh sistem yang disebut frame table.
  • Tabel frame memiliki satu entri untuk setiap frame page fisik, menunjukkan apakah frame tersebut bebas atau dialokasikan, dan jika dialokasikan, ke page proses mana.

OS memelihara salinan page table untuk setiap proses. Salinan ini digunakan oleh OS untuk menerjemahkan alamat logis ke fisik saat OS perlu memetakan alamat logis secara manual. Salinan ini juga digunakan oleh dispatcher CPU untuk menentukan page table perangkat keras ketika sebuah proses akan dialokasikan CPU. Paging dengan page table di memori utama meningkatkan waktu context switch.

Dukungan Perangkat Keras (Hardware Support)

Dukungan Hardware

  • Setiap proses memiliki penunjuk ke page table-nya yang disimpan di Process Control Block (PCB).
  • Page-Table Base Register (PTBR): Register CPU yang menunjuk ke alamat awal dari page table aktif di memori.
  • Page-Table Length Register (PTLR): Register yang menyimpan ukuran page table untuk memvalidasi alamat.

Menyimpan page table di RAM berarti setiap akses memori oleh program memerlukan dua kali akses ke RAM: satu untuk mengambil entri dari page table, dan satu lagi untuk mengakses data itu sendiri. Ini memperlambat sistem secara signifikan. Solusinya adalah TLB.

Translation Look-Aside Buffer (TLB)

  • TLB adalah cache perangkat keras yang kecil dan sangat cepat, bersifat asosiatif, yang menyimpan terjemahan alamat yang baru saja digunakan.
  • TLB ini kayak contekan cepat. Isinya pasangan: nomor page (kunci) dan nomor frame (nilai).
  • Pas mau nerjemahin alamat, komputer cek dulu ke TLB. Kalau ada (ini namanya TLB hit), nomor frame langsung dapat, ngebut!
  • Kalau nomor page-nya tidak ada di TLB (ini namanya TLB miss), baru komputer baca page table yang ada di RAM. Pasangan nomor page dan nomor frame ini terus dimasukin ke TLB.**

Cara Kerja TLB (Hit vs. Miss)

  • Saat CPU menghasilkan alamat logis, perangkat keras pertama-tama memeriksa TLB.
  • TLB Hit: Jika pemetaan page-ke-frame ditemukan di TLB, alamat fisik langsung didapat. Proses ini sangat cepat.
  • TLB Miss: Jika tidak ditemukan, perangkat keras akan mengakses page table di RAM. Setelah pemetaan ditemukan, entri tersebut ditambahkan ke TLB untuk referensi di masa depan (menggantikan entri lama jika TLB penuh).

Address-Space Identifiers (ASID) Beberapa TLB menyimpan ASID, yaitu nomor unik untuk setiap proses. Ini memungkinkan TLB untuk menyimpan entri dari beberapa proses secara bersamaan tanpa tercampur. Tanpa ASID, TLB harus dibersihkan (flushed) setiap kali terjadi context switch.

TLB Reach Jumlah total memori yang dapat diakses melalui entri di TLB. Dihitung sebagai: (Jumlah Entri TLB) x (Ukuran Page). Semakin besar TLB Reach, semakin kecil kemungkinan terjadinya TLB Miss.

Proteksi

** Protection Bit** Proteksi dilakukan dengan bit proteksi yang disimpan di setiap entri page table.

  • Contoh paling umum adalah bit Read/Write. Upaya untuk menulis ke page yang ditandai read-only akan menyebabkan trap ke sistem operasi.
  • Bisa diperluas untuk Read-Only, Read-Write, Execute-Only. Upaya ilegal akan di-trap ke OS.

Valid/Invalid Bit Setiap entri page table juga memiliki bit ini.

  • Valid (1): Menandakan bahwa page tersebut adalah bagian yang sah dari ruang alamat logis proses.
  • Invalid (0): Menandakan page tersebut tidak berada dalam ruang alamat logis proses. Setiap akses ke page yang ditandai invalid akan menyebabkan trap.

Struktur Page Table

Pada sistem 64-bit, ruang alamat logis sangat besar, yang dapat membuat page table linear menjadi luar biasa besar (bisa berukuran Gigabyte atau lebih). Ini tidak praktis.  Satu solusi sederhana adalah membagi page table menjadi unit yang lebih kecil. Ini dapat dicapai dengan:

  • Paging Berjenjang (Hierarchical Paging): Memecah page table menjadi beberapa tingkatan. Alih-alih satu tabel besar, kita membuat “page dari page table”. Misalnya, dalam skema dua tingkat, alamat logis dibagi menjadi tiga: indeks untuk outer page table, indeks untuk inner page table, dan offset. Ini menghemat ruang karena tabel tingkat dalam hanya dibuat jika benar-benar dibutuhkan.
  • Page Table Hash (Hashed Page Tables): Nomor page virtual di-hash ke dalam sebuah hash table. Setiap entri di hash table berisi linked list dari elemen-elemen yang memiliki nilai hash yang sama (untuk menangani kolisi). Efektif untuk ruang alamat yang sparse (tidak semua alamat digunakan).
  • Page Table Terbalik (Inverted Page Tables): Daripada memiliki satu page table per proses, sistem hanya memiliki satu page table untuk seluruh memori fisik. Setiap entri merepresentasikan satu frame fisik dan berisi informasi tentang (proses_ID, nomor_page) yang menempatinya. Ini sangat menghemat memori untuk tabel, tetapi membuat pencarian menjadi lebih lambat karena harus mencari di seluruh tabel untuk menemukan page milik sebuah proses.

Summary

Paging adalah teknik fundamental yang mengatasi fragmentasi eksternal dengan memungkinkan alokasi memori secara non-kontigu, namun memperkenalkan masalah baru yaitu fragmentasi internal dan overhead kinerja karena akses memori ganda. Untuk mengatasi kinerja, perangkat keras menyediakan cache khusus bernama TLB yang mempercepat penerjemahan alamat. Untuk menangani masalah page table yang membengkak pada arsitektur modern, digunakan struktur data canggih seperti Paging Berjenjang (Hierarchical), Page Table Hash, dan Page Table Terbalik (Inverted) yang masing-masing memiliki trade-off antara penggunaan memori dan kecepatan pencarian.