Pertemuan 10
Nama : Ivan Bontor B
Mata Kuliah : Sistem Operasi
Dosen Pengampu : Suhendi, S.Kom, M.Kom
Virtual memory adalah memori sementara yang digunakan komputer untuk menjalankan berbagai program aplikasi ataupun menyimpan data yang membutuhkan memory yang lebih besar dari memory yang telah tersedia (Memory fisik seperti RAM).
Manajemen Memory
Alokasi “space” memori fisik kepada program yang diekesekusi (proses). Pendekatan : Alokasi space sesuai dengan kebutuhan “logical address” => seluruh program berada di memori fisik. Kapasitas memori harus sangat besar untuk mendukung “multiprogramming”.
Programmer dapat membuat program sesuai dengan kemampuan “logical address” (virtual
address) tanpa harus menyusun modul mana yang harus ada di memori. Virtual memory lebih besar daripada memori fisik.
Manfaat Virtual Memory
• Berkurangnya I/O yang dibutuhkan (lalu lintas I/O menjadi rendah). Misal, untuk program
butuh membaca dari disk dan memasukkan dalam memori setiap kali diakses.
• Berkurangnya memori yang dibutuhkan (space menjadi lebih leluasa). Contoh, untuk
program 10 MB tidak seluruh bagian dimasukkn dalam memori. Pesan-pesan error hanya dimasukkan jika terjadi error.
• Meningkatnya respon, sebagai konsekuensi dari menurunyya beban I/O danmemori.
• Bertambahnya jumlah user yang dapat dilayani. Ruang memori yang masih tersedia luas memungkinkan computer untuk menerima lebih banyak permintaan dari user.
Terminologi dalam Virtual Memory
- Virtual Address : Sebuah alamat yang ditujukan / diassign ke lokasi dalam virtual memory untuk memungkinkan lokasi yang dapat diakses seolah-olah itu adalah bagian dari memori utama.
- Virtual Address Space : Penyimpanan virtual yang ditempatkan untuk suatu proses.
- Address Space : Rentang alamat memory yang tersedia untuk ditempati oleh proses
- Real Address : Lokasi aamat penyimpanan di main memory
Konsep Virtual Memory
• Pemisahan antara “user logical memory” (virtual) dengan “physicalmemory”.
• Hanya sebagian kecil dari program yang harus berada di memori untuk eksekusi.
• Terdapat mekanisme untuk melakukan alokasi dan dealokasi page (swapped out dan in) sesuai dengan kebutuhan (referensi program).
Virtual memory dapat diimplementasikan melalui :
• Demand paging
• Demand segmentation
Sistem Paging
- Sistem paging adalah suatu sistem manajemen pada sistem operasi yang mengatur program yang sedang berjalan.
- Metode dasar dari paging adalah dengan memecah memori fisik menjadi blok-blok yang berukuran tertentu yang disebut dengan frame dan memecah memori logika menjadi bok-blok yang berukuran sama dengan frame yang disebut page.
- Untuk mengatasi apabila suatu program lebih besar dibandingkan dengan memori utama adalah dengan konsep overlay dan konsep memori maya(virtual memori).
Konsep Overlay
Implementasi Sistem Paging
Setiap sistem operasi mempunyai metode sendiri untuk menyimpan tabel page. Beberapa sistem operasi mengalokasikan sebuah tabel page untuk setiap proses. Pointer ke tabel page disimpan dengan nilai register lainnya dari PCB. Pada dasarnya terdapat 3 metode yang berbeda untuk implementasi tabel page :
- Tabel page diimplementasikan sebagai kumpulan dari “dedicated” register. Register berupa rangkaian logika berkecepatan sangat tinggi untuk efisiensi translasi alamat paging. Contoh : DEC PDP-11. Alamat terdiri dari 16 bit dan ukuran page 8K. Sehingga tabel page berisi 8 entri yang disimpan pada register. Penggunaan register memenuhi jika tabel page kecil (tidak lebih dari 256 entry).
- Tabel page disimpan pada main memori dan menggunakan page table base register” (PTBR) untuk menunjuk ke tabel page yang disimpan di main memori. Penggunakan memori untuk mengimplementasikan tabel page akan memungkinkan tabel page sangat besar (sekitar 1 juta entry). Perubahan tabel page hanya mengubah PTBR dan menurunkan waktu context-switch. Akan tetapi penggunaan metode ini memperlambat akses memori dengan faktor 2. Hal ini dikarenakan untuk mengakses memori perlu dua langkah : pertama untuk lokasi tabel page dan kedua untuk lokasi alamat fisik yang diperlukan.
- Menggunakan perangkat keras cache yang khusus, kecil dan cepat yang disebut associative register atau translation look-aside buffers (TLBs). Merupakan solusi standar untuk permasalahan penggunaan memori untuk implementasi tabel page. Sekumpulan associative register berupa memori kecepatan tinggi. Setiap register terdiri dari 2 bagian yaitu key dan value. Jika associative register memberikan item, akan dibandingkan dengan semua key secara simultan. Jika item ditemukan nilai yang berhubungan diberikan. Model ini menawarkan pencarian cepat tetapi perangkat keras masih mahal. Jumlah entry pada TLB bervariasi antara 8 s/d 2048.
Perbedaan Page Table dengan Paging
Perbedaannya adalah bahwa paging itu memecah memori fisik menjadi blok-blok yang berukuran tertentu di sebut frame, dan memecah memori logika menjadi blok-blok yang disebut page, seperti di jelaskan dalam point pengertian di atas, Jadi karena ada program yang melebihi memori utama, maka dengan paging ini, dapat di pecah-pecah menjadi beberapa bagian, sehingga program dapat di eksekusi.
Sedangkan tabel page digunakan untuk menerjemahkan memori logika ke memori fisik, dengan perantara MMU (Memory Management Unit), dan pengeksekusian proses akan mencari memori berdasarkan table page ini. Sehingga pada waktu memori logika di pecah-pecah maka dengan tabel page ini akan diterjemahkan dan eksekusi dengan menggunakan tabel tersebut.
Segmentasi
- Segmentasi memungkinkan pemrograman memandang memori sebagai berisi banyak ruang alamat atau segmen. Ruang-ruang alamat itu sepenuhnya independen.
- Tiap segmen berisi barisan linear alamat 0 samapai maksimum. Panjang tiap segmen dapat berbeda sampai panjang segmen maksimum.
- Dengan segmentasi pemrograman tidak berurusan dengan batasan-batasan memori yang disebabkan kapasitas memori utama.
- Panjang segmen dapat berubah selama eksekusi.
- Segmen stack bertambah ketika terjadi operasi push dan turun saat operasi pop. Karena tiap segmen merupakan ruang alamat terpisah, segmen-segmen dapat tumbuh dan mengkerut secara bebas tanpa mempengaruhi lainnya. Jika stack pada segmen tertentu memerlukan ruang alamat lebih besar untuk tumbuh, stack dapat memperolehnya karena tak ada yang ditabraknya diruang alamat itu.
Perbedaan Segmentasi dengan Paging
Ada beberapa perbedaan antara Segmentasi dan Paging diantaranya adalah:
- Segmentasi melibatkan programer (programer perlu tahu teknik yang digunakan), sedangkan dengan paging, programer tidak perlu tahu teknik yang digunakan.
- Pada segmentasi kompilasi dilakukan secara terpisah sedangkan pada paging, kompilasinya tidak terpisah.
- Pada segmentasi proteksinya terpisah sedangkan pada paging proteksinya tidak terpisah.
- Pada segmentasi ada shared code sedangkan pada paging tidak ada shared code.
- Pada segmentasi terdapat banyak ruang alamat linier sedangkan pada paging hanya terdapat satu ruang alamat linier.
- Pada segmentasi prosedur dan data dapat dibedakan dan diproteksi terpisah sedangkan pada paging prosedur dan data tidak dapat dibedakan dan diproteksi terpisah.
- Pada segmentasi pengubahan ukuran tabel dapat dilakukan dengan mudah sedangkan pada Paging pengubahan ukuran tabel tidak dapat dilakukan dengan mudah.
- Segmentasi digunakan untuk mengizinkan program dan data dapat dipecahkan jadi ruang alamat mandiri dan juga untuk mendukung sharing dan proteksi sedangkan paging digunakan untuk mendapatkan ruang alamat linier yang besar tanpa perlu membeli memori fisik lebih.