1. Prinsip Locality

Locality atau lokalitas mengacu pada penggunaan memori berdasarkan tempat atau posisi. Terdapat 2 jenis lokalitas yaitu :

a. Spatial locality

Mengacu pada kecenderungan eksekusi untuk melibatkan beberapa lokasi memori yang berkelompok. Hal ini memperlihatkan kecenderungan dari processor untuk mengakses instruksi secara berurutan. Spatial locality juga memperlihatkan kecenderungan program untuk mengakses data secara berurutan, seperti saat mengakses tabel data.

b. Temporal locality

Mengacu pada kecenderungan processor untuk mengakses lokasi memori yang baru saja dipakai. contohnya yaitu ketika pengulangan proses dieksekusi, processor mengeksekusi instruksi yang sama berulang-ulang.

 

  1. Paging
    Paging adalah sebuah sekema dimana sebuah proses (memori ataupun program) dipecah menjadi bagian – bagian kecil. Dengan menggunakan paging, dapat terjadi fragmentasi internal tetapi tidak terjadi fragmentasi eksternal.
    Sistem operasi menggunakan tabel page untuk mencatat lokasi tempat page di memori, juga mencatat daftar frame yang kosong. Alamat absolut dihitung berdasarkan nomor page dan offset.
    Pada Virtual Memory, proses dapat dieksekusi meski baru memiliki beberapa page saja yang sudah ditaruh di memori, bila page baru dimasukkan ke memori dapat menyebabkan terjadi perpindahan page dari memori ke harddisk.

  • Page Table Structure (PTS)

Prosedur pada PTS :

1.jpg

1. Register menyimpan alamat awal pada tabel page suatu proses

2. Sebuah program membutuhkan data dan mengirimkan sebuah alamat virtual

3. Nomor page pada alamat virtual digunakan sebagai indeks untuk menunjuk nomor frame  gj pada tabel page

4. Nomor frame digabungkan dengan offset pada alamat virtual menjadi alamat fisik

5. Alamat fisik digunakan untuk mengakses bagian program pada memori

 

Jumlah page yang ada biasanya lebih banyak dari pada jumlah frame, sehingga bit untuk page (n) lebih besar dari pada bit untuk frame (m). Karena tabel page dapat berukuran sangat besar, maka tabel page juga mengalami paging. sebagian besar tabel page disimpan di virtual memory dan sebagian kecil disimpan di memori.

  • Inverted Page Table (IPT)

Pada inverted Page Table, nomor page alamat virtual ditaruh di suatu tabel frame berdasarkan fungsi hash, yaitu fungsi yang akan memetakan suatu nilai ke lokasi tertentu di dalam sebuah tabel. Nilai hash menunjuk ke tabel IPT, yang dimana jumlah entri pada IPT adalah sama dengan frame di memori.
Struktur Tabel IPT :2.jpg

• Nomor page = nomor page alamat virtual

• Identitas proses

–ID proses pemilik nomor page tersebut ID proses pemilik nomor page tersebut

• Bit-bit kontrol

Terdiri dari bitbit yang digunakan sebagai tanda: –Terdiri dari bit-bit yang digunakan sebagai tanda:

valid, referenced, modified, protection, dan locking

• Chain pointer:

– Pointer yang menunjuk ke entri lain yang masih

kosong (saat insert data) kosong (saat insert data)

– Pointer yang menunjuk ke entri lain akibat terjadi

overflow (saat baca data) overflow (saat baca data)

 

  • Translation Lookaside Buffer (TLB)

TLB merupakan cache khusus berkecepatan tinggi untuk menyimpan entri tabel page yang sering digunakan, sehingga dapat menutupi kekurangan PTS dan IPT.

Prosedur TLB :

3.jpg

• Suatu program minta data/program dengan mengirimkan alamat virtual

• Prosesor mencari page# yang diminta pada TLB

• Jika page# yang diminta ada pada TLB, maka terjadi TLB hit. Frame# diambil dari TLB untuk membentuk alamat fisik

• Bila terjadi TLB miss, prosesor mencari page# yang diminta pada tabel page

• Jika page#yang diminta ada pada tabel page, maka frame# diambil dari tabel page untuk membentuk alamat fisik

• Page# yang baru saja diambil disimpan juga di TLB (diupdate)

• Jika page# tidak ada di tabel page (page fault atau tidak ada di memori), maka dilakukan pencarian data ke harddisk )

• Alamat fisik digunakan untuk mengambil data pada memori

 

  1. Ukuran Page

Ukuran pada page dapat berubah – ubah dikarenakan beberapa hal seperti ukuran memori yang digunakan cendrung semakin besar, ukuran program yang cendrung membesar, dan program yang kompleks.

 

Apa akibatnya jika ukuran page semakin kecil ?

(+) Fragmentasi internal semakin kecil

(-) Jumlah page yang diperlukan oleh suatu proses semakin banyak

(-) Ukuran tabel page semakin besar

(-) Ruang memori yang diperlukan untuk menyimpan tabel page semakin besar

(-) Dapat terjadi page fault dua kali

(-)Transfer data dari memori sekunder ke memori tidak efisien, jika ukuran blok data di harddisk jauh lebih besar daripada ukuran page

 

Jika ukuran page semakin besar maka kebalikan dari yang sudah disebutkan diatas.

 

  1. Segmentasi

 

Segmentasi merupakan skema manajemen memori yang mendukung cara pandang seorang programmer terhadap memori. Ruang alamat logika merupakan sekumpulan dari segmen-segmen. Masing-masing segment mempunyai panjang dan nama. Alamat diartikan sebagai nama segmen dan offset dalam suatu segmen. Jadi jika seorang pengguna ingin menunjuk sebuah alamat dapat dilakukan dengan menunjuk nama segmen dan offsetnya. Untuk lebih menyederhanakan implementasi, segmen-segmen diberi nomor yang digunakan sebagai pengganti nama segment.

 

Secara sederhana segmentasi bisa diartikan sebagai suatu ruang alamat atau segment yang berada di memori. Segment-segment itu dalam keadaan independent. Setiap segment berisi alamat 0 sampai maksimum secara linier. Panjang setiap segment berbeda-beda sampai panjang maksimun, perubahan panjang segment terjadi selama proses eksekusi.

 

Segment stack bertambah ketika terjadi operasi push dan turun saat operasi pop, dimana setiap segment merupakan ruang alamat terpisah segment-segment dapat tumbuh dan mengkerut secara bebas tanpa mempengaruhi yang lain.

 

Alamat terdiri dari dua bagian pada memori bersegment yaitu :

1. Nomor segment

2. Alamat pada segment ( offset ).

 

User’s View of a Program

Logical View of Segmentation

 

Segmentation Hardware

 

Example of Segmentation

Logical to Physical Address Translation in Pentium

Intel Pentium Segmentation

 

  1. Kombinasi Paging dan Segmentasi

 

Teknik kombinasi paging dan segmentasi adalah ruang alamat pemakai dibagi menjadi sejumlah segment sesuai dengan kehendak pemrogram. Segment tersebut dibagi menjadi sejumlah page berukuran tetap dan berukuran sama dengan page frame memori utama. Jika segment kurang dari ukuran page, maka segnent hanya memerlukan satu page.

 

Dari segi pandangan pemrogram, alamat maya masih berisi nomor segment dan offset di segment itu. Dari segi pandangan sistem, offset segment dipandang sebagai nomor page dan offset page untuk page di segment yang dispesifiksikan. Penggabungan dengan proses adalah tabel segment dan sejumlah tabel page, merupakan satu tabel persegment proses.

 

Saat proses running, register menyimpan alamat awal tabel segment untuk proses, pemroses menggunakan bagian nomor segment untuk mengindeks tabel segment proses guna menemukan tabel page untuk segment. Bagian angka page alamat maya digunakan untuk indeks tabel page dan mencari nomor page korespondensi. Angka tersebut kemudian dikombinasikan dengan bagian offset alamat maya untuk menghasilkan alamat nyata yang diinginkan.

 

Sistem paging dan segmentasi mempunyai keunggulan dan kelemahan masing-masing. Sistem paging transparan bagi pemrogram, mengeliminasi fragmentasi ekstenal, penggunaan memori utama yang efisien.. Karena potongan-potongan yang di pindahkan masuk dan keluar memori utama berukuran sama, maka dimungkinkan mengembangkan algoritma menajemen memori yang memanfaatkan kelakuan program.

 

Pada kombinasi paging dan segmentasi, ruang alamat pemakai dibagi menjadi sejumlah segmen sesuai kehendak pemrogram. Tiap segmen dibagi menjadi sejumlah page berukuran tetap, berukuran sama dengan page frame memori utama. Jika segmen kurang dari ukuran page, segmen hanya memerlukan satu page. Dari pandangan pemrogram, alamat maya masih berisi nomor segmen dan offset di segmen itu. Dari pandangan system, offset segmen dipandang sebagai nomor page dan offset page untuk page di segmen yang dispesifikasikan.

  1. Proteksi dan Sharing

 

Dengan dilakukannya pengelompokan antara segmen-segmen yang sama, maka

pemeliharaan dari segmen tersebut dapat menjadi lebih mudah, walau pun didalam segmen tersebut sebagian berisi instruksi dan sebagian lagi berisi data. Dalam arsitektur modern, instruksi-instruksi yang digunakan tidak dapat diubah tanpa campur tangan pengguna, oleh karena itu, segmen yang berisi instruksi dapat diberi label read only atau hanya dapat dijalankan saja. Perangkat keras yang bertugas untuk melakukan pemetaan ke memori fisik akan melakukan pemeriksaan terhadap bit proteksi yang terdapat pada segmen, sehingga pengaksesan memori secara ilegal dapat dihindari, seperti suatu usaha untuk menulis ke area yang berstatus tidak boleh dimodifikasi.

 

Keuntungan lain dari segmentasi adalah menyangkut masalah pembagian penggunaan kode atau data. Setiap proses mempunyai tabel segmennya sendiri, dimana ini akan digunakan oleh dispatcher untuk menentukan tabel segmen dari perangkat keras yang mana akan digunakan ketika proses yang bersangkutan di eksekusi oleh CPU. Segmen akan berbagi ketika anggota dari elemen tabel segmen yang berasal dari dua proses yang berbeda menunjuk ke lokasi fisik yang sama. Pembagian tersebut terjadi pada level segmen, maka, informasi apa pun dapat dibagi jika didefinisikan pada level segmen. Bahkan beberapa segmen pun dapat berbagi, sehingga sebuah program yang terdiri dari beberapa segmen pun dapat saling berbagi pakai.

 

Referensi: