Virtual memory, paging, dan segmentasi
| English | Bahasa Indonesia |
|---|---|
| pages/ˈpeɪdʒɪz/ | halaman |
| paging/ˈpeɪdʒɪŋ/ | paging |
| segmentation/ˌseɡmənˈteɪʃn/ | segmentasi |
| virtual address space/ˈvɜːtʃuːəl əˈdres speɪs/ | ruang alamat virtual |
| frames/freɪmz/ | bingkai |
| page table/peɪdʒ ˈteɪbl/ | tabel halaman |
| page fault/peɪdʒ fɒlt/ | fault halaman |
| swap file/swɒp faɪl/ | file swap |
| thrashing/ˈθræʃɪŋ/ | thrashing |
Lampu disk yang menandakan komputer telah menyerah
- Membuka terlalu banyak aplikasi pada mesin yang kekurangan memori akan menyebabkan hal yang khas terjadi. Semua proses melambat hampir berhenti, dan lampu disk berhenti berkedip serta tetap menyala.
- Prosesor tidak sibuk. Ia sedang menunggu, karena memori yang dibutuhkan setiap program berada di disk, dan mengambil satu halaman (page) menggeser halaman lain yang diperlukan sesaat kemudian.
- Mesin tidak melakukan apa-apa selain memindahkan halaman. Mesin memiliki cukup pekerjaan dan cukup memori untuk melakukan keduanya, namun tetap tidak bisa.
- Pelajaran ini adalah memori virtual, bagaimana paging dan segmentasi menyediakannya, dan bagaimana mekanisme yang sama yang membuat memori terlihat lebih besar juga dapat membuat mesin menjadi tidak berguna.
Ruang alamat virtual
- Setiap proses mendapatkan ruang alamat virtual-nya sendiri: rentang alamat bersih dan berurutan yang dimulai dari nol, yang OS peta ke mana pun data sebenarnya berada.
- Tiga hal berikut muncul. Setiap proses melihat ruang pribadi sederhana dan tidak perlu tahu apa lagi yang berjalan. Proses-proses terlindungi satu sama lain, karena satu proses tidak dapat menyebutkan alamat dalam ruang proses lain. Dan total memori yang digunakan dapat melebihi RAM fisik, karena sebagian darinya hidup di disk.
- Isolasi itu adalah batas keamanan autant juga sebagai kenyamanan.
Manfaat virtual memory adalah bahwa ia:
Virtual memory memberi setiap proses ruang pribadi dan memungkinkan working set melebihi RAM terpasang dengan menggunakan disk.
Apa yang dicapai dengan memberi setiap proses ruang alamat virtual? Pilih semua yang berlaku.
Virtual memory membeli kesederhanaan, isolasi, dan kapasitas. Biayanya adalah kecepatan, karena sebagian memori sebenarnya ada di disk.
Paging
- Ruang virtual dibagi menjadi halaman dengan ukuran tetap; memori fisik menjadi bingkai (frame) dengan ukuran yang sama. Tabel halaman mencatat bingkai mana yang saat ini menyimpan setiap halaman.
- Ketika sebuah proses menggunakan alamat, perangkat keras mencari halaman dalam tabel dan menemukan bingkainya. Jika halaman tersebut tidak ada di RAM, itu disebut kesalahan halaman (page fault).
- Pada kesalahan halaman, OS membaca halaman dari file swap di disk ke dalam bingkai bebas. Jika tidak ada bingkai bebas, OS harus terlebih dahulu menggeser (evict) sebuah halaman, menuliskannya kembali ke disk jika telah diubah.

Halaman dan bingkai berukuran sama, disatukan oleh tabel
Dalam paging, memori dibagi menjadi:
Paging menggunakan halaman dan bingkai berukuran tetap, yang dihubungkan oleh tabel halaman. (Ukuran variabel adalah segmentasi.)
Kesalahan halaman terjadi ketika:
Halaman yang diakses tidak berada di bingkai, sehingga OS mengambilnya dari file swap (mengeluarkan halaman lain jika diperlukan).
Contoh terpecahkan: apa yang terjadi pada kesalahan halaman
- Sebuah proses mengakses alamat yang halamannya tidak ada di RAM. Jelaskan apa yang dilakukan OS. [4]
- Perangkat keras mendeteksi bahwa halaman tersebut tidak ada dan memicu interupsi kesalahan halaman, dan proses tersebut diblokir.
- OS mencari bingkai bebas; jika tidak ada, OS memilih halaman untuk diganti, dan menuliskannya kembali ke file swap jika telah dimodifikasi.
- OS membaca halaman yang diperlukan dari file swap ke bingkai tersebut dan memperbarui tabel halaman.
- Proses dikembalikan ke keadaan siap dan instruksi dicoba ulang. Empat langkah, empat nilai, dan perhatikan bahwa proses tersebut diblokir sepanjang waktu.
Apa yang terjadi pada page fault
Langkah demi langkah page fault. Ketika program mengakses halaman yang tidak ada di RAM, OS diam-diam mengambilnya dari disk dan memperbarui tabel halaman — sehingga program melihat memori lebih besar daripada fisik yang tersedia.
Urutkan respons OS terhadap kesalahan halaman.
Deteksi dan blokir, buat ruang, muat, catat, coba ulang. Kesalahan halaman adalah mekanisme normal, bukan error.
Thrashing
- Memilih halaman mana yang diganti penting, karena pilihan yang salah berarti halaman itu akan dibutuhkan lagi segera.
- Ketika RAM terlalu sedikit untuk set kerja proses yang berjalan, hampir setiap akses menyebabkan kesalahan halaman, dan setiap kesalahan menggeser halaman yang diinginkan lagi seketika.
- Sistem kemudian menghabiskan hampir seluruh waktunya menukar halaman alih-alih mengeksekusi instruksi. Itu adalah thrashing, atau thrashing disk, dan merupakan kondisi yang dijelaskan di awal pelajaran ini.
- Pengobatannya adalah RAM lebih banyak, atau proses lebih sedikit; prosesor yang lebih cepat tidak membantu sama sekali, karena prosesor bukanlah hal yang sedang sibuk.
Mesin melambat hampir berhenti dan disk terus beroperasi. Apa yang akan memperbaikinya?
Ini adalah thrashing: hampir setiap akses menyebabkan kesalahan halaman dan prosesor menunggu. Prosesor bukan komponen yang sibuk, jadi mempercepatnya tidak mengubah apa-apa.
Segmentasi
- Segmentasi membagi memori menjadi segmen logis berukuran variabel yang sesuai dengan struktur program itu sendiri: kode, tumpukan (stack), tumpukan data (heap), array data besar.
- Karena segmen adalah unit logis, segmen dapat membawa izin-nya sendiri: segmen kode dapat read-only dan executable, tumpukan read-write dan tidak executable.
- Kontras yang ingin diuji: halaman bersifat ukuran tetap dan tidak memiliki makna bagi program; segmen berukuran variabel dan sesuai dengan bagian-bagian logisnya. Banyak sistem nyata menggabungkan keduanya, paging di dalam segmen.

Segmen adalah bagian-bagian program itu sendiri, bukan irisan yang sama
Cocokkan setiap istilah manajemen memori dengan artinya.
Paging = halaman tetap; segmentasi = unit logis variabel; kesalahan halaman memicu penukaran; terlalu banyak kesalahan = thrashing.
Segmentasi membagi memori menjadi unit logis berukuran variabel (kode, tumpukan, heap), masing-masing dengan izin sendiri, sedangkan paging menggunakan halaman berukuran tetap.
Segment sesuai dengan struktur logis program; halaman adalah blok berukuran tetap seragam — beberapa sistem menggabungkan keduanya.
Berbeda dengan halaman yang ukurannya sama, segmen memiliki ukuran ____ dan sesuai dengan bagian-bagian logis program.
Sebuah segmen adalah kode, tumpukan, atau heap, sehingga dapat membawa izin sendiri. Halaman adalah pembagian fisik yang tidak memiliki makna bagi program.
Contoh terpecahkan: paging melawan segmentasi
- Nyatakan dua perbedaan antara paging dan segmentasi. [2]
- Halaman semuanya berukuran tetap, ditentukan oleh sistem; segmen berukuran variabel, ditentukan oleh bagian-bagian logis program.
- Halaman adalah pembagian murni fisik tanpa makna bagi program; segmen sesuai dengan unit logis seperti kode atau tumpukan, dan dapat diberikan izin aksesnya sendiri.
- Sebuah ketiganya jika diperlukan: paging dapat meninggalkan ruang tak terpakai di dalam halaman terakhir dari alokasi, sementara segmentasi meninggalkan celah ruang yang tidak dapat digunakan di antara segmen.
⟦⟧ Nilai yang sering terlewat
- Memori virtual tidak menciptakan memori. Memori virtual memungkinkan total yang digunakan melebihi RAM fisik dengan menyimpan sebagian darinya di disk, dengan biaya akses disk.
- Kesalahan halaman bukanlah kesalahan. Itu adalah mekanisme normal untuk membawa halaman masuk.
- Thrashing adalah menghabiskan lebih banyak waktu menukar daripada mengeksekusi, dan perbaikannya adalah RAM lebih banyak atau proses lebih sedikit, bukan prosesor yang lebih cepat.
- Ukuran tetap versus ukuran variabel, bermakna secara logis adalah perbedaan antara paging dan segmentasi. Sebutkan kedua sisinya.
Anda telah memahaminya
- Ruang alamat virtual memberikan setiap proses rentang berurutan pribadi, melindungi proses satu sama lain, dan memungkinkan memori yang digunakan melebihi RAM fisik
- Paging: halaman berukuran tetap dipetakan ke bingkai melalui tabel halaman; kesalahan halaman memblokir proses sementara OS menggeser halaman jika perlu, memuat dari file swap, memperbarui tabel, dan mencoba ulang
- Thrashing adalah lebih banyak waktu spent swapping daripada executing; obatilah dengan RAM lebih banyak atau proses lebih sedikit
- segmentasi menggunakan segmen berukuran variabel yang sesuai dengan bagian logis program, masing-masing memiliki izin sendiri; banyak sistem melakukan paging di dalam segmen