Anda di halaman 1dari 69

CRITICAL BOOK REPORT

SISTEM OPERASI KOMPUTER


“Manajemen Memori”

Disusunoleh

Setia Antika br. Gultom 5203151025


PTIK Kelas B 2020

DosenPengampu : RessyDwiTias Sari, S.T., M.T.I

PENDIDIKAN TEKNOLOGI INFORMATIKA


DANKOMPUTER
FAKULTAS TEKNIK
UNIVERSITAS NEGERI MEDAN
2020
KATA PENGANTAR

Puji syukur saya panjatkan atas kehadirat Tuhan Yang Maha Esa, yang telah
memberikan kesehatan dan karunia yang dilimpahkan-Nya kepada saya, sehingga saya
dapat menyelesaikan tugas ini.

Ada pun yang menjadi judul tugas saya adalah “Manajemen Memori”. Tugas
Critical Book Report ini disusun dengan harapan dapat menambah pengetahuan dan
wawasan kita semua khususnya dalam hal penginderaan jauh.

Jika dalam penulisan makalah saya terdapat berbagai kesalahan dan kekurangan
dalam penulisannya, maka kepada para pembaca, saya memohon maaf sebesar-besarnya
atas koreksi-koreksi yang telah dilakukan. Hal tersebut semata-mata agar menjadi suatu
evaluasi dalam pembuatan tugas ini.

Mudah-mudahan dengan adanya pembuatan tugas ini dapat memberikan


manfaat berupa ilmu pengetahuan yang baik bagi penulis maupun bagi para pembaca.

Medan,06 Oktober 2020

Setia Antika Br. Gultom

i
DAFTAR ISI

KATA PENGANTAR ………………………………………………………. i

DAFTAR ISI ………………………………………………………………… ii

BAB I. PENDAHULUAN

A. Latar Belakang …………………………………………………………....1


B. Tujuan …………………………………………………………………….1
C. Manfaat …………………………………………………………………...1

BAB II. ISI BUKU

A. Isi Buku 1
MANAJEMEN MEMORI…………………………………………….. 2
3.1 NO MEMORI ABSTRAKSI……………………………………… 3
3.2 A MEMORI ABSTRAK: RUANG ALAMAT…………………... 5
3.3 MEMORI VIRTUAL……………………………………………… 8
3.4 ALGORITMA PENGGANTIAN HALAMAN………………….. 14
3.5 ISU DESAIN UNTUK SISTEM PAGING………………………. 19
3.6 MASALAH IMPLEMENTASI…………………………………… 24
3.7 SEGMENTASI……………………………………………………... 28
3.8 PENELITIAN MANAJEMEN MEMORI………………………... 31
B. Isi Buku 2
8. Memori utama……………………………………………………… 32
8.1. Perangkat Keras Dasar…………………………………………... 32
8.2 Bertukar……………………………………………………………. 35
8.3 Alokasi Memori Bersebelahan……………………………………. 37
8.4 Segmentasi………………………………………………………….. 39
8.5 Paging………………………………………………………………. 41

ii
8.6 Struktur Tabel Halaman……………………………………… 43
8.7 Contoh: Arsitektur Intel 32 dan 64-bit………………………. 44
8.8 Contoh: Arsitektur ARM……………………………………... 45
8.9 Ringkasan……………………………………………………… 45
9. Virtual Penyimpanan…………………………………………... 47
9.1 Memori Virtual………………………………………………... 47
9.2 Demand Paging……………………………………………….. 48
9.3 Salin-saat-Tulis……………………………………………….. 50
9.4 Penggantian Halaman……………………………………….... 50
9.5 Alokasi Bingkai………………………………………………... 55
9.6 Meronta-ronta………………………………………………..... 57
9.7 File yang Dipetakan Memori………………………………..... 58
9.8 Mengalokasikan Memori Kernel…………………………….. 59
9.9 Pertimbangan Lainnya……………………………………….. 61
9.10 Contoh Sistem Operasi…………………………………........ 62
9.11 Ringkasan……………………………………………………. 63

BAB III. RINGKASAN

A. Analisis Buku Utama ………………………………………………….. 64


B. Analisis Buku Pembanding ……………………………………………. 64

BAB IV. PENUTUP

A. Kesimpulan ……………………………………………………………... 65
B. Saran …………………………………………………………………….. 65

iii
BAB I

PENDAHULUAN

A. LATAR BELAKANG
Sistem Operasi adalah perangkat lunak sistem yang bertugas unuk melakukan
kontrol dan manajemen perangkat keras serta operasi-operasi dasar sistem,
termasuk menjalankan perangkat lunak aplikasi seperti program-program
pengolah kata dan peramban web. Secara umum, sistem Operasi adalah
perangkat lunak pada lapisan pertama yang ditempatkan pada memori komputer
pada saat komputer dinyalakan booting. Sedangkan software-software lainnya
dijalankan setelah sistem Operasi berjalan, dan Sistem Operasi akan melakukan
layanan inti untuk software-software itu. Layanan inti tersebut seperti akses ke
disk, manajemen memori, penjadwalan tugas schedule task, dan antar-muka user
GUI/CLI. Sehingga masing-masing software tidak perlu lagi melakukan tugas-
tugas ini umum tersebut, karena dapat dilayanin dan dilakukan oleh Sistem
Operasi. Bagian kode yang melakukan tugas-tugas inti dan umum tersebut
dinamakan “karnel” suatu Sistem Operasi.
B. TUJUAN
1. Mengetahui bagaimana konsep dasar Manajemen Memori pada System
Operasi
2. Lebih mengenal komponen-komponen yang terdapat dalam Manajemen
Memori pada System Operasi
C. MANFAAT CBR
Saya berharap dengan adanya critical book report ini, mampu memberikan
tambahan ilmu mengenai sistem manajemen memori. Khususnya bagi saya
sendiri dan bagi para pembaca.

1
BAB II

ISI BUKU

A. Buku utama

MANAJEMEN MEMORI

Memori utama (RAM) merupakan sumber daya penting yang harus sangat hati-
hati dikelola. Sedangkan rata-rata komputer rumahan saat ini sudah 10.000 kali lebih
banyak memori daripada IBM 7094, komputer terbesar di dunia pada awal 1960-an,
program menjadi lebih besar lebih cepat dari memori. Untuk memparafrasekan Hukum
Parkinson,”Program berkembang untuk mengisi memori yang tersedia untuk
menampung mereka”. Dalam bab ini kitaakan mempelajari bagaimana sistem operasi
membuat abstraksi dari memori dan bagaimana mereka kelola mereka. Yang diinginkan
setiap programmer adalah pribadi, besar tak terhingga, cepat tak terhingga memori yang

2
juga nonvolatile, yaitu tidak kehilangan isinya saat dialiri listrik daya dimatikan. Ini
adalah tugas sistem operasi untuk mengabstraksi hierarki ini menjadi berguna model
dan kemudian kelola abstraksi. Bagian dari sistem operasi yang mengelola (bagian dari)
hierarki memori disebut manajer memori . Tugasnya adalah mengelola memori secara
efisien: simpan melacak bagian mana dari memori yang digunakan, mengalokasikan
memori ke proses kapan mereka membutuhkannya, dan mengalokasikannya setelah
selesai.
Abstraksi untuk, dan pengelolaan, penyimpanan permanen — disk — adalah
subjek dari bab berikutnya. Pertama-tama kita akan melihat skema yang paling
sederhana dan kemudian secara bertahap berkembang menjadi lebih banyak dan lebih
rumit.
3.1 NO MEMORI ABSTRAKSI
Abstraksi memori yang paling sederhana adalah tidak memiliki abstraksi sama
sekali. Utama awal komputer bingkai (sebelum 1960), komputer mini awal (sebelum
1970), dan perkomputer pribadi (sebelum 1980) tidak memiliki abstraksi
memori. Setiap program sederhana melihat memori fisik. Ketika sebuah program
menjalankan instruksi seperti MOV REGISTER1, 1000 komputer baru saja
memindahkan isi 1000 lokasi memori fisik ke REGISTER1 . Dengan demikian, model
memori yang disajikan kepada pemrogram hanyalah fisik-memori ical, satu set alamat
dari 0 hingga beberapa maksimum, setiap alamat sesuai genangan ke sel yang berisi
sejumlah bit, biasanya delapan. Dalam kondisi ini, tidak mungkin untuk menjalankan
dua program memori pada saat bersamaan. Jika program pertama menulis nilai baru ke,
katakanlah, lokasi 2000, ini akan menghapus nilai apa pun yang disimpan program
kedua di sana.
Tiga variasi . Sistem operasinya mungkin di bagian bawah memori dalam RAM
(Random Access Memory), ), atau mungkin dalam ROM (Read-Only Memory) di
bagian atas memori, ), atau driver perangkat mungkin berada di bagian atas memori di
ROM dan sisa sistem dalam RAM di bawah. Pertama Model ini sebelumnya digunakan
pada mainframe dan minicomputer tetapi jarang digunakan lebih. Model kedua
digunakan pada beberapa komputer genggam dan sistem tertanam tems. Model ketiga
digunakan oleh komputer pribadi awal (misalnya, menjalankan MS-DOS), dimana porsi

3
sistem di ROM disebut dengan BIOS (Basic Input Sistem Keluaran). Salah satu cara
untuk mendapatkan beberapa paralelisme dalam sistem tanpa abstraksi memori adalah
dengan program dengan banyak utas. Karena semua utas dalam proses seharusnya
melihat gambar memori yang sama, fakta bahwa mereka dipaksa bukanlah masalah.
Sementara ide ini bekerja, itu adalah penggunaan terbatas karena apa yang orang
sering inginkan adalah tidak berhubungan program agar berjalan pada saat yang sama,
sesuatu yang tidak dimiliki oleh abstraksi utas menyediakan. Selain itu, sistem apa pun
yang begitu primitif tidak menyediakan memori
abstraksi tidak mungkin menyediakan abstraksi utas.
Menjalankan Banyak Program Tanpa Abstraksi Memori
Apa yang harus dilakukan oleh sistem operasi adalah menyimpan seluruh
kontrak. tenda memori ke file disk, lalu bawa dan jalankan program berikutnya. Selama
hanya ada satu program dalam satu waktu dalam memori, tidak ada konflik. Konsep ini
(swapping) akan dibahas di bawah.
Dengan tambahan beberapa perangkat keras khusus, dimungkinkan untuk
menjalankan beberapa program secara bersamaan, bahkan tanpa ditukar. Model awal
IBM 360 memecahkan masalah sebagai berikut. Memori dibagi menjadi 2-KB blok dan
masing-masing diberi kunci perlindungan 4-bit yang disimpan di register khusus di
dalam CPU. A machine dengan memori 1-MB hanya membutuhkan 512 dari register 4-
bit ini dengan total Penyimpanan kunci 256 byte. PSW (Program Status Word) juga
berisi 4-bit kunci. Perangkat keras 360 terjebak setiap upaya oleh proses yang sedang
berjalan untuk mengakses memory dengan kode proteksi yang berbeda dari kunci
PSW.
Perangkat seperti radio, mesin cuci, dan oven microwave semuanya penuh
perangkat lunak (dalam ROM) hari ini, dan dalam banyak kasus perangkat lunak alamat
absomemori kecapi. Ini berfungsi karena semua program diketahui sebelumnya dan
pengguna tidak bebas menjalankan perangkat lunak mereka sendiri di pemanggang roti
mereka. Sementara sistem tertanam kelas atas (seperti smartphone) memiliki operasi
yang rumit sistem yang lebih sederhana tidak. Dalam beberapa kasus, ada sistem
operasi, tetapi itu hanya pustaka yang terhubung dengan program aplikasi dan
menyediakan sistem panggilan untuk melakukan I / O dan tugas umum

4
lainnya. Sistem operasi e-Cos adalah contoh umum dari sistem operasi sebagai
perpustakaan.
3.2 A MEMORI ABSTRAK: RUANG ALAMAT
Secara keseluruhan, mengekspos memori fisik ke proses memiliki beberapa
daya tarik utama punggung. Pertama, jika program pengguna dapat menangani setiap
byte memori, mereka dapat dengan mudah membuang sistem operasi, dengan sengaja
atau tidak sengaja, membawa sistem ke agrinding berhenti (kecuali jika ada perangkat
keras khusus seperti kunci-dan-kunci IBM 360
skema). Masalah ini ada bahkan jika hanya satu program pengguna (aplikasi) yang
dijalankanning. Kedua, dengan model ini, sulit untuk menjalankan banyak program
sekali (bergiliran, jika hanya ada satu CPU). Di komputer pribadi, ini common untuk
membuka beberapa program sekaligus (pengolah kata, program email, file Browser
web), salah satunya memiliki fokus saat ini, tetapi yang lainnya aktifvated di klik
mouse. Karena situasi ini sulit dicapai bila ada
ada abstraksi dari ingatan fisik, sesuatu harus dilakukan.
3.2.1 Arti dari Address Space
Solusi yang lebih baik adalah menemukan abstraksi baru untuk memori: ruang
alamat.Sama seperti konsep proses menciptakan semacam CPU abstrak untuk
menjalankan program, iklan ruang pakaian menciptakan semacam memori abstrak
untuk program tinggal masuk Sebuah alamat space adalah himpunan alamat yang dapat
digunakan proses untuk mengalamatkan memori. Setiap prosesess memiliki ruang
alamatnya sendiri, tidak tergantung pada alamat yang dimiliki oleh proses lain(kecuali
dalam beberapa keadaan khusus di mana proses ingin membagikan alamatnya
spasi).
Konsep address space sangat umum dan terjadi dalam banyak konteks.
Pertimbangkan nomor telepon. Dengan pertumbuhan smartphone, modem, dan mesin
faks, ruang ini menjadi terlalu kecil, dalam hal ini lebih banyak digit harus
digunakan. Ruang alamat untuk port I / O di x86 berjalan dari 0 hingga 16383. Alamat
IPv4 adalah angka 32-bit, sehingga ruang alamatnya berjalan dari 0 sampai 2 32 - 1
(sekali lagi, dengan beberapa nomor yang telah dipesan). Ruang alamat tidak harus
berupa angka. Kumpulan domain .com Internet adalah juga ruang alamat. Ruang alamat

5
ini terdiri dari semua string dengan panjang 2 hingga 63 karakter yang dapat dibuat
menggunakan huruf, angka, dan tanda hubung, diikuti dengan.com . Sekarang Anda
harus mendapatkan idenya. Ini cukup sederhana.
Register Dasar dan Batas
Solusi sederhana ini menggunakan versi relokasi dinamis yang sangat
sederhana . Apa yang dilakukannya adalah memetakan ruang alamat setiap proses ke
bagian fisik yang berbeda memori dengan cara yang sederhana. Solusi klasik, yang
digunakan pada mesin mulai dari CDC 6600 (superkomputer pertama di dunia) hingga
Intel 8088 (the inti dari PC IBM asli), adalah melengkapi setiap CPU dengan dua
perangkat keras khusus register, biasanya disebut register basis dan batas.
3.2.2 Bertukar
Jika memori fisik komputer cukup besar untuk menampung semua proses,
skema yang dijelaskan sejauh ini akan lebih atau kurang berhasil. Namun dalam
praktiknya, total Jumlah RAM yang dibutuhkan oleh semua proses seringkali lebih dari
yang dapat ditampung Penyimpanan. Pada sistem Windows, OS X, atau Linux biasa,
sekitar 50–100.
Dua pendekatan umum untuk menangani kelebihan memori telah
dikembangkan. oped selama bertahun-tahun. Strategi paling sederhana, yang
disebut swapping , terdiri dari mendatangkan setiap proses secara keseluruhan,
menjalankannya sebentar, lalu meletakkannya kembali di disk. Proses idle sebagian
besar disimpan di disk, sehingga tidak memakan memori apa pun saat mereka tidak
berlari (meskipun beberapa dari mereka bangun secara berkala untuk melakukan
pekerjaan mereka, lalu tidur lagi). Strategi lain, yang disebut memori virtual ,
memungkinkan program untuk dijalankan meskipun hanya sebagian di memori
utama. Di bawah ini kami akan melakukannya belajar bertukar; di Sec. 3.3 kita akan
memeriksa memori virtual.
Saat bertukar membuat banyak lubang di memori, dimungkinkan untuk
menggabungkan semuanya menjadi satu dengan memindahkan semua proses ke bawah
sejauh mungkin. Teknik ini dikenal sebagai pemadatan memori . Biasanya tidak
dilakukan karena itu membutuhkan banyak waktu CPU. Jika proses dibuat dengan tetap

6
ukuran yang tidak pernah berubah, maka alokasinya sederhana: sistem operasi allo-
menjelaskan dengan tepat apa yang dibutuhkan, tidak lebih dan tidak kurang.
Jika sebuah lubang berdekatan dengan proses, itu bisa jadi dialokasikan dan
proses dibiarkan tumbuh ke dalam lubang. Di sisi lain, jika file Proses ini bersebelahan
dengan proses lain, proses pertumbuhan harus dilakukan dipindahkan ke lubang dalam
memori yang cukup besar untuk itu, atau satu atau lebih proses akan memilikinya untuk
ditukar untuk membuat lubang yang cukup besar. Jika suatu proses tidak dapat tumbuh
dalam anggota ory dan area swap pada disk sudah penuh, prosesnya harus ditangguhkan
sampai beberapa ruang dibebaskan (atau bisa dimatikan).
3.2.3 Mengelola Memori Bebas
Ketika memori ditetapkan secara dinamis, sistem operasi harus mengelolanya.
Secara umum, ada dua cara untuk melacak penggunaan memori: bitmap dan daftar
gratis. Pada bagian ini dan selanjutnya kita akan melihat dua metode ini.
Manajemen Memori dengan Bitmap
Dengan bitmap, memori dibagi menjadi unit alokasi sekecil beberapa kata dan sebesar
beberapa kilobyte. Sedikit terkait dengan setiap unit alokasi bitmap, yaitu 0 jika unitnya
gratis dan 1 jika sudah ditempati (atau sebaliknya). Araure 3-6 menunjukkan bagian
memori dan bitmap yang sesuai. Jika al-unit lokasi dipilih besar, bitmap akan lebih
kecil, tetapi memori cukup besar mungkin terbuang percuma di unit terakhir dari proses
jika ukuran proses bukan multipel tip dari unit alokasi.
Bitmap menyediakan cara sederhana untuk melacak kata-kata memori secara
tetap jumlah memori karena ukuran bitmap hanya bergantung pada ukurannya memori
dan ukuran unit alokasi. Masalah utamanya adalah saat itu terjadi telah diputuskan
untuk membawa proses k -unit ke dalam memori, pengelola memori harus cari bitmap
untuk menemukan rangkaian k berturut-turut 0 bit di peta. Mencari sedikit map untuk
lari dengan panjang tertentu adalah operasi yang lambat (karena lari mungkin
mengangkang batas kata di peta); ini adalah argumen yang menentang bitmap.
Manajemen Memori dengan Daftar Terkait
Cara lain untuk melacak memori adalah dengan mempertahankan daftar alo-
segmen memori bebas dan kated, di mana segmen berisi proses atau sedang

7
lubang kosong antara dua proses. Proses pengakhiran biasanya memiliki dua tetangga
(kecuali bila itu ada di bagian paling atas atau bawah memori). Karena slot tabel proses
untuk proses penghentian biasanya akan mengarah ke entri daftar untuk proses itu
sendiri, mungkin lebih mudah untuk memiliki daftar sebagai daftar tertaut ganda.
Struktur ini membuatnya lebih mudah untuk menemukan entri sebelumnya dan untuk
melihat apakah penggabungan dimungkinkan.
3.3 MEMORI VIRTUAL
Sedangkan register basis dan batas dapat digunakan untuk membuat abstraksi
alamat spasi, ada masalah lain yang harus dipecahkan: mengelola bloatware. Sementara
ukuran memori meningkat dengan cepat, ukuran perangkat lunak meningkat lebih
cepat. Di 1980-an, banyak universitas menjalankan sistem berbagi waktu dengan
lusinan (lebih-atau-kurang puas) pengguna yang berjalan secara bersamaan pada VAX
4-MB. Sekarang Microsoft merekomendasikan mends memiliki minimal 2 GB untuk
64-bit Windows 8. Tren multimedia menempatkan lebih banyak tuntutan pada memori.
Swapping bukanlah pilihan yang menarik, karena disk SATA tipikal memiliki
kecepatan transfer puncak beberapa ratus MB / detik, yang berarti perlu beberapa detik
untuk menukar program 1 GB dan program yang sama untuk ditukar program 1 GB.
Solusi yang diadopsi pada 1960-an adalah dengan membagi program menjadi potongan-
potongan kecil, disebut overlay . Ketika sebuah program dimulai, semua yang dimuat
ke dalam memori adalah file manajer overlay, yang langsung memuat dan menjalankan
overlay 0. Setelah selesai, ini akan memberi tahu pengelola overlay untuk memuat
overlay 1, baik di atas overlay 0 dalam memory (jika ada ruang untuk itu) atau di atas
hamparan 0 (jika tidak ada spasi).
Metode yang dirancang (Fotheringham, 1961) kemudian dikenal sebagai
memori virtual . Ide dasar di balik memori virtual adalah bahwa setiap program
memiliki ruang alamatnya sendiri, yang dipecah menjadi beberapa bagian yang
disebut halaman . Setiap halaman rentang alamat yang berdekatan. Halaman-halaman
ini dipetakan ke memori fisik, tetapi tidak semua halaman harus dalam memori fisik
pada saat yang sama untuk menjalankan program. Memori virtual berfungsi dengan baik
dalam sistem multiprogramming, dengan bit dan potongan dari banyak program di

8
memori sekaligus. Sementara sebuah program menunggu potongan itu sendiri untuk
dibaca, CPU dapat diberikan ke proses lain.
3.3.1 Paging
Kebanyakan sistem memori virtual menggunakan teknik yang disebut paging ,
yang akan kami lakukan sekarang jelaskan. Di komputer manapun, program
mereferensikan sekumpulan alamat memori. Ketika sebuah program menjalankan
instruksi seperti MOV REG, 1000 ia melakukannya untuk menyalin isi dari alamat
memori 1000 ke REG (atau sebaliknya, menunggu di komputer). Alamat dapat dibuat
menggunakan pengindeksan, pendaftaran dasar ters, register segmen, dan cara lain.
Ini adalah alamat virtual. Komputer ini, bagaimanapun, hanya memiliki 32 KB
memori fisik. Jadi, meskipun program 64-KB dapat ditulis, program itu tidak dapat
dimuat ke memori secara keseluruhan dan dijalankan. Salinan lengkap inti program
image, hingga 64 KB, harus ada di disk, bagaimanapun, agar potongan dapat dibawa
sesuai kebutuhan.
Transfer antara RAM dan disk selalu di seluruh halaman. Banyak proses essors
mendukung berbagai ukuran halaman yang dapat dicampur dan dicocokkan sebagai
pengoperasian sistem terlihat cocok. Misalnya, arsitektur x86-64 mendukung 4-KB, 2-
MB, dan Halaman 1 GB, jadi kita bisa menggunakan halaman 4 KB untuk aplikasi
pengguna dan 1 GB halaman untuk kernel. Kita akan melihat nanti mengapa terkadang
lebih baik menggunakan single halaman besar, bukan halaman kecil dalam jumlah
besar.
Perangkap ini disebut kesalahan halaman . Sistem operasi
mengambil bingkai halaman yang jarang digunakan dan menulis isinya kembali ke disk
(jika tidak siap disana). Kemudian mengambil (juga dari disk) halaman yang baru saja
direferensikan ke dalam bingkai halaman yang baru saja dibebaskan, mengubah peta,
dan memulai ulang instruksi yang terperangkap option. Misalnya, jika sistem operasi
memutuskan untuk mengeluarkan bingkai halaman 1, itu akan memuat halaman virtual
8 di alamat fisik 4096 dan membuat dua perubahan pada MMU peta. Pertama, ini akan
menandai entri halaman virtual 1 sebagai tidak dipetakan, untuk menjebak akun di masa
mendatang.
3.3.2 Tabel Halaman

9
Dalam implementasi sederhana, pemetaan alamat virtual ke iklan fisik-gaun
dapat diringkas sebagai berikut: alamat virtual dibagi menjadi virtual nomor halaman
(bit orde tinggi) dan offset (bit orde rendah). Pemisahan yang berbeda menyiratkan
ukuran halaman yang berbeda. Nomor halaman virtual digunakan sebagai indeks ke
dalam tabel halaman untuk menemukan entri untuk halaman virtual itu. Dari entri tabel
halaman, nomor bingkai halaman (jika apapun) ditemukan. Nomor bingkai halaman
dilampirkan ke ujung urutan tinggi dari mengatur, mengganti nomor halaman virtual,
untuk membentuk alamat fisik yang dapat dikirim ke memori.
Struktur Entri Tabel Halaman
Yang paling penting bidang tant adalah nomor bingkai Pa ge . Bagaimanapun,
tujuan dari pemetaan halaman adalah untuk mengeluarkan nilai ini. Di sebelahnya kita
memiliki bit Present / absent . Jika bit ini 1, maka entri valid dan dapat digunakan. Jika
nilainya 0, halaman virtual tempat entri tersebut berada saat ini tidak ada dalam
memori. Mengakses entri tabel halaman dengan bit ini disetel ke 0 menyebabkan
kesalahan halaman.
Akhirnya, bit terakhir memungkinkan caching dinonaktifkan untuk halaman
tersebut. Fitur ini penting untuk halaman yang dipetakan ke register perangkat daripada
memori. Jika operator sistem sedang duduk dalam lingkaran ketat menunggu beberapa
perangkat I / O merespons perintah yang baru saja diberikan, sangatlah penting bahwa
perangkat keras terus mengambil kata tersebut dari perangkat, dan tidak menggunakan
salinan lama dalam cache. Dengan bit ini, cache bisa matikan. Mesin yang memiliki
ruang I / O terpisah dan tidak menggunakan memory-map-ped I / O tidak membutuhkan
bit ini.
Memori virtual dapat diimplementasikan dengan memecah ruang alamat virtual
menjadi beberapa halaman, dan memetakannya ke setiap halaman beberapa bingkai
halaman memori fisik atau tidak dipetakan (sementara). Jadi bagian ini secara bass
tentang abstraksi yang dibuat oleh sistem operasi dan bagaimana abstraksi itu dikelola.
3.3.3 Mempercepat Paging
Dalam sistem paging apa pun, dua
masalah utama harus dihadapi:
1. Pemetaan dari alamat virtual ke alamat fisik harus cepat.

10
2. Jika ruang alamat virtual besar, tabel halaman akan menjadi besar.
Poin pertama adalah konsekuensi dari fakta bahwa pemetaan virtual-ke-fisik harus
dilakukan pada setiap referensi memori. Semua instruksi pada akhirnya harus datang
dari memori dan banyak dari mereka mereferensikan operan dalam memori juga. Conse
sering kali, perlu membuat satu, dua, atau terkadang lebih banyak referensi tabel
halaman per instruksi. Jika eksekusi instruksi membutuhkan, katakanlah, 1 nsec,
pencarian tabel halaman harus dilakukan di bawah 0,2 nsec untuk menghindari
pemetaan menjadi bottleneck.
Poin kedua mengikuti fakta bahwa semua komputer modern menggunakan
virtual alamat setidaknya 32 bit, dengan 64 bit menjadi norma untuk desktop dan lap-
atasan. Dengan, katakanlah, ukuran halaman 4 KB, ruang alamat 32-bit memiliki 1 juta
halaman, dan file Ruang alamat 64-bit memiliki lebih dari yang ingin Anda
pikirkan. Dengan 1 juta halaman di ruang alamat virtual, tabel halaman harus memiliki
1 juta entri. Dan ingat bahwa setiap proses membutuhkan tabel halamannya sendiri
(karena memiliki virtualnya sendiri address space).
Ketika suatu proses dimulai, sistem operasi memuat register dengan
proses 'tabel halaman, diambil dari salinan yang disimpan di memori utama. Selama
proses execution, tidak ada lagi referensi memori yang diperlukan untuk tabel
halaman. Keuntungannya metode ini adalah mudah dan tidak memerlukan referensi
memori selama pemetaan. Kerugiannya adalah harganya sangat mahal jika tabel
halamannya besar; itu tidak praktis di sebagian besar waktu. Satu lagi adalah harus
memuat tabel halaman penuh di setiap sakelar konteks akan benar-benar mematikan
kinerja. Di sisi lain, tabel halaman dapat seluruhnya berada di memori utama. Semua
kebutuhan perangkat keras kemudian adalah satu register yang menunjuk ke awal tabel
halaman. Desain ini memungkinkan peta virtual-ke-fisik diubah pada sakelar konteks
oleh memuat ulang satu register.
Terjemahan Lookaside Buffer
Awal Poin dari sebagian besar teknik pengoptimalan adalah bahwa tabel
halaman ada di memori. Akhirnya, desain ini berdampak besar pada
performa. Pertimbangkan, misalnya, instruksi 1-byte yang menyalin satu register ke
register lainnya. Jika paging tidak ada, instruksi ini membuat hanya satu referensi

11
memori, untuk mengambil instruksi. Dengan paging, setidaknya satu referensi memori
tambahan akan dibutuhkan, untuk mengakses halaman meja. Karena kecepatan eksekusi
umumnya dibatasi oleh kecepatan CPU mendapatkan instruksi dan data dari memori,
harus membuat dua referensi memori Perbedaan per referensi memori mengurangi
kinerja hingga setengahnya. Dalam kondisi ini, tidak ada yang akan menggunakan
paging.
Solusi yang telah dibuat adalah melengkapi komputer dengan perangkat keras
kecil perangkat untuk memetakan alamat virtual ke alamat fisik tanpa melalui tabel
halaman. Perangkat tersebut, disebut TLB ( Translation Lookaside Buffer ) atau
terkadang memori asosiatif. Biasanya di dalam MMU dan terdiri dari sejumlah kecil
entri, delapan dalam contoh ini, tetapi jarang lebih dari 256. Jika virtual nomor halaman
ada di TLB tetapi instruksi mencoba untuk menulis dihalaman hanya-baca, kesalahan
perlindungan dihasilkan. Jadi jika halaman itu digunakan lagi segera, untuk kedua
kalinya menghasilkan TLB hit daripada miss. Saat entri dihapus dari TLB, file bit yang
dimodifikasi disalin kembali ke entri tabel halaman di memori. Nilai-nilai lainnya sudah
ada, kecuali bit referensi. Saat TLB dimuat dari halaman tabel, semua bidang diambil
dari memori.
Manajemen TLB Perangkat Lunak
Perangkap ke sistem operasi hanya terjadi jika halaman tidak ada di memori.
Dulu, anggapan ini benar. Namun, banyak mesin RISC, termasuk menggunakan
SPARC, MIPS, dan (yang sekarang mati) HP PA, lakukan hampir semua halaman ini
dengan agement dalam perangkat lunak. Di mesin ini, entri TLB secara eksplisit dimuat
oleh sistem operasi. . Manajemen TLB perangkat lunak dibahas oleh Uhlig et al. (1994).
Berbagai strategi telah dikembangkan sejak lama untuk meningkatkan kinerja ma-
Cina yang melakukan manajemen TLB dalam perangkat lunak. Satu pendekatan
menyerang keduanya mengurangi TLB meleset dan mengurangi biaya kerugian TLB
ketika hal itu terjadi (Balaetal., 1994). Untuk mengurangi kesalahan TLB, terkadang
sistem operasi dapat menggunakan intuisinya. Ition untuk mencari tahu halaman mana
yang kemungkinan besar akan digunakan selanjutnya dan untuk pramuat entri mereka di
TLB. Misalnya, ketika proses klien mengirim pesan ke server proses pada mesin yang
sama, kemungkinan besar server harus segera berjalan.

12
Cara normal untuk memproses kehilangan TLB, baik dalam perangkat keras
atau perangkat lunak, adalah untuk membuka tabel halaman dan melakukan operasi
pengindeksan untuk menemukan halaman referensi-enced. Masalah dengan melakukan
pencarian ini dalam perangkat lunak adalah halaman yang berisi file tabel halaman
mungkin tidak ada di TLB, yang akan menyebabkan kesalahan TLB tambahan selama
pemrosesan. Kesalahan ini dapat dikurangi dengan mempertahankan yang besar (mis.,
4-KB) cache perangkat lunak entri TLB di lokasi tetap yang halamannya selalu
disimpan di TLB. Dengan terlebih dahulu memeriksa cache perangkat lunak, sistem
operasi dapat secara substansial mengurangi kehilangan TLB.
3.3.4 Tabel Halaman untuk Memori Besar
TLB dapat digunakan untuk mempercepat terjemahan alamat virtual-ke-fisik
melalui skema halaman-tabel-dalam-memori asli. Tapi itu bukan satu-satunya masalah
yang harus kita hadapi mengatasi. Masalah lainnya adalah bagaimana menangani ruang
alamat virtual yang sangat besar.Di bawah ini kami akan membahas dua cara untuk
menghadapinya.
Tabel Halaman Multitingkat
Sebagai pendekatan pertama, pertimbangkan penggunaan tabel halaman
bertingkat. Entri yang terletak dengan mengindeks ke tabel halaman tingkat atas
menghasilkan alamat atau nomor bingkai halaman dari tabel halaman tingkat
kedua. Entri 0 dari tingkat atas tabel halaman menunjuk ke tabel halaman untuk teks
program, entri 1 menunjuk ke halaman tabel untuk data, dan entri 1023 menunjuk ke
tabel halaman untuk tumpukan.
Jika ini terjadi, sistem operasi akan melihat proses tersebut mencoba untuk
mereferensikan memori yang tidak seharusnya dan akan memakan waktu yang sesuai
tindakan, seperti mengirim sinyal atau mematikannya. Dalam contoh ini kami telah
memilih bilangan bulat untuk berbagai ukuran dan telah memilih PT1 sama
dengan PT2 , Tentu saja, praktik tual, nilai-nilai lain juga dimungkinkan.
Level tambahan memberi lebih banyak fleksibilitas. Misalnya, Intel 32 bit
Prosesor 80386 (diluncurkan tahun 1985) mampu menangani memori hingga 4 GB,
menggunakan tabel halaman dua tingkat yang terdiri dari direktori halaman yang entri

13
menunjuk ke tabel halaman, yang, pada gilirannya, menunjuk ke bingkai halaman 4-KB
yang sebenarnya. Baik direktori halaman dan tabel halaman masing-masing berisi 1024
entri, memberikan file total 2 10 × 2 10 × 2 12 = 2 32 byte yang dapat dialamatkan,
seperti yang diinginkan. Sepuluh tahun kemudian, Pentium Pro memperkenalkan level
lain: direktori halaman tabel penunjuk . Karena hanya memiliki 4 entri dalam tabel
penunjuk direktori halaman, masing-masing 512 direktori halaman, dan 512 di setiap
tabel halaman, jumlah total memori yang dapat baju pun masih dibatasi maksimal 4 GB.
Tabel Halaman Terbalik
Mereka pertama kali digunakan oleh prosesor seperti PowerPC, UltraSPARC,
dan Itanium (kadang-kadang disebut sebagai '' Itanic '', padahal bukan hampir mencapai
kesuksesan yang diharapkan Intel). Dalam desain ini, ada satu entri per halaman bingkai
dalam memori nyata, bukan satu entri per halaman ruang alamat virtual. Misalnya,
dengan alamat virtual 64-bit, ukuran halaman 4-KB, dan RAM 4 GB, file tabel halaman
terbalik hanya membutuhkan 1.048.576 entri. Entri melacak yang mana (proses,
halaman virtual) terletak di bingkai halaman.
3.4 ALGORITMA PENGGANTIAN HALAMAN
Ketika terjadi kesalahan halaman, sistem operasi harus memilih halaman untuk
dikeluarkan (hapus dari memori) untuk memberi ruang bagi halaman masuk. Jika
halaman akan kembali dipindahkan telah dimodifikasi sementara dalam memori, itu
harus ditulis ulang ke disk untuk dibawa salinan disk up to date. Namun, jika halaman
tersebut belum diubah (mis., tains teks program), salinan disk sudah diperbarui, jadi
tidak perlu menulis ulang. Halaman yang akan dibaca hanya menimpa halaman yang
digusur.
Perlu dicatat bahwa masalah '' penggantian halaman '' terjadi di area lain desain
komputer juga. Misalnya, kebanyakan komputer memiliki satu atau lebih ory cache
terdiri dari blok memori 32-byte atau 64-byte yang baru-baru ini digunakan. Kapan
cache sudah penuh, beberapa blok harus dipilih untuk dihapus. Masalah ini adalah pra-
persis sama seperti penggantian halaman kecuali dalam skala waktu yang lebih singkat
(harus dilakukan dalam beberapa nanodetik, bukan milidetik seperti penggantian
halaman). Alasan anak untuk skala waktu yang lebih pendek adalah bahwa cache blok
yang hilang dari main memori, yang tidak memiliki waktu pencarian dan latensi rotasi.

14
3.4.1 Algoritma Penggantian Halaman Optimal
Pada saat kesalahan halaman terjadi kutukan, beberapa set halaman ada di
memori. Salah satu halaman ini akan direferensikan di instruksi selanjutnya (halaman
yang berisi instruksi itu). Halaman lain mungkin tidak direferensikan hingga 10, 100,
atau mungkin 1000 instruksi kemudian. Setiap halaman bisa
diberi label dengan jumlah instruksi yang akan dijalankan sebelum halaman itu
direferensikan pertama kali.
Algoritma penggantian halaman yang optimal mengatakan bahwa halaman
dengan yang tertinggi label harus dihapus. Jika satu halaman tidak akan digunakan
untuk 8 juta instruksi dan halaman lain tidak akan digunakan untuk 6 juta instruksi,
menghapus yang pertama mendorong kesalahan halaman yang akan mengambilnya
kembali sejauh mungkin di masa mendatang.
3.4.2 Algoritma Penggantian Halaman Yang Tidak Baru-Baru Ini Digunakan
Untuk memungkinkan sistem operasi mengumpulkan statistik penggunaan
halaman yang berguna, kebanyakan komputer dengan memori virtual memiliki dua bit
status, R dan M , terkait dengan setiap halaman. R diatur setiap kali halaman
direferensikan (baca atau tulis). M adalah atur kapan halaman tersebut ditulis (yaitu,
dimodifikasi). Penting untuk disadari bahwa bit ini pasti diperbarui pada setiap referensi
memori, sehingga penting bahwa mereka diatur oleh hardware. Setelah bit disetel ke 1,
bit tersebut tetap 1 hingga sistem operasi menyetel ulang. Jika perangkat keras tidak
memiliki bit ini, mereka dapat disimulasikan menggunakan operasi melihat kesalahan
halaman sistem dan mekanisme interupsi jam.
The NRU ( Not Recently Used ) algoritma menghapus halaman secara acak dari
kelas tidak kosong bernomor terendah. Yang tersirat dalam algoritma ini adalah gagasan
bahwa itu adalah lebih baik menghapus halaman yang dimodifikasi yang belum
direferensikan setidaknya dalam satu jam centang (biasanya sekitar 20 mdet) daripada
halaman bersih yang sering digunakan. Utama daya tarik NRU adalah mudah
dimengerti, cukup efisien untuk diterapkan. ment, dan memberikan kinerja yang,
meskipun tidak optimal, mungkin memadai.
3.4.3 Algoritma Penggantian Halaman First-In, First-Out (FIFO)

15
Algoritma paging dengan overhead rendah lainnya adalah FIFO ( First-In,
First-Out ) algoritma. Untuk menggambarkan bagaimana ini bekerja, pertimbangkan
supermarket yang memiliki cukup rak untuk display persis k produk yang
berbeda. Suatu hari, beberapa perusahaan memperkenalkan makanan praktis baru —
yogurt organik instan, kering beku, yang dapat direkonsiliasi tuted dalam oven
microwave. Ini adalah kesuksesan langsung, jadi supermarket terbatas kami harus
membuang satu produk lama untuk menyimpannya.
Salah satu kemungkinannya adalah menemukan produk yang telah di sediakan
supermarket terpanjang (yaitu, sesuatu yang mulai dijual 120 tahun yang lalu) dan
menyingkirkannya di dengan alasan bahwa tidak ada yang tertarik lagi. Akibatnya,
supermarket memiliki a daftar tertaut dari semua produk yang saat ini dijual sesuai
urutan peluncurannya.
3.4.4 Algoritma Penggantian Halaman Kesempatan Kedua
Misalkan kesalahan halaman terjadi pada waktu 20. Halaman tertua adalah A ,
yang tiba pada waktu 0, saat proses dimulai. Jika A memiliki bit R yang dihapus, bit
tersebut akan dikeluarkan dari memori, baik dengan menulis ke disk (jika kotor), atau
ditinggalkan begitu saja (jika ada bersih). Di sisi lain, jika bit R diatur, A diletakkan di
akhir daftar dan nya '' waktu buka '' disetel ulang ke waktu sekarang (20). The R bit juga
dibersihkan. Pencarian untuk halaman yang cocok berlanjut dengan B.
3.4.5 Algoritma Penggantian Halaman Jam
Ketika terjadi kesalahan halaman, halaman yang ditunjuk oleh tangan akan
diperiksa. Jika bit R -nya 0, halaman tersebut diusir, halaman baru dimasukkan ke
dalam jam di dalamnya tempatkan, dan tangan dimajukan satu posisi. Jika R adalah 1,
itu dihapus dan tangan adalah maju ke halaman berikutnya. Proses ini diulangi sampai
halaman ditemukan dengan R = 0. Tak heran, algoritma ini disebut clock.
3.4.6 Algoritma Penggantian Halaman LRU)
Ide ini menyarankan algoritme yang dapat diwujudkan:
ketika terjadi kesalahan halaman, buang halaman yang sudah lama tidak digunakan
waktu. Strategi ini disebut paging LRU ( Least recent used ). Meskipun LRU secara
teoritis dapat direalisasikan, namun pada akhirnya tidak murah. Untuk menerapkan
LRU sepenuhnya, perlu untuk mempertahankan daftar tertaut dari semua halaman di

16
ory, dengan halaman yang terakhir digunakan di bagian depan dan halaman yang paling
terakhir digunakan
di belakang. Kesulitannya adalah bahwa daftar tersebut harus diperbarui pada setiap
referensi memori. ence. Menemukan halaman dalam daftar, menghapusnya, dan
kemudian memindahkannya ke depan sangatlah mudah operasi yang memakan waktu,
bahkan dalam perangkat keras (dengan asumsi bahwa perangkat keras tersebut bisa
dibangun).
3.4.7 Mensimulasikan LRU dalam Perangkat Lunak
Meskipun algoritme LRU sebelumnya (pada prinsipnya) dapat direalisasikan,
sedikit, jika ada, mesin memiliki perangkat keras yang diperlukan. Sebaliknya, solusi
yang bisa diterapkan dalam perangkat lunak dibutuhkan. Salah satu kemungkinannya
disebut NFU ( Not Frequently Used ) algoritma. Ini membutuhkan penghitung
perangkat lunak yang terkait dengan setiap halaman, awalnya nol. Pada setiap interupsi
jam, sistem operasi memindai semua halaman dalam memori. Untuk setiap
halaman, bit R , yaitu 0 atau 1, ditambahkan ke penghitung. Penghitungnya kasar
melacak seberapa sering setiap halaman telah direferensikan. Ketika terjadi kesalahan
halaman, halaman dengan penghitung terendah dipilih untuk diganti.
Masalah utama dengan NFU adalah ia seperti gajah: tidak pernah melupakan apa
pun benda. Misalnya, dalam kompiler multipass, halaman yang banyak digunakan
selama operan 1 mungkin masih memiliki hitungan tinggi hingga operan
selanjutnya. Padahal, jika lulus 1 terjadi untuk memiliki waktu eksekusi terlama dari
semua lintasan, halaman yang berisi kode untuk pass berikutnya mungkin selalu
memiliki jumlah yang lebih rendah daripada pass-1 halaman. Consesering, sistem
operasi akan menghapus halaman yang berguna, bukan halaman lagi digunakan.
3.4.8 Algoritma Penggantian Halaman Set Kerja
Dalam bentuk paging yang paling murni, proses dimulai tanpa halamannya
dalam kenangan. Segera setelah CPU mencoba mengambil instruksi pertama, ia
mendapat halaman kesalahan, menyebabkan sistem operasi membawa halaman yang
berisi instruksi pertamation. Kesalahan halaman lain untuk variabel global dan
tumpukan biasanya mengikuti dengan cepat. Setelah beberapa saat, proses tersebut
memiliki sebagian besar halaman yang dibutuhkan dan menetap untuk dijalankan

17
dengan kesalahan halaman yang relatif sedikit.
Jika memori yang tersedia terlalu kecil untuk menampung enset kerja ban,
proses ini akan menyebabkan banyak kesalahan halaman dan berjalan lambat, sejak ex-
ecuting sebuah instruksi membutuhkan beberapa nanodetik dan membaca dalam satu
halaman dari disk biasanya membutuhkan waktu 10 msec Pada kecepatan satu atau dua
instruksi per 10 msec, itu akan butuh waktu lama untuk menyelesaikannya. Sebuah
program yang menyebabkan kesalahan halaman setiap beberapa instruksi dikatakan
menjadi meronta - ronta (Denning, 1968b).
Pendekatan ini disebut model set kerja (Denning, 1970). Ini dirancang untuk
sangat mengurangi tingkat kesalahan halaman. Memuat halaman sebelum menjalankan
proses juga disebut persiapan. Perhatikan bahwa set kerja berubah seiring waktu.
Sudah lama diketahui bahwa program jarang mereferensikan address space uniformal,
tetapi referensi cenderung mengelompok pada sejumlah kecil halaman.
Menurut definisi, set kerja adalah himpunan halaman yang digunakan
di k memori terbaru referensi (beberapa penulis menggunakan k referensi halaman
terbaru, tetapi pilihannya adalah sewenang-wenang). Untuk mengimplementasikan
algoritma set kerja apa pun, beberapa nilai k harus dipilih. sen sebelumnya. Kemudian,
setelah setiap referensi memori, kumpulan halaman yang digunakan oleh referensi
memori terbaru k ditentukan secara unik. Tentu saja, memiliki definisi operasional dari
himpunan kerja tidak berarti bahwa ada cara yang efisien untuk menghitungnya selama
eksekusi program.
3.4.9 Algoritma Penggantian Halaman WSClock
Algoritma set kerja dasar tidak praktis, karena seluruh tabel halaman memiliki
untuk dipindai di setiap kesalahan halaman sampai kandidat yang cocok ditemukan.
Sebuah perbaikan algoritma, yang didasarkan pada algoritma jam tetapi juga
menggunakan set kerja informasi, disebut WSClock (Carr dan Hennessey,
1981). Karena kesederhanaannya implementasi dan kinerja yang baik, ini banyak
digunakan dalam praktik. Setiap entri berisi bidang Waktu penggunaan terakhir dari
pekerjaan dasar mengatur algoritma, serta bit R (ditampilkan) dan bit M (tidak
ditampilkan). Seperti halnya algoritma jam, pada setiap kesalahan halaman halaman

18
yang ditunjuk oleh tangan diperiksa dulu. Jika bit R diatur ke 1, halaman telah
digunakan selama arus centang jadi ini bukan kandidat yang ideal untuk dihapus.
Ada dua kasus yang harus kita pertimbangkan:
1. Setidaknya satu penulisan telah dijadwalkan.
2. Tidak ada penulisan yang dijadwalkan.
Dalam kasus pertama, tangan terus bergerak, mencari halaman yang bersih. Sejak satu
atau lebih banyak penulisan telah dijadwalkan, akhirnya beberapa penulisan akan
selesai dan halamannya akan ditandai sebagai bersih. Halaman bersih pertama yang
ditemukan akan dibuang. Halaman ini adalah belum tentu penulisan pertama
dijadwalkan karena driver disk dapat menyusun ulang penulisan untuk mengoptimalkan
kinerja disk.
3.4.10 Ringkasan Algoritma Penggantian Halaman
Algoritme yang optimal mengeluarkan halaman yang akan direferensikan
terjauh di ture. Sayangnya, tidak ada cara untuk menentukan halaman ini, jadi dalam
praktiknya algoritma ini tidak dapat digunakan. Ini berguna sebagai tolak ukur yang
digunakan algoritme dapat diukur. Halaman acak dari kelas bernomor terendah
dipilih. Ini algoritme mudah diterapkan, tetapi sangat kasar. Ada yang lebih baik.
FIFO melacak urutan halaman yang dimuat ke dalam memori menyimpannya dalam
daftar tertaut.
LRU adalah algoritma yang sangat baik, tetapi tidak dapat diimplementasikan
tanpa algoritma khusus perangkat keras. Jika perangkat keras ini tidak tersedia, itu tidak
dapat digunakan. NFU adalah minyak mentah ditergoda untuk mendekati LRU. Ini
tidak terlalu bagus. Namun, penuaan jauh lebih baik mendekati LRU dan dapat
diimplementasikan secara efisien. Itu adalah pilihan yang bagus. Dua algoritma terakhir
menggunakan set kerja. Algoritma set kerja memberi kinerja yang wajar, tetapi agak
mahal untuk diterapkan. WSClock adalah varian yang tidak hanya memberikan
performa bagus tetapi juga efisien untuk diterapkan. Secara keseluruhan, dua algoritma
terbaik adalah penuaan dan WSClock.
3.5 ISU DESAIN UNTUK SISTEM PAGING
Pada bagian sebelumnya kami telah menjelaskan bagaimana paging bekerja dan
memberikan beberapa algoritma penggantian halaman dasar. Tapi mengetahui

19
mekanisme telanjangnya tidak cukup. Untuk merancang sistem dan membuatnya
bekerja dengan baik, Anda harus tahu banyak lebih. Ini seperti perbedaan antara
mengetahui cara memindahkan benteng, ksatria, uskup, dan bidak catur lainnya, dan
menjadi pemain yang baik. Detik berikut options, kita akan melihat masalah lain yang
harus dipertimbangkan oleh perancang sistem operasi hati-hati untuk mendapatkan
kinerja yang baik dari sistem paging.
3.5.1 Kebijakan Alokasi Lokal versus Global
Pada bagian sebelumnya kita telah membahas beberapa algoritma untuk memilih
halaman untuk diganti ketika terjadi kesalahan. Masalah utama yang terkait dengan
pilihan ini (yang telah kami sapu dengan hati-hati sampai sekarang) adalah bagaimana
seharusnya ingatan dialokasikan di antara proses runnable yang bersaing.
Dengan demikian, jumlah bingkai halaman yang ditetapkan untuk setiap proses
bervariasi dalam waktu. Secara umum, algoritma global bekerja lebih baik, terutama
ketika ukuran set yang berfungsi dapat sangat bervariasi selama proses
berlangsung. Jika algoritma lokal digunakan dan set kerja tumbuh, meronta-ronta akan
menghasilkan, bahkan jika jumlahnya cukup bingkai halaman gratis. Jika set kerja
menyusut, algoritma lokal membuang memori. Jika sebuah algoritma global digunakan,
sistem harus terus memutuskan berapa banyak halaman bingkai untuk ditetapkan ke
setiap proses. Salah satu caranya adalah dengan memantau ukuran set kerja seperti pada
ditentukan oleh bit penuaan, tetapi pendekatan ini tidak serta merta mencegah
perontokan. Set kerja dapat berubah ukuran dalam milidetik, sedangkan bit penuaan
sangat ukuran kasar tersebar di sejumlah jam.
3.5.2 Kontrol Beban
Bahkan dengan algoritma penggantian halaman terbaik dan alokasi global yang
optimal frame halaman ke proses, dapat terjadi sistem mengalami thrash. Faktanya,
ketika bahkan set kerja gabungan dari semua proses melebihi kapasitas memori,
meronta-ronta bisa diharapkan. Salah satu gejala dari situasi ini adalah algoritma PFF
menunjukkan bahwa beberapa proses membutuhkan lebih banyak memori tetapi tidak
ada proses yang membutuhkan lebih sedikit memori ory. Dalam kasus ini, tidak ada
cara untuk memberikan lebih banyak memori ke proses yang membutuhkan itu tanpa
merusak beberapa proses lainnya.

20
Proses pertukaran keluar untuk mengurangi beban pada memori mengingatkan
pada dua penjadwalan tingkat, di mana beberapa proses diletakkan pada disk dan
penjadwalan jangka pendekuler digunakan untuk menjadwalkan proses yang
tersisa. Jelas, kedua gagasan itu bisa jadi digabungkan, dengan cukup proses yang
ditukar untuk membuat tingkat kesalahan halaman bisa diterima. Secara berkala,
beberapa proses dibawa dari disk dan yang lainnya tertukar.
Pada beberapa mesin, tabel halaman harus dimuat (oleh sistem operasi)
ke register perangkat keras setiap kali CPU beralih dari satu proses ke proses lainnya.
Pada mesin ini, memiliki ukuran halaman kecil berarti waktu yang dibutuhkan untuk
memuat register halaman semakin panjang karena ukuran halaman semakin
kecil. Selanjutnya, ruang ditempati oleh tabel halaman meningkat sebagai ukuran
halaman berkurang.
3.5.4 Ruang Instruksi dan Data Terpisah
Di komputer dengan desain seperti ini, kedua ruang alamat dapat dihalaman,
terpisah satu sama lain. Masing-masing memiliki tabel halamannya sendiri, dengan peta
ping halaman virtual ke frame halaman fisik. Saat perangkat keras ingin mengambil file
instruksi, ia tahu bahwa itu harus menggunakan I-space dan tabel halaman
Ispace. Demikian pula, data harus melalui tabel halaman D-space. Selain perbedaan ini,
memiliki ruang I dan D yang terpisah tidak menimbulkan komplikasi khusus untuk
operasi sistem dan itu menggandakan ruang alamat yang tersedia.
3.5.5 Halaman Bersama
Masalah desain lainnya adalah berbagi. Dalam sistem multiprogramming yang
besar, itu umum bagi beberapa pengguna untuk menjalankan program yang sama pada
waktu yang sama. Bahkan pengguna tunggal mungkin menjalankan beberapa program
yang menggunakan pustaka yang sama. Itu jelas lebih efisien untuk berbagi halaman,
untuk menghindari dua salinan dari halaman yang sama memori pada saat
bersamaan. Satu masalah adalah tidak semua halaman dapat dibagikan. Khususnya
ular, halaman yang bersifat baca-saja, seperti teks program, dapat dibagikan, tetapi
untuk data berbagi halaman lebih rumit.
Kapan penjadwal memilih proses untuk dijalankan, ia menggunakan petunjuk
ini untuk menemukan aplikasi tabel halaman berpemilik dan mengatur MMU

21
menggunakannya. Bahkan tanpa I- terpisah dan D-spasi, proses dapat berbagi program
(atau terkadang, perpustakaan), tetapi file mekanismenya lebih rumit. Ketika dua atau
lebih proses berbagi beberapa kode, masalah terjadi dengan halaman ed. Misalkan
proses A dan B menjalankan editor dan berbagi halaman-halamannya.
3.5.6 Perpustakaan Bersama
Berbagi dapat dilakukan pada perincian lain selain halaman individual. Jika
sebuah program dimulai dua kali, sebagian besar sistem operasi akan secara otomatis
membagikan semua teks halaman sehingga hanya ada satu salinan dalam
memori. Halaman teks selalu hanya baca, jadi begitulah tidak ada masalah
disini. Bergantung pada sistem operasinya, setiap proses mungkin mendapatkannya
memiliki salinan pribadi dari halaman data, atau mungkin dibagikan dan ditandai hanya
baca. Jika ada proses yang mengubah halaman data, salinan pribadi akan dibuat
untuknya, yaitu, salinan saat menulis akan diterapkan.
Fungsi apa pun yang dipanggil dalam file objek tetapi tidak ada di sana
(mis., printf ) disebut eksternal tidak terdefinisi dan dicari di perpustakaan. Jika
ditemukan, mereka termasuk dalam biner yang dapat dieksekusi. Apa saja fungsi yang
mereka panggil tetapi belum ada juga menjadi eksternal yang tidak terdefinisi.
Misalnya, printf perlu menulis , jadi jika tulis belum disertakan, linker akan
melakukannya cari dan sertakan jika ditemukan.
Saat program dimuat ke memori dan dieksekusi, semua fungsi yang dibutuhkan
ada di sana. Sekarang misalkan program umum menggunakan grafik senilai 20–50 MB
dan fungsi terface. Menghubungkan ratusan program secara statis dengan semua
perpustakaan ini akan membuang banyak ruang pada disk serta membuang ruang di
dalamnya RAM ketika mereka dimuat karena sistem tidak akan mengetahuinya
bisa membagikannya.
Biner lama terus bekerja. Fitur ini sangat penting untuk perangkat lunak
komersial, yang kode sumbernya tidak didistribusikan ke pelanggan. Untuk Misalnya,
jika Microsoft menemukan dan memperbaiki kesalahan keamanan di beberapa DLL
standar, Windows Update akan mengunduh DLL baru dan menggantikan yang lama,
dan semua program yang menggunakan DLL akan secara otomatis menggunakan versi
baru saat mereka berikutnya diluncurkan.

22
3.5.7 File yang Dipetakan
File yang dipetakan memberikan model alternatif untuk I / O. Sebaliknya,
melakukan membaca dan menulis, file tersebut dapat diakses sebagai array karakter
besar dalam memori. Dalam beberapa situasitions, programmer menemukan model ini
lebih nyaman. Jika dua atau lebih proses memetakan ke file yang sama pada waktu yang
sama, mereka bisa berkomunikasi melalui memori bersama. Penulisan dilakukan
dengan satu proses ke anggota bersama ory segera terlihat ketika yang lain membaca
dari bagian iklan virtualnya.
3.5.8 Kebijakan Pembersihan
Paging berfungsi paling baik bila ada banyak persediaan bingkai halaman gratis
itu dapat diklaim saat terjadi kesalahan halaman. Jika setiap frame halaman penuh, dan
selanjutnya diubah, sebelum halaman baru dapat dibawa masuk, halaman lama harus
ditulis terlebih dahulu disk. Untuk memastikan pasokan frame halaman gratis yang
berlimpah, umumnya sistem paging memiliki proses latar belakang, yang
disebut daemon paging , yang hampir selalu tertidur tetapi dibangunkan secara berkala
untuk memeriksa keadaan ingatan. Jika halaman terlalu sedikit frame gratis, itu mulai
memilih halaman yang akan digusur menggunakan beberapa algoritma. Jika halaman ini
telah diubah sejak dimuat, halaman itu akan ditulis ke disk.
3.5.9 Antarmuka Memori Virtual
Di bagian ini, kita akan melihat secara singkat beberapa di antaranya. Salah satu
alasan untuk memberi pemrogram kendali atas peta memori mereka adalah untuk
mengizinkan dua atau lebih proses untuk berbagi memori yang sama. terkadang dengan
cara yang canggih cara. Jika pemrogram dapat memberi nama wilayah memori mereka,
itu mungkin untuk satu proses untuk memberi proses lain nama wilayah memori
sehingga proses itu juga dapat memetakannya. Dengan dua (atau lebih) proses yang
berbagi halaman yang sama, tinggi berbagi bandwidth menjadi mungkin — satu proses
menulis ke dalam memori bersama dan yang lainnya membacanya.
Idenya di sini adalah untuk memungkinkan beberapa proses melalui jaringan
untuk berbagi satu set halaman, mungkin, tetapi tidak harus, sebagai satu ruang alamat
linier bersama. Ketika sebuah proses mereferensikan halaman yang saat ini tidak
dipetakan, mendapat kesalahan halaman. Itu page fault handler, yang mungkin ada di

23
kernel atau di ruang pengguna, kemudian menempatkan file mesin yang menahan
halaman dan mengirimkannya pesan yang memintanya untuk membatalkan peta
halaman dan kirimkan melalui jaringan.
3.6 MASALAH IMPLEMENTASI
Pelaksana sistem memori virtual harus membuat pilihan di antara file algoritma
teoritis utama, seperti kesempatan kedua versus penuaan, lokal versus global alokasi
halaman bal, dan permintaan paging versus prepaging. Tapi mereka juga harus begitu
aw adalah sejumlah masalah implementasi praktis juga. Di bagian ini kami akan melihat
beberapa masalah umum dan beberapa solusi.
3.6.1 Keterlibatan Sistem Operasi dengan Paging
Ada empat kali ketika sistem operasi memiliki pekerjaan terkait paging yang
harus dilakukan:
waktu pembuatan proses, waktu eksekusi proses, waktu kesalahan halaman, dan termi-
waktu bangsa. Sekarang kita akan memeriksa secara singkat masing-masing untuk
melihat apa yang harus dilakukan.
Ruang harus dialokasikan dalam memori untuk tabel halaman dan itu harus
diinisialisasi. Tabel halaman tidak perlu disimpan saat proses ditukar tetapi harus ada di
memori saat proses sedang berjalan. Selain itu, ruang harus tersedia dialokasikan di area
swap pada disk sehingga ketika halaman ditukar, halaman memiliki beberapa ke mana
harus pergi. Area swap juga harus diinisialisasi dengan teks program dan data bahwa
ketika proses baru mulai mendapatkan kesalahan halaman, halaman tersebut dapat
dibuka. Beberapa sistem halaman teks program langsung dari file yang dapat
dieksekusi, sehingga menyimpan ruang disk dan waktu inisialisasi. Terakhir, informasi
tentang tabel halaman dan area swap pada disk harus dicatat dalam tabel proses.
Ketika suatu proses keluar, sistem operasi harus melepaskan tabel halamannya,
yaitu halaman, dan ruang disk yang ditempati halaman saat berada di disk. Jika
beberapa halaman dibagikan dengan proses lain, halaman dalam memori dan pada disk
dapat dirilis hanya jika proses terakhir yang menggunakannya telah dihentikan.
3.6.2 Penanganan Kesalahan Halaman
Urutan kejadiannya adalah sebagai berikut:
1. Perangkat keras menjebak ke kernel, menyimpan penghitung program di

24
tumpukan. Pada kebanyakan mesin, beberapa informasi tentang status file
instruksi saat ini disimpan dalam register CPU khusus.
2. Rutin kode assembly dimulai untuk menyimpan register umum dan
informasi volatil lainnya, untuk menjaga sistem operasi dari kehancuran-
ing itu. Rutinitas ini menyebut sistem operasi sebagai prosedur.
3. Sistem operasi menemukan bahwa telah terjadi kesalahan halaman, dan
mencoba menemukan halaman virtual mana yang diperlukan. Seringkali salah satu yang
sulit register ware berisi informasi ini. Jika tidak, sistem operasinya harus mengambil
penghitung program, mengambil instruksi, dan menguraikannya dalam perangkat lunak
untuk mengetahui apa yang dilakukannya saat terjadi kesalahan.
4. Setelah alamat virtual yang menyebabkan kesalahan diketahui, sistem
periksa untuk melihat apakah alamat ini valid dan perlindungannya konsisten
dengan akses. Jika tidak, proses dikirim sinyal atau dimatikan. Jika iklan-
pakaian valid dan tidak ada kesalahan perlindungan yang terjadi, sistem akan
memeriksauntuk melihat apakah bingkai halaman gratis. Jika tidak ada bingkai yang
gratis, halaman kembali algoritma penempatan dijalankan untuk memilih korban.
5. Jika bingkai halaman yang dipilih kotor, halaman tersebut dijadwalkan untuk
dipindahkan disk, dan sakelar konteks berlangsung, menangguhkan kesalahan
proses dan membiarkan yang lain berjalan sampai transfer disk selesai
selesai. Bagaimanapun, bingkai ditandai sibuk untuk mencegahnya digunakan untuk
tujuan lain.
6. Segera setelah bingkai halaman bersih (baik segera atau setelahnya ditulis ke disk),
sistem operasi mencari alamat disk di mana halaman yang diperlukan adalah, dan
menjadwalkan operasi disk untuk membawanya masuk. Saat halaman sedang dimuat,
proses kesalahan masih ditangguhkan dan proses pengguna lain dijalankan, jika
tersedia.
7. Ketika disk interupsi menunjukkan bahwa halaman telah tiba, halaman tabel
diperbarui untuk mencerminkan posisinya, dan bingkai ditandai sebagai berada dalam
keadaan normal.
8. Instruksi kesalahan dicadangkan ke keadaan semula saat dimulai dan penghitung
program disetel ulang untuk menunjuk ke instruksi itu.

25
9. Proses kesalahan dijadwalkan, dan sistem operasi kembali kerutin (bahasa assembly)
yang memanggilnya.
10. Rutinitas ini memuat ulang register dan informasi status lainnya dan beralih ke
ruang pengguna untuk melanjutkan eksekusi, seolah-olah tidak ada kesalahan yang
terjadi.
3.6.3 Pencadangan Instruksi
Ketika sebuah program mereferensikan halaman yang tidak ada dalam memori,
instruksi menyebabkan Jika kesalahan dihentikan di tengah jalan dan terjadi jebakan ke
sistem operasi. Setelah sistem operasi mengambil halaman yang diperlukan, itu harus
memulai ulang instruksi yang menyebabkan jebakan. Ini lebih mudah dikatakan
daripada dilakukan.
Instruksi yang menggunakan autoincremode ment juga bisa
kesalahan. Bergantung pada detail mikrokode, peningkatan dapat dilakukan sebelum
referensi memori, dalam hal ini sistem operasitem harus menurunkan register di
perangkat lunak sebelum memulai ulang instruksi. Atau, peningkatan otomatis dapat
dilakukan setelah referensi memori, dalam hal ini akan dilakukan belum dilakukan pada
saat jebakan dan tidak boleh dibatalkan oleh operasi sistem. Mode autodecrement juga
ada dan menyebabkan masalah serupa.
3.6.4 Mengunci Halaman dalam Memori
Meskipun kami belum banyak membahas I / O dalam bab ini, fakta bahwa
perusahaan puter memiliki memori virtual tidak berarti I / O tidak ada. Memori virtual
dan I / O berinteraksi dengan cara yang halus. Pertimbangkan proses yang baru saja
mengeluarkan panggilan sistem ke membaca dari beberapa file atau perangkat ke buffer
dalam ruang alamatnya. Sambil menunggu agar I / O selesai, prosesnya ditangguhkan
dan proses lain diizinkan lari. Proses lain ini mendapat kesalahan halaman.
Satu solusi untuk masalah ini lem adalah mengunci halaman yang terlibat dalam
I / O dalam memori sehingga tidak akan dihapus. Mengunci halaman sering disebut
dengan menyematkannya di memori. Solusi lain adalah melakukan semua I / O ke
buffer kernel dan kemudian menyalin data ke halaman pengguna nanti.
3.6.5 Backing Store

26
Sekarang mari kita jelaskan beberapa masalah yang berkaitan dengan
manajemen disk. Algoritme paling sederhana untuk mengalokasikan ruang halaman
pada disk adalah memiliki spesifikasi partisi swap pada disk atau, bahkan lebih baik,
pada disk terpisah dari sistem file tem (untuk menyeimbangkan beban I / O).
Saat sistem di-boot, partisi swap ini kosong dan ditampilkan dalam format
memori sebagai entri tunggal yang memberikan asal dan ukurannya. Dalam skema
paling sederhana, kapan proses pertama dimulai, sebagian dari area partisi adalah
ukuran dari proses pertama dicadangkan dan area yang tersisa dikurangi dengan jumlah
itu. Seperti proses baru dimulai, mereka diberi potongan partisi swap yang ukurannya
sama dengan intinya gambar-gambar. Saat mereka selesai, ruang disk mereka
dibebaskan. Partisi swap dikelola sebagai daftar potongan gratis.
3.6.6 Pemisahan Kebijakan dan Mekanisme
Di sini sistem manajemen memori dibagi menjadi tiga bagian:
1. Penangan MMU level rendah.
2. Penangan kesalahan halaman yang merupakan bagian dari kernel.
3. Pager eksternal berjalan di ruang pengguna.
Semua detail tentang cara kerja MMU dikemas dalam penangan MMU,
yang merupakan kode yang bergantung pada mesin dan harus ditulis ulang untuk setiap
platform baru sistem operasi porting ke. Penangan kesalahan halaman tidak bergantung
pada mesin kode dan berisi sebagian besar mekanisme paging. Kebijakan ini sebagian
besar ditambang oleh pager eksternal, yang dijalankan sebagai proses pengguna.
Ketika suatu proses dimulai, halaman eksternal diberitahu untuk mengatur memproses
peta halaman dan mengalokasikan penyimpanan dukungan yang diperlukan pada disk
jika perlu.
Dalam kasus terakhir, penangan kesalahan memberi tahu halaman eksternal
halaman mana yang dimilikinya dipilih untuk penggusuran dan menyediakan data, baik
dengan memetakannya ke eksternal ruang alamat pager atau memasukkannya ke dalam
pesan. Either way, pager eksternal menulis data ke disk. Keuntungan utama dari
implementasi ini adalah kode yang lebih modular dan lebih besar fleksibilitas. Kerugian
utama adalah overhead ekstra untuk melintasi kernel pengguna batas beberapa kali dan
overhead dari berbagai pesan yang dikirim tween bagian-bagian dari sistem.

27
3.7 SEGMENTASI
Untuk banyak masalah, memiliki dua atau lebih ruang alamat virtual yang
terpisah mungkin jauh lebih baik daripada hanya memiliki satu. Misalnya, kompilator
memiliki banyak tabel yang dibangun sebagai hasil kompilasi, mungkin termasuk:
1. Teks sumber disimpan untuk daftar tercetak (pada sistem batch).
2. Tabel simbol, berisi nama dan atribut variabel.
3. Tabel yang berisi semua konstanta integer dan floating-point yang digunakan.
4. Pohon parse, berisi analisis sintaksis program.
5. Tumpukan yang digunakan untuk panggilan prosedur dalam kompilator.
Contoh umum adalah perpustakaan bersama. Stasiun kerja modern yang
menjalankan iklan sistem jendela vanced sering kali memiliki pustaka grafis yang
sangat besar yang dikompilasi ke dalam hampir setiap program. Dalam sistem
tersegmentasi, perpustakaan grafis dapat diletakkan dalam sebuah segmen dan
dibagikan oleh beberapa proses, menghilangkan kebutuhan untuk memilikinya
setiap ruang alamat proses. Meskipun dimungkinkan juga untuk berbagi perpustakaan di
sistem paging murni, ini lebih rumit. Akibatnya, sistem ini melakukannya dengan cara
sederhana. ulating segmentation.
3.7.1 Penerapan Segmentasi Murni
Penerapan segmentasi berbeda dari paging dalam hal yang esensial:
halaman berukuran tetap dan segmen tidak. Sekarang pertimbangkan apa yang terjadi
jika segmen 1 digusur dan segmen 7, yang lebih kecil, ditempatkan pada tempatnya.
Setelah sistem telah berjalan beberapa saat, memori akan dibagi menjadi beberapa
bongkahan, sebagian mengandung segmen dan sebagian mengandung lubang.
Fenomena ini, disebut checkerboarding atau fragmentasi eksternal , membuang-
buang memori di dalam lubang.
3.7.2 Segmentasi dengan Paging: MULTICS
Jika segmennya besar, mungkin tidak nyaman, atau bahkan tidak mungkin,
untuk disimpan mereka di memori utama secara keseluruhan. Ini mengarah pada ide
paging, jadi bahwa hanya halaman dari segmen yang benar-benar dibutuhkan yang
harus ada.

28
Setiap program MULTICS memiliki tabel segmen, dengan satu deskriptor per
segmen ment. Karena ada potensi lebih dari seperempat juta entri di tabel, tabel segmen
itu sendiri merupakan segmen dan dihalaman. Penjelasan segmen berisi indikasi apakah
segmen itu ada di memori utama atau tidak. Jika ada bagian dari segmen ada di memori,
segmen dianggap di memori, dan tabel halamannya ada di memori.
Setelah terjadi, algoritma berikut dilakukan.
1. Nomor segmen digunakan untuk mencari deskriptor segmen.
2. Pemeriksaan dilakukan untuk melihat apakah tabel halaman segmen ada dalam
memori. Jika ya, maka lokasinya. Jika tidak, terjadi kesalahan segmen. Jika
terjadi pelanggaran proteksi, terjadi kesalahan (jebakan).
3. Entri tabel halaman untuk halaman virtual yang diminta telah diperiksa. Jika
halaman itu sendiri tidak ada dalam memori, kesalahan halaman telah dipicu. Jika
berada di memori, alamat memori utama dari awal halaman itu diekstrak dari entri tabel
halaman.
4. Offset ditambahkan ke halaman asal untuk memberikan memori utama ada
berpakaian di mana kata itu berada.
5. Pembacaan atau penyimpanan akhirnya berlangsung.
Seperti yang sudah Anda duga sekarang, jika algoritme sebelumnya adalah
Akhirnya dilakukan oleh sistem operasi pada setiap instruksi, program tidak berlari
sangat cepat. Pada kenyataannya, perangkat keras MULTICS memiliki kecepatan tinggi
16 kata TLB yang dapat mencari semua entri secara paralel untuk kunci tertentu. Ini
yang pertama sistem untuk memiliki TLB, sesuatu yang digunakan di semua arsitektur
modern.
3.7.3 Segmentasi dengan Paging: Intel x86
Meskipun ada lebih sedikit segmen, ukuran segmen yang lebih besar jauh lebih
portant, karena beberapa program membutuhkan lebih dari 1000 segmen, tetapi banyak
program membutuhkannya segmen besar. Mulai x86-64, segmentasi dianggap usang
dan tidak lagi didukung, kecuali dalam mode lama. Meski beberapa sisa-sisa segmentasi
lama mekanisme masih tersedia dalam mode asli x86-64, sebagian besar untuk
kompatibilitas, mereka tidak lagi menjalankan peran yang sama dan tidak lagi

29
menawarkan segmentasi yang sebenarnya. Itu x86-32, bagaimanapun, masih dilengkapi
dengan seluruh shebang dan itu adalah CPU akan kita bahas di bagian ini.
Salah satu bit pemilih memberi tahu apakah segmen itu lokal atau global (yaitu,
apakah itu ada di LDT atau GDT). Tiga belas bit lainnya menentukan entri LDT atau
GDT nomor, jadi tabel ini masing-masing dibatasi untuk menampung deskriptor
segmen 8K. Itu 2 bit lainnya terkait dengan perlindungan, dan akan dijelaskan
nanti. Deskriptor 0 dilarang sarang. Ini dapat dimuat dengan aman ke register segmen
untuk menunjukkan segmen itu register saat ini tidak tersedia. Ini menyebabkan jebakan
jika digunakan. Pada saat pemilih dimuat ke register segmen, descriptor diambil dari
LDT atau GDT dan disimpan dalam register program mikro, jadi itu dapat diakses
dengan cepat.
Perangkat keras kemudian menggunakan bidang Batas untuk memeriksa apakah
offsetnya melebihi akhir segmen, dalam hal ini jebakan juga terjadi. Logikanya, harus
ada 32-bit kolom dalam deskriptor memberikan ukuran segmen, tetapi hanya 20 bit
yang tersedia, jadi skema yang berbeda digunakan. Jika kolom Gbit (Granularity)
adalah 0, kolom Limit adalah ukuran segmen yang tepat, hingga 1 MB. Jika
1, bidang Batas memberikan ukuran segmen di halaman, bukan dalam byte. Dengan
ukuran halaman 4 KB, 20 bit sudah cukup untuk segmen ments hingga 2 32 byte.
Jika paging dinonaktifkan (sedikit di register kontrol global), alamat liniernya
adalah diartikan sebagai alamat fisik dan dikirim ke memori untuk dibaca atau ditulis.
Jadi dengan paging dinonaktifkan, kami memiliki skema segmentasi murni, dengan
setiap segmen alamat dasar ment diberikan dalam deskriptornya. Segmen tidak dicegah
dari menjilat, mungkin karena akan terlalu merepotkan dan memakan waktu terlalu
lama verifikasi bahwa mereka semua terputus-putus.
Selama kesalahan TLB jarang terjadi, kinerjanya bagus. Perlu juga dicatat
bahwa jika beberapa aplikasi tidak memerlukan segmentasi tetapi cukup puas dengan
satu, halaman, ruang alamat 32-bit, model itu mungkin. Semua register segmen dapat
diatur dengan pemilih yang sama, yang deskriptornya memiliki Basis = 0
dan Batas disetel ke maksimum. Offset instruksi kemudian akan menjadi alamat linier,
dengan hanya satu ruang alamat yang digunakan — pada dasarnya, paging normal. Di
Faktanya, semua sistem operasi saat ini untuk x86 bekerja dengan cara ini. OS / 2

30
adalah satu-satunya salah satu yang menggunakan kekuatan penuh dari arsitektur MMU
Intel. Mengingat yang saling bertentangan tujuan penerapan paging murni, segmentasi
murni, dan segmen paged, sementara pada saat yang sama kompatibel dengan 286, dan
melakukan semua ini secara efisien, desain yang dihasilkan ternyata sangat sederhana
dan bersih.
3.8 PENELITIAN MANAJEMEN MEMORI
Manajemen memori tradisional, terutama algoritma paging untuk uniproces-
sor CPUs, dulunya merupakan area yang bermanfaat untuk penelitian, tetapi sebagian
besar tampaknya memiliki sebagian besar mati, setidaknya untuk sistem tujuan umum,
meskipun ada beberapa orang ple yang tidak pernah mengatakan mati (Moruz et al.,
2012) atau berfokus pada beberapa aplikasi, seperti pemrosesan transaksi online, yang
memiliki persyaratan khusus (Stoica dan Ailamaki, 2013). Bahkan pada uniprosesor,
paging ke SSD, bukan ke hard disk memunculkan masalah baru dan membutuhkan
algoritma baru (Chen et al., 2012). Paging ke memori perubahan fase nonvolatile yang
sedang naik daun juga membutuhkan pemikiran ulang.

31
B. BUKU PEMBANDING

Penyimpanan Pengelolaan
Tujuan utama dari sistem komputer adalah untuk menjalankan program. Ini
program, bersama dengan data yang mereka akses, setidaknya harus sebagian di memori
utama selama eksekusi. Untuk meningkatkan pemanfaatan CPU dan kecepatannya
menanggapi pengguna, komputer tujuan umum harus menjaga beberapa pro berhenti
dalam memori. Ada banyak skema manajemen memori, mencerminkan menggunakan
berbagai pendekatan, dan efektivitas setiap algoritme bergantung pada situasi
tersebut. Pemilihan skema manajemen memori untuk sistem tem tergantung pada
banyak faktor, terutama pada desain perangkat keras sistem. Sebagian besar algoritme
memerlukan dukungan perangkat keras.

8. Memori utama
Dalam bab ini, kami membahas berbagai cara untuk mengelola memori. Ingatan-
algoritma manajemen bervariasi dari pendekatan mesin telanjang primitif paging dan
strategi segmentasi. Setiap pendekatan memiliki kelebihannya masing-masing dan
kerugiannya. Pemilihan metode manajemen memori untuk tertentu sistem tergantung
pada banyak faktor, terutama pada desain perangkat keras sistem. Seperti yang akan kita
lihat, banyak algoritme memerlukan dukungan perangkat keras, memimpin banyak
sistem memiliki perangkat keras dan sistem operasi yang terintegrasi erat manajemen
memori.
8.1.1 Perangkat Keras Dasar
Memori utama dan register yang terpasang pada prosesor itu sendiri adalah satu-
satunya penyimpanan serba guna yang dapat diakses CPU secara langsung. Ada mesin

32
instruksi yang menggunakan alamat memori sebagai argumen, tetapi tidak ada yang
menggunakan disk alamat. Oleh karena itu, setiap instruksi dalam eksekusi, dan data
apa pun yang digunakan sesuai petunjuknya, harus berada di salah satu perangkat
penyimpanan akses langsung ini. Jika data tidak ada dalam memori, mereka harus
dipindahkan ke sana sebelum CPU dapat beroperasi pada mereka.
Register yang dibangun ke dalam CPU umumnya dapat diakses dalam satu
siklus jam CPU . Kebanyakan CPU dapat memecahkan kode instruksi dan melakukan
yang sederhana operasi pada isi register dengan kecepatan satu atau lebih operasi per
jam berdetak. Hal yang sama tidak berlaku untuk memori utama, yang diakses melalui
transaksi di bus memori. Menyelesaikan akses memori mungkin membutuhkan
banyak siklus jam CPU . Dalam kasus seperti itu, prosesor biasanya perlu kios , karena
tidak memiliki data yang diperlukan untuk menyelesaikan instruksi itu sedang
mengeksekusi. Situasi ini tidak dapat ditoleransi karena frekuensi memori
mengakses. Solusinya adalah dengan menambahkan memori cepat antara CPU dan
memori utama, biasanya pada chip CPU untuk akses cepat.
8.1.2 Address Binding
Biasanya, sebuah program berada pada disk sebagai file biner yang dapat
dieksekusi. Akan dieksekusi, program harus dibawa ke dalam memori dan ditempatkan
di dalam suatu proses. Tergantung pada manajemen memori yang digunakan, proses
dapat dipindahkan antara disk dan memori selama pelaksanaannya. Proses pada disk itu
sedang menunggu untuk dibawa ke memori untuk eksekusi dari antrian input .
Prosedur normal tugas tunggal adalah memilih salah satu proses dalam antrian masukan
dan untuk memuat proses itu ke dalam memori. Sebagai prosesnya dijalankan, itu
mengakses instruksi dan data dari memori. Akhirnya, proses berakhir, dan ruang
memorinya dinyatakan tersedia. Sebagian besar sistem memungkinkan proses pengguna
berada di bagian fisik mana pun Penyimpanan. Jadi, meskipun ruang alamat komputer
mungkin mulai dari 00000, alamat pertama dari proses pengguna tidak perlu 00000.
Anda akan lihat nanti caranya program pengguna sebenarnya menempatkan proses
dalam memori fisik.
Secara klasik, pengikatan instruksi dan data ke alamat memori bisa
dilakukan dengan langkah apa pun di sepanjang jalan:

33
• Kompilasi waktu . Jika Anda tahu pada waktu kompilasi di mana proses tersebut
akan berada dalam memori, maka kode absolut dapat dibuat. Misalnya, jika Anda tahu
bahwa proses pengguna akan berada mulai di lokasi R, kemudian dibuat kode
kompilator akan mulai di lokasi itu dan meluas dari sana. Jika, pada Beberapa waktu
kemudian, lokasi awal berubah, maka itu akan diperlukan untuk mengkompilasi ulang
kode ini. Program format MS-DOS .COM terikat pada waktu kompilasi.
• Waktu buka . Jika tidak diketahui pada waktu kompilasi di mana proses tersebut akan
berada dalam memori, maka kompilator harus menghasilkan kode yang dapat
direlokasi . Pada kasus ini, pengikatan akhir ditunda sampai waktu muat. Jika alamat
awal berubah, kami hanya perlu memuat ulang kode pengguna untuk memasukkan nilai
yang diubah ini.
• Waktu eksekusi . Jika proses dapat dipindahkan selama pelaksanaannya dari satu
segmen memori ke segmen lain, kemudian pengikatan harus ditunda hingga dijalankan
waktu. Perangkat keras khusus harus tersedia agar skema ini berfungsi, seperti yang
diinginkan dibahas di Bagian 8.1.3. Sebagian besar sistem operasi tujuan umum
digunakan metode ini.
8.1.4 Pembebanan Dinamis
Dalam diskusi kita sejauh ini, itu perlu untuk keseluruhan program dan
semuanya data dari suatu proses untuk berada dalam memori fisik untuk proses yang
akan dijalankan. Ukuran dari suatu proses dengan demikian telah dibatasi pada ukuran
memori fisik. Untuk memperoleh pemanfaatan ruang memori yang lebih baik, kita
dapat menggunakan pemuatan dinamis . Dengan dinamis memuat, rutin tidak dimuat
sampai dipanggil. Semua rutinitas disimpan di disk dalam format pemuatan yang dapat
direlokasi. Program utama dimuat ke dalam memori dan dieksekusi. Ketika rutinitas
perlu memanggil rutinitas lain, rutinitas menelepon cek pertama untuk melihat apakah
rutinitas lain telah dimuat. Jika belum, file linking loader yang dapat direlokasi
dipanggil untuk memuat rutin yang diinginkan ke dalam memori dan untuk
memperbarui tabel alamat program untuk mencerminkan perubahan ini. Kemudian
kontrol diteruskan ke rutinitas yang baru dimuat. Pembebanan dinamis tidak
memerlukan dukungan khusus dari pengoperasian sistem. Ini adalah tanggung jawab
pengguna untuk merancang program yang akan mereka ambil keuntungan dari metode

34
seperti itu. Sistem operasi dapat membantu programmer, namun, dengan menyediakan
rutinitas perpustakaan untuk mengimplementasikan pemuatan dinamis.
8.1.5 Tautan Dinamis dan Perpustakaan Bersama
Beberapa beroperasi sistem hanya mendukung tautan statis , di mana pustaka
sistem diperlakukan seperti modul objek lainnya dan digabungkan oleh loader ke dalam
biner gambar program. Tautan dinamis, sebaliknya, mirip dengan pemuatan dinamis.
Namun, di sini, penautan, bukan memuat, ditunda hingga waktu eksekusi.
Fitur ini biasanya digunakan dengan pustaka sistem, seperti subrutin bahasa
perpustakaan. Tanpa fasilitas ini, setiap program di sistem harus menyertakan
salinannya perpustakaan bahasanya (atau setidaknya rutinitas yang dirujuk oleh
program) di gambar yang dapat dieksekusi. Persyaratan ini menghabiskan ruang disk
dan memori utama. Dengan penautan dinamis, sebuah rintisan disertakan dalam
gambar untuk setiap perpustakaan referensi rutin. Rintisan adalah potongan kecil kode
yang menunjukkan cara mencari lokasi rutinitas pustaka penghuni memori yang sesuai
atau cara memuat pustaka ifrutinitas belum ada.
Program lain yang ditautkan sebelum perpustakaan baru dipasang akan
dilanjutkan menggunakan perpustakaan lama. Sistem ini juga dikenal
sebagai perpustakaan bersama . Tidak seperti pemuatan dinamis, penautan dinamis
dan pustaka bersama pada umumnya membutuhkan bantuan dari sistem operasi. Jika
proses dalam memori satu sama lain dilindungi, maka sistem operasi adalah satu-
satunya entitas yang dapat periksa untuk melihat apakah rutinitas yang dibutuhkan ada
di ruang memori proses lain atau yang memungkinkan banyak proses untuk mengakses
alamat memori yang sama.
8.2 Bertukar
Sistem akan selalu siap antrian yang terdiri dari semua proses yang gambar
memorinya berada di belakang simpan atau dalam memori dan siap dijalankan.
Kapanpun penjadwal CPU memutuskan untuk menjalankan suatu proses, itu memanggil
dispatcher. Petugas operator memeriksa apakah proses selanjutnya dalam antrian ada di
memori. Jika tidak, dan jika tidak ada yang gratis wilayah memori, petugas operator
menukar proses yang saat ini ada di memori dan swap dalam proses yang
diinginkan. Itu kemudian memuat ulang register dan mentransfer kontrol ke proses yang

35
dipilih. Waktu pengalihan konteks dalam sistem pertukaran seperti itu cukup
tinggi. Untuk mendapatkan Ide waktu konteks-switch, mari kita asumsikan bahwa
proses pengguna adalah 100 MB di ukuran dan penyimpanan dukungan adalah hard
disk standar dengan kecepatan transfer 50 MB per detik. Transfer sebenarnya dari
proses 100 MB ke atau dari memori utama mengambil 100 MB / 50 MB per detik = 2
detik Waktu swap adalah 200 milidetik. Karena kita harus menukar keduanya keluar
dan masuk, file total waktu swap sekitar 4.000 milidetik. (Di sini, kami mengabaikan
disk lain aspek kinerja, yang kami bahas di Bab 10.)
Jadi, sebuah proses dengan kebutuhan memori dinamis perlu mengeluarkan
panggilan sistem ( minta memori () dan lepaskan memori () ) untuk menginformasikan
sistem operasi dari kebutuhan memori yang berubah. Pertukaran juga dibatasi oleh
faktor lain. Jika kita ingin bertukar sebuah proses, kita harus yakin bahwa itu benar-
benar menganggur. Perhatian khusus adalah I / O yang menunggu keputusan . Suatu
proses mungkin menunggu operasi I / O saat kami ingin menukar proses itu untuk
mengosongkan memori. Namun, jika I / O- nya mengakses memori pengguna secara
asinkron untuk buffer I / O , lalu prosesnya tidak bisa ditukar. Asumsikan bahwa
operasi I / O antri karena perangkat sedang sibuk. Jika kita menukar proses P 1 dan
menukar dalam proses P 2 , file Operasi I / O kemudian mungkin mencoba
menggunakan memori yang sekarang menjadi milik proses P 2 . Ada dua solusi utama
untuk masalah ini: jangan pernah menukar proses dengan menunggu I / O , atau
menjalankan operasi I / O hanya ke dalam buffer sistem operasi. Transfer antara buffer
sistem operasi dan memori proses kemudian terjadi hanya ketika proses tersebut
ditukar. Perhatikan bahwa buffering ganda ini sendiri menambahkan
overhead. Sekarang kita perlu menyalin data lagi, dari memori kernel ke memori
pengguna, sebelum proses pengguna dapat mengaksesnya.
8.2.2 Bertukar pada Sistem Seluler
Meskipun kebanyakan sistem operasi untuk PC dan server mendukung beberapa
modifikasi versi swapping, sistem seluler biasanya tidak mendukung swapping
bentuk. Perangkat seluler umumnya menggunakan memori flash daripada yang lebih
luas hard disk sebagai penyimpanan persisten mereka. Batasan ruang yang dihasilkan
adalah satu alasan mengapa perancang sistem operasi seluler menghindari

36
pertukaran. Alasan lain termasuk jumlah penulisan terbatas yang dapat ditoleransi oleh
memori flash sebelumnya menjadi tidak dapat diandalkan dan throughput yang buruk
antara memori utama dan flash memori di perangkat ini.
Android tidak mendukung swapping dan mengadopsi strategi yang mirip dengan
itu digunakan oleh i OS . Ini dapat menghentikan proses jika tersedia memori bebas
yang tidak mencukupi. Namun, sebelum menghentikan suatu proses, Android menulis
status aplikasinya ke memori flash sehingga dapat dimulai ulang dengan cepat. Karena
batasan ini, pengembang untuk sistem seluler harus berhati-hati mengalokasikan dan
melepaskan memori untuk memastikan bahwa aplikasi mereka tidak digunakan juga
banyak memori atau mengalami kebocoran memori. Perhatikan bahwa saya OS dan
Android mendukung paging, sehingga mereka memiliki kemampuan manajemen
memori. Kita diskusikan paging nanti di bab ini.

8.3 Alokasi Memori Bersebelahan


Memori biasanya dibagi menjadi dua partisi: satu untuk residen sistem operasi
dan satu untuk proses pengguna. Kita bisa tempatkan operasinya sistem dalam memori
rendah atau memori tinggi. Faktor utama yang mempengaruhinya keputusan adalah
lokasi vektor interupsi. Karena vektor interupsi adalah sering kali dalam memori
rendah, pemrogram biasanya menempatkan sistem operasi di tempat rendah memori
juga.
Kami biasanya ingin beberapa proses pengguna berada di memori yang sama
waktu. Oleh karena itu kita perlu mempertimbangkan bagaimana mengalokasikan
memori yang tersedia ke proses yang berada dalam antrian input menunggu untuk
dibawa ke memori. Di alokasi memori yang berdekatan , setiap proses terdapat dalam
satu bagian memori yang berdekatan dengan bagian yang berisi proses selanjutnya.
8.3.1 Perlindungan Memori
kami mencapai tujuan kami. Register relokasi berisi nilai alamat fisik
terkecil; register batas berisi kisaran logika alamat (misalnya, relokasi = 100040 dan
batas = 74600). Masing-masing logis alamat harus berada dalam kisaran yang
ditentukan oleh register batas. The MMU memetakan alamat logis secara dinamis
dengan menambahkan nilai di relokasi daftar.

37
Fleksibilitas ini diinginkan di banyak situasi. Misalnya, sistem operasi berisi
kode dan buffer ruang untuk driver perangkat. Jika driver perangkat (atau layanan
sistem operasi lainnya) tidak umum digunakan, kami tidak ingin menyimpan kode dan
data di memori, seperti kami mungkin dapat menggunakan ruang itu untuk tujuan
lain. Kode seperti itu terkadang disebut kode sistem operasi transien ; itu datang dan
pergi sesuai kebutuhan. Jadi, menggunakan kode ini mengubah ukuran sistem operasi
selama program eksekusi.
8.3.2 Alokasi Memori
Sekarang kita siap beralih ke alokasi memori. Salah satu yang paling sederhana
metode untuk mengalokasikan memori adalah dengan membagi memori menjadi
beberapa yang berukuran tetap partisi . Setiap partisi dapat berisi satu proses. Jadi,
derajatnya multiprogramming dibatasi oleh jumlah partisi. Dalam kelipatan ini metode
partisi , ketika sebuah partisi bebas, proses dipilih dari input antrian dan dimuat ke
partisi gratis.
Prosedur ini adalah contoh khusus dari penyimpanan dinamis umum alokasi
masalah , yang menyangkut bagaimana memenuhi permintaan ukuran n dari daftar
lubang gratis. Ada banyak solusi untuk masalah ini. Yang pertama , paling cocok ,
dan strategi paling cocok adalah yang paling umum digunakan untuk memilih lubang
bebas dari set lubang yang tersedia.
• Kesesuaian pertama . Alokasikan lubang pertama yang cukup besar. Pencarian juga
bisa dimulai di awal set lubang atau di lokasi tempat sebelumnya pencarian pertama
berakhir. Kita bisa berhenti mencari begitu kita menemukan lubang bebas itu cukup
besar.
• Paling cocok . Alokasikan lubang terkecil yang cukup besar. Kita harus mencari
seluruh daftar, kecuali daftar tersebut diurutkan berdasarkan ukuran. Strategi ini
menghasilkan lubang sisa terkecil.
• Paling cocok . Alokasikan lubang terbesar. Sekali lagi, kita harus mencari seluruh
daftar, kecuali itu diurutkan berdasarkan ukuran. Strategi ini menghasilkan lubang sisa
terbesar, yang mungkin lebih berguna daripada lubang sisa yang lebih kecil dari yang
paling pas pendekatan.
8.3.3 Fragmentasi

38
Statistik analisis kecocokan pertama, misalnya, mengungkapkan bahwa, bahkan
dengan beberapa pengoptimalan, mengingat blok yang dialokasikan N , blok 0,5 N
lainnya akan hilang ke fragmentasi. Artinya, sepertiga dari memori mungkin tidak dapat
digunakan! Properti ini dikenal sebagai Aturan 50 persen . Fragmentasi memori bisa
internal maupun eksternal. Pertimbangkan askema alokasi multi-partisi dengan lubang
18.464 byte. Seandainya proses selanjutnya meminta 18.462 byte. Jika kita
mengalokasikan blok yang diminta dengan tepat, kita tersisa dengan lubang 2
byte. Overhead untuk melacak lubang ini akan menjadi jauh lebih besar dari lubang itu
sendiri. Pendekatan umum untuk menghindari hal ini Masalahnya adalah memecah
memori fisik menjadi blok berukuran tetap dan mengalokasikannya memori dalam unit
berdasarkan ukuran blok. Dengan pendekatan ini, memori dialokasikan ke suatu proses
mungkin sedikit lebih besar dari memori yang diminta.
8.4 Segmentasi
Seperti yang telah kita lihat, tampilan memori pengguna tidak sama dengan
aslinya ingatan fisik. Ini juga berlaku untuk pandangan programmer tentang memori.
Memang, berurusan dengan memori dalam kaitannya dengan sifat fisiknya tidak
nyaman untuk sistem operasi dan pemrogram. Bagaimana jika perangkat kerasnya bisa
menyediakan mekanisme memori yang memetakan pandangan pemrogram ke
memori fisik sebenarnya? Sistem akan memiliki lebih banyak kebebasan untuk
mengelola memori, sedangkan programmer akan memiliki pemrograman yang lebih
natural lingkungan Hidup. Segmentasi menyediakan mekanisme seperti itu.
8.4.1 Metode Dasar
Saat menulis program, seorang programmer menganggapnya sebagai program
utama dengan seperangkat metode, prosedur, atau fungsi. Ini juga dapat mencakup
berbagai data struktur: objek, larik, tumpukan, variabel, dan sebagainya. Masing-masing
modul ini atau elemen data disebut dengan nama. Pemrogram berbicara tentang
"tumpukan", "Perpustakaan matematika," dan "program utama" tanpa peduli alamat apa
dalam memori elemen-elemen ini menempati. Dia tidak peduli dengan apakah file
tumpukan disimpan sebelum atau sesudah fungsi Sqrt () . Panjang segmen bervariasi,
dan panjang masing-masing secara intrinsik ditentukan oleh tujuannya dalam program.

39
Elemen dalam segmen diidentifikasi dengan offsetnya sejak awal segmen: pernyataan
pertama dari program, entri bingkai tumpukan ketujuh dalam tumpukan, instruksi
kelima dari Akar () , dan seterusnya. Segmentasi adalah skema manajemen memori
yang mendukung pro tampilan grammer dari memori.
Biasanya, ketika sebuah program dikompilasi, kompilator secara otomatis
membangun segmen yang mencerminkan program masukan.
Kompiler AC mungkin membuat segmen terpisah untuk berikut ini:
1. Kode
2. Variabel global
3. Heap, tempat memori dialokasikan
4. Tumpukan yang digunakan oleh setiap utas
5. Perpustakaan C standar
Pustaka yang ditautkan selama waktu kompilasi mungkin ditugaskan secara terpisah
segmen. Loader akan mengambil semua segmen ini dan menetapkannya segmen
angka.
8.4.2 Perangkat Keras Segmentasi
Meskipun programmer sekarang dapat merujuk ke objek dalam program dengan
alamat dua dimensi, memori fisik sebenarnya masih, tentu saja, satu urutan dimensi
byte. Jadi, kita harus mendefinisikan implementasi ke memetakan dua dimensi alamat
yang ditentukan pengguna ke dalam fisik satu dimensi alamat. Pemetaan ini dilakukan
dengan tabel segmen . Setiap entri di tabel segmen memiliki basis segmen dan batas
segmen . Basis segmen berisi alamat fisik awal tempat segmen berada di memori,
dan batas segmen menentukan panjang segmen tersebut.
Sebagai contoh, perhatikan situasi yang ditunjukkan pada Gambar 8.9. Kami
punya lima segmen yang diberi nomor dari 0 sampai 4. Segmen tersebut disimpan
secara fisik memori seperti yang ditunjukkan. Tabel segmen memiliki entri terpisah
untuk setiap segmen, memberikan alamat awal segmen dalam memori fisik (atau basis)
dan panjang segmen (atau batas) itu. Misalnya, segmen 2 panjangnya 400 byte dan
dimulai di lokasi 4300. Jadi, referensi ke byte 53 dari segmen 2 dipetakan ke lokasi
4300 + 53 = 4353. Referensi ke segmen 3, byte 852, dipetakan ke 3200 (dasar segmen

40
3) + 852 = 4052. Referensi ke byte 1222 segmen 0 akan menyebabkan jebakan ke
sistem operasi, karena segmen ini hanya 1.000 byte.
8.5 Paging
Segmentasi memungkinkan ruang alamat fisik dari suatu proses menjadi non-
berdekatan. Paging adalah skema manajemen memori lain yang menawarkan ini
keuntungan. Namun, paging menghindari fragmentasi eksternal dan kebutuhan akan
pemadatan, sedangkan segmentasi tidak. Ini juga memecahkan masalah yang cukup
besar masalah pemasangan potongan memori dengan berbagai ukuran ke penyimpanan
dukungan. Kebanyakan skema manajemen memori digunakan sebelum pengenalan
halaman menderita masalah ini
Metode dasar untuk menerapkan paging melibatkan pemutusan memori fisik.
ory menjadi blok berukuran tetap yang disebut frame dan memecah memori logis
menjadi blok dengan ukuran yang sama disebut halaman . Ketika suatu proses akan
dieksekusi, itu halaman dimuat ke dalam frame memori yang tersedia dari sumbernya
(file sistem atau penyimpanan pendukung). Penyimpanan pendukung dibagi menjadi
ukuran tetap blok yang ukurannya sama dengan frame memori atau cluster dari
beberapa bingkai.
Selain itu, sistem operasi harus menyadari bahwa proses pengguna beroperasi
di ruang pengguna, dan semua alamat logis harus dipetakan untuk menghasilkan fisik
alamat. Jika pengguna membuat panggilan sistem (untuk melakukan I / O , misalnya)
dan menyediakan alamat sebagai parameter (buffer, misalnya), alamat itu harus
dipetakan untuk menghasilkan alamat fisik yang benar.
Setiap sistem operasi memiliki metode sendiri untuk menyimpan tabel
halaman. Beberapa alokasikan tabel halaman untuk setiap proses. Penunjuk ke tabel
halaman disimpan dengan nilai register lainnya (seperti penghitung instruksi) dalam
kontrol proses blok. Saat petugas operator diberitahu untuk memulai proses, itu harus
memuat ulang pengguna mendaftar dan menentukan nilai tabel halaman perangkat keras
yang benar dari pengguna yang disimpan tabel halaman.
The TLB bersifat asosiatif, memori berkecepatan tinggi. Setiap entri
di TLB terdiri dari dua bagian: kunci (atau tag) dan nilai. Ketika memori asosiatif
disajikan dengan item, item tersebut dibandingkan dengan semua kunci secara

41
bersamaan. Jika item ditemukan, bidang nilai yang sesuai dikembalikan. Pencariannya
cepat; sebuah TLB lookup di perangkat keras modern adalah bagian dari pipa instruksi,
pada dasarnya menambahkan no penalti kinerja. Untuk dapat melakukan pencarian
dalam langkah pipeline, namun, TLB harus tetap kecil. Biasanya antara 32 dan 1.024
entri dalam ukuran. Beberapa CPU menerapkan instruksi terpisah dan alamat
data TLB .
8.5.3 Perlindungan
Perlindungan memori dalam lingkungan halaman dicapai dengan bit
perlindungan terkait dengan setiap frame. Biasanya, bit ini disimpan di tabel halaman.
Satu bit dapat menentukan halaman menjadi baca-tulis atau hanya-baca. Setiap referensi
ke memori melewati tabel halaman untuk menemukan nomor bingkai yang benar. Di
bersamaan dengan penghitungan alamat fisik, bit perlindungan dapat diperiksa untuk
memverifikasi bahwa tidak ada penulisan yang dilakukan pada halaman hanya
baca. Sebuah mencoba untuk menulis ke halaman hanya-baca menyebabkan jebakan
perangkat keras untuk operasi sistem (atau pelanggaran perlindungan memori).
Jarang suatu proses menggunakan semua rentang alamatnya. Padahal, banyak
proses gunakan hanya sebagian kecil dari ruang alamat yang tersedia untuk mereka. Itu
akan boros dalam kasus ini untuk membuat tabel halaman dengan entri untuk setiap
halaman di kisaran alamat. Sebagian besar tabel ini tidak akan digunakan tetapi akan
berharga ruang memori. Beberapa sistem menyediakan perangkat keras, dalam
bentuk tabel halaman length register ( PTLR ) , untuk menunjukkan ukuran tabel
halaman. Nilai ini diperiksa terhadap setiap alamat logis untuk memverifikasi bahwa
alamat itu valid rentang untuk proses tersebut. Kegagalan tes ini menyebabkan jebakan
kesalahan untuk operasi sistem.
8.5.4 Halaman Bersama
Keuntungan paging adalah kemungkinan berbagi kode umum. Ini con
pertimbangan sangat penting dalam lingkungan berbagi waktu. Pertimbangkan sistem
yang mendukung 40 pengguna, yang masing-masing menjalankan editor teks. Jika teks
editor terdiri dari kode 150 KB dan ruang data 50 KB , kita membutuhkan
8.000 KB untuk mendukung 40 pengguna.
Program lain yang sering digunakan juga dapat dibagikan — kompiler, window

42
sistem, pustaka run-time, sistem database, dan sebagainya. Agar dapat dibagikan, file
kode harus reentrant. Sifat baca-saja dari kode bersama tidak boleh kiri ke kebenaran
kode; sistem operasi harus memberlakukan ini Properti.
8.6 Struktur Tabel Halaman
8.6.1 Hierarchical Paging
Dalam lingkungan seperti itu, tabel halaman itu sendiri menjadi berlebihan
besar. Misalnya, pertimbangkan sistem dengan ruang alamat logis 32-bit. Jika
ukuran halaman dalam sistem seperti itu adalah 4 KB (2 12 ), maka tabel halaman dapat
terdiri dari sampai 1 juta entri (2 32 /2 12 ). Dengan asumsi bahwa setiap entri terdiri
dari 4 byte, setiap proses mungkin memerlukan hingga 4 MB ruang alamat fisik untuk
tabel halaman sendirian. Jelas, kami tidak ingin mengalokasikan tabel halaman secara
berdekatan di memori utama. Salah satu solusi sederhana untuk masalah ini adalah
membagi tabel halaman menjadi potongan-potongan kecil. Kami dapat menyelesaikan
divisi ini dengan beberapa cara.
The VAX adalah 32 mesin bit dengan ukuran halaman 512 byte. Ruang alamat
logis dari suatu proses dibagi menjadi empat bagian yang sama, masing-masing terdiri
dari 2 30 byte. Setiap bagian mewakili bagian berbeda dari ruang alamat logis dari suatu
proses. Itu 2 bit orde tinggi pertama dari alamat logis menunjukkan bagian yang sesuai.
21 bit berikutnya mewakili nomor halaman logis dari bagian itu, dan yang terakhir 9 bit
mewakili offset di halaman yang diinginkan. Dengan mempartisi tabel halaman.
Dengan cara ini, sistem operasi dapat membiarkan partisi tidak digunakan hingga
sebuah proses membutuhkan mereka. Seluruh bagian dari ruang alamat virtual
seringkali tidak digunakan, dan tabel halaman bertingkat tidak memiliki entri untuk
spasi ini, sangat mengurangi jumlah memori yang dibutuhkan untuk menyimpan
struktur data memori virtual.
8.6.2 Tabel Halaman yang Di-hash
Representasi tabel ini wajar satu, karena memproses halaman referensi melalui
alamat virtual halaman. Itu sistem operasi kemudian harus menerjemahkan referensi ini
ke dalam memori fisik alamat. Karena tabel diurutkan berdasarkan alamat virtual,
sistem operasinya adalah dapat menghitung di mana dalam tabel entri alamat fisik
terkait terletak dan menggunakan nilai itu secara langsung. Salah satu kekurangan dari

43
metode ini adalah bahwa setiap tabel halaman dapat terdiri dari jutaan entri. Tabel ini
mungkin mengkonsumsi sejumlah besar memori fisik hanya untuk melacak cara lainnya
memori fisik sedang digunakan. Untuk mengatasi masalah ini, kita dapat
menggunakan tabel halaman terbalik.
8.6.4 Oracle SPARC Solaris
Pertimbangkan sebagai contoh terakhir CPU 64-bit modern dan sistem operasi
terintegrasi erat untuk menyediakan memori virtual dengan overhead rendah.
Solaris berlari pada 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 tabel halaman.
Pendekatannya agak rumit tetapi memecahkan masalah secara efisien menggunakan
tabel halaman berciri. Ada dua hash tabel — 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.
8.7 Contoh: Arsitektur Intel 32 dan 64-bit
Arsitektur chip Intel telah mendominasi lanskap komputer pribadi selama
beberapa tahun. Intel 8086 16-bit muncul pada akhir 1970-an dan segera diikuti oleh
chip 16-bit lainnya — Intel 8088 — yang terkenal karena keberadaannya chip yang
digunakan pada PC IBM asli . Baik chip 8086 dan chip 8088 adalah berdasarkan
arsitektur tersegmentasi. Intel kemudian menghasilkan serangkaian chip 32-bit-The IA -
32-yang termasuk keluarga prosesor 32-bit Pentium. Itu Arsitektur IA -32 mendukung
paging dan segmentasi.
8.7.1 Arsitektur IA-32
Manajemen memori dalam sistem IA -32 dibagi menjadi dua komponen
segmentasi dan paging dan berfungsi sebagai berikut: CPU menghasilkan logika alamat,
yang diberikan ke unit segmentasi. Unit segmentasi menghasilkan alamat linier untuk
setiap alamat logis.
8.7.1.1 Segmentasi IA-32
Ruang alamat logis dari suatu proses adalah dibagi menjadi dua partisi. Partisi
pertama terdiri hingga 8 K segmen itu bersifat pribadi untuk proses itu. Partisi kedua

44
terdiri hingga 8 K segmen yang dibagikan di antara semua proses. Informasi tentang
partisi pertama adalah disimpan dalam tabel deskriptor lokal ( LDT ) ; informasi
tentang partisi kedua disimpan dalam tabel deskriptor global ( GDT ) .
8.7.1.2 IA-32 Paging
Satu entri dalam direktori halaman adalah bendera Ukuran Halaman , yang jika
disetel menunjukkan bahwa ukuran bingkai halaman adalah 4 MB dan bukan standar
4 KB . Jika tanda ini disetel, direktori halaman mengarah langsung ke bingkai
halaman 4 MB , melewati tabel halaman dalam; dan 22 bit orde rendah di alamat linier
lihat offset dalam bingkai halaman 4 MB . Sebagai pengembang perangkat lunak mulai
menemukan batasan memori 4 GB dari arsitektur 32-bit, Intel mengadopsi ekstensi
alamat halaman ( PAE ) , yang memungkinkan prosesor 32-bit mengakses ruang
alamat fisik yang lebih besar dari 4 GB .
8.8 Contoh: Arsitektur ARM
Meskipun chip Intel telah mendominasi pasar komputer pribadi selama lebih
dari 30 tahun bertahun-tahun, sering kali chip untuk perangkat seluler seperti ponsel
cerdas dan komputer tablet sebagai gantinya dijalankan pada prosesor ARM 32-
bit . Menariknya, Intel sama-sama mendesain dan memproduksi chip, ARM hanya
mendesainnya. Ia kemudian melisensikan desainnya ke produsen chip. Apple telah
melisensikan desain ARM untuk iPhone dan iPad-nya perangkat seluler, dan beberapa
smartphone berbasis Android menggunakan prosesor ARM demikian juga.
8.9 Ringkasan
Dalam membandingkan berbagai strategi manajemen memori, kami menggunakan
pertimbangan berikut:
• Dukungan perangkat keras . Sebuah register dasar sederhana atau pasangan register
basis-batas adalah cukup untuk skema partisi tunggal dan ganda, sedangkan paging
dan segmentasi membutuhkan tabel pemetaan untuk menentukan peta alamat.
• Performa . Seiring algoritma manajemen memori menjadi lebih kompleks, waktu
yang diperlukan untuk memetakan alamat logis ke alamat fisik meningkat. Untuk sistem
sederhana, kita hanya perlu membandingkan atau menambah file alamat logis operasi
yang cepat. Paging dan segmentasi bisa secepat jika tabel pemetaan diimplementasikan
dalam register cepat. Jika tabelnya dalam memori, bagaimanapun, akses memori

45
pengguna dapat terdegradasi secara substansial. Sebuah TLB dapat mengurangi
penurunan kinerja untuk tingkat yang dapat diterima.
• Fragmentasi . Sistem multiprogram biasanya akan bekerja lebih banyak efisien jika
memiliki tingkat multiprogramming yang lebih tinggi. Untuk diberikan serangkaian
proses, kita dapat meningkatkan level multiprogramming hanya dengan mengemas
lebih banyak proses ke dalam memori. Untuk menyelesaikan tugas ini, kita harus
mengurangi pemborosan memori, atau fragmentasi. Sistem dengan allo- berukuran tetap
unit kation, seperti skema partisi tunggal dan halaman, menderita fragmentasi
internal. Sistem dengan unit alokasi berukuran variabel, seperti sebagai skema multi-
partisi dan segmentasi, menderita eksternal fragmentasi.
• Relokasi . Salah satu solusi untuk masalah fragmentasi eksternal adalah
paksi. Pemadatan melibatkan pengalihan program dalam memori seperti itu sehingga
program tidak menyadari adanya perubahan. Pertimbangan ini mengharuskan alamat
logis dipindahkan secara dinamis, pada waktu eksekusi. Jika alamat direlokasi hanya
pada waktu pemuatan, kami tidak dapat memadatkan penyimpanan.
• Bertukar . Swapping dapat ditambahkan ke algoritma apapun. Pada interval
menentukan ditambang oleh sistem operasi, biasanya ditentukan oleh kebijakan
penjadwalan CPU Sayangnya, proses disalin dari memori utama ke penyimpanan
cadangan dan kemudian disalin kembali ke memori utama. Skema ini memungkinkan
lebih banyak proses dijalankan daripada yang dapat dimasukkan ke dalam memori pada
satu waktu. Secara umum, operasi PC sistem mendukung paging, dan sistem operasi
untuk perangkat seluler tidak.
• Berbagi . Cara lain untuk meningkatkan level multiprogramming adalah dengan
berbagi kode dan data di antara proses yang berbeda. Berbagi biasanya membutuhkan
bahwa paging atau segmentasi digunakan untuk menyediakan paket kecil informasi
(halaman atau segmen) yang dapat dibagikan. Berbagi adalah sarana menjalankan
banyak proses dengan jumlah memori terbatas, tetapi digunakan bersama program dan
data harus dirancang dengan hati-hati.
• Perlindungan . Jika paging atau segmentasi disediakan, bagian yang berbeda dari
Program pengguna dapat dinyatakan hanya-eksekusi, hanya-baca, atau-baca-tulis. Ini
pembatasan diperlukan dengan kode atau data bersama dan secara umum berguna

46
dalam hal apa pun untuk memberikan pemeriksaan run-time sederhana untuk
pemrograman umum kesalahan.
9. Virtual Penyimpanan
Memori virtual adalah teknik yang memungkinkan pelaksanaan proses yang
tidak sepenuhnya ada dalam memori. Salah satu keuntungan utama dari skema ini
adalah bahwa program bisa lebih besar dari memori fisik. Selanjutnya, memori virtual
mengabstraksi memori utama ke dalam susunan penyimpanan yang sangat besar dan
seragam, memisahkan memori logis yang dilihat oleh pengguna dari memori fisik.
Teknik ini membebaskan programmer dari masalah penyimpanan memori
batasan. Memori virtual juga memungkinkan proses untuk berbagi file dengan mudah
dan untuk mengimplementasikan memori bersama. Selain itu, ini memberikan
mekanisme yang efisien untuk proses pembuatan.

9.1 Memori Virtual


Ruang alamat virtual yang memiliki lubang disebut sebagai ruang alamat
yang jarang .Menggunakan ruang alamat yang jarang bermanfaat karena lubang dapat
diisi sebagai
tumpukan atau segmen tumpukan tumbuh atau jika kita ingin menautkan perpustakaan
secara dinamis (atau
mungkin objek bersama lainnya) selama eksekusi program.
Selain memisahkan memori logis dari memori fisik, virtual
memori memungkinkan file dan memori digunakan bersama oleh dua atau lebih proses
melalui berbagi halaman. Ini mengarah pada manfaat berikut:
• Perpustakaan sistem dapat digunakan bersama oleh beberapa proses melalui pemetaan
objek bersama ke dalam ruang alamat virtual. Meskipun setiap proses
mempertimbangkan perpustakaan menjadi bagian dari ruang alamat virtualnya, halaman
sebenarnya di mana perpustakaan yang berada di memori fisik digunakan bersama oleh
semua proses. Biasanya, pustaka dipetakan hanya-baca ke dalam ruang masing-masing
proses yang terkait dengannya.
• Demikian pula, proses dapat berbagi memori. Ingat dari Bab 3 bahwa dua itu
atau lebih banyak proses dapat berkomunikasi melalui penggunaan memori bersama.

47
Memori virtual memungkinkan satu proses untuk membuat wilayah memori yang ia
bisa berbagi dengan proses lain. Proses berbagi wilayah ini menganggapnya bagian
ruang alamat virtual mereka, namun halaman fisik sebenarnya dari memori tersebut
dibagikan.
• Halaman dapat dibagikan selama pembuatan proses dengan panggilan sistem fork () ,
sehingga mempercepat proses pembuatan.
9.2 Demand Paging
Pertimbangkan bagaimana program yang dapat dieksekusi dapat dimuat dari
disk ke dalam memori. Salah satu opsinya adalah memuat seluruh program dalam
memori fisik pada program waktu eksekusi. Namun, masalah dengan pendekatan ini
adalah kami mungkin tidak melakukannya awalnya membutuhkan seluruh program di
memori. Misalkan sebuah program dimulai dengan daftar opsi yang tersedia untuk
dipilih pengguna. Memuat seluruhnya program ke dalam hasil memori dalam memuat
kode yang dapat dieksekusi untuk semua opsi, terlepas dari apakah suatu opsi pada
akhirnya dipilih oleh pengguna atau tidak. Sebuah strategi alternatif adalah memuat
halaman hanya jika diperlukan. Teknik ini dikenal sebagai permintaan paging dan
biasanya digunakan dalam sistem memori virtual. Dengan memori virtual halaman
permintaan, halaman dimuat hanya saat halaman tersebut dimuat diminta selama
eksekusi program. Halaman yang tidak pernah diakses dengan demikian tidak pernah
dimuat ke dalam memori fisik.
9.2.1 Konsep Dasar
Prosedur untuk menangani kesalahan halaman ini sangat mudah :
1. Kami memeriksa tabel internal (biasanya disimpan dengan blok kontrol proses)
untuk proses ini untuk menentukan apakah referensi itu valid atau akses memori tidak
valid.
2. Jika referensi tidak valid, kami menghentikan proses. Jika itu valid tapi kami belum
membawa halaman itu, sekarang kami memasukkannya.
3. Kami menemukan bingkai gratis (dengan mengambil salah satu dari daftar bingkai
bebas, misalnya).
4. Kami menjadwalkan operasi disk untuk membaca halaman yang diinginkan menjadi
yang baru bingkai yang dialokasikan.

48
5. Ketika pembacaan disk selesai, kami memodifikasi tabel internal yang disimpan
dengan proses dan tabel halaman untuk menunjukkan bahwa halaman tersebut sekarang
dalam memori.
6. Kami memulai kembali instruksi yang diinterupsi oleh jebakan. Proses sekarang
dapat mengakses halaman seolah-olah selalu ada di memori.
Perangkat keras untuk mendukung paging permintaan sama dengan perangkat
kerasnya paging dan swapping:
• Tabel halaman . Tabel ini memiliki kemampuan untuk menandai entri yang tidak
valid melalui valid bit tidak valid atau nilai khusus bit proteksi.
• Memori sekunder . Memori ini menampung halaman-halaman yang tidak ada di
memori utama. Memori sekunder biasanya berupa disk berkecepatan tinggi. Ini dikenal
sebagai perangkat swap, dan bagian dari disk yang digunakan untuk tujuan ini adalah
dikenal sebagai ruang swap .
Masalah halaman menyebabkan urutan berikut ini
terjadi:
1. Perangkap ke sistem operasi.
2. Simpan register pengguna dan status proses.
3. Tentukan bahwa interupsi adalah kesalahan halaman.
4. Periksa apakah referensi halaman legal dan tentukan lokasi
halaman di disk.
5. Terbitkan pembacaan dari disk ke bingkai gratis:
Sebuah.
a. Tunggu dalam antrian untuk perangkat ini sampai permintaan baca dilayani.
b. Tunggu pencarian perangkat dan / atau waktu latensi.
c. Mulailah mentransfer halaman ke bingkai gratis.
6. Sambil menunggu, alokasikan CPU ke beberapa pengguna lain ( penjadwalan CPU ,
pilihan).
7. Menerima interupsi dari disk I / O subsistem ( I / O selesai).
8. Simpan register dan status proses untuk pengguna lain (jika langkah 6 dijalankan).
9. Tentukan bahwa interupsi berasal dari disk.

49
10. Perbaiki tabel halaman dan tabel lainnya untuk menunjukkan bahwa halaman yang
diinginkan adalah sekarang dalam ingatan.
11. Tunggu hingga CPU dialokasikan untuk proses ini lagi.
12. Kembalikan register pengguna, status proses, dan tabel halaman baru, dan kemudian
melanjutkan instruksi yang terputus.
9.3 Salin-saat-Tulis
Jelas, saat copy-on-write teknik digunakan, hanya halaman yang dimodifikasi
oleh salah satu proses yang akan disalin; semua halaman yang tidak dimodifikasi dapat
dibagikan oleh proses induk dan anak. Perhatikan juga, bahwa hanya halaman yang
dapat dimodifikasi yang perlu ditandai sebagai salin-saat-tulis. Halaman yang tidak
dapat diubah (halaman yang berisi kode yang dapat dieksekusi) dapat dibagikan oleh
orang tua dan anak. Copy-on-write adalah teknik umum yang digunakan oleh beberapa
orang sistem operasi, termasuk Windows XP , Linux, dan Solaris. Ketika ditentukan
bahwa halaman akan diduplikasi menggunakan copy pada saat menulis, penting untuk
mencatat lokasi dari mana halaman gratis akan dialokasikan. Banyak sistem operasi
menyediakan kumpulan halaman gratis untuk itu permintaan. Halaman gratis ini
biasanya dialokasikan saat tumpukan atau heap untuk proses harus berkembang atau
ketika ada halaman copy-on-write untuk dikelola.
9.4 Penggantian Halaman
Jadi, jika kami memiliki empat puluh bingkai, kami dapat menjalankan delapan
proses, daripada empat yang bisa berjalan jika masing-masing membutuhkan sepuluh
frame (lima yang tidak pernah digunakan). Jika kita meningkatkan derajat
multiprogramming kita, kita mengalokasikan terlalu banyak Penyimpanan. Jika kita
menjalankan enam proses, yang masing-masing berukuran sepuluh halaman tetapi
sebenarnya hanya menggunakan lima halaman, kami memiliki penggunaan dan
throughput CPU yang lebih tinggi, dengan sepuluh frame tersisa. Namun, mungkin saja
setiap proses ini, untuk a kumpulan data tertentu, mungkin tiba-tiba mencoba
menggunakan kesepuluh halamannya, menghasilkan file membutuhkan enam puluh
frame ketika hanya empat puluh yang tersedia. Selanjutnya, pertimbangkan bahwa
memori sistem tidak hanya digunakan untuk menampung program halaman. Buffer
untuk I / O juga menghabiskan banyak memori.

50
9.4.1 Penggantian Halaman Dasar
Penggantian halaman mengambil pendekatan berikut. Jika tidak ada bingkai
yang gratis, kami temukan salah satu yang saat ini tidak digunakan dan gratiskan. Kita
bisa membebaskan bingkai dengan menulis isinya untuk menukar ruang dan mengubah
tabel halaman (dan semua tabel lainnya) menjadi menunjukkan bahwa halaman tersebut
tidak lagi berada dalam memori.
1. Temukan lokasi halaman yang diinginkan pada disk.
2. Temukan bingkai gratis: Sebuah. Jika ada bingkai gratis, gunakanlah.
b. Jika tidak ada bingkai gratis, gunakan algoritme penggantian halaman untuk memilih
sebuah bingkai korban .
c. Tulis frame korban ke disk; mengubah halaman dan bingkai tabel demikian.
3. Bacalah halaman yang diinginkan ke dalam bingkai yang baru dibebaskan; ubah
halaman dan tabel bingkai.
4. Lanjutkan proses pengguna dari mana kesalahan halaman terjadi. Perhatikan bahwa,
jika tidak ada bingkai yang gratis, transfer dua halaman (satu keluar dan satu masuk)
diperlukan. Situasi ini secara efektif menggandakan waktu layanan kesalahan halaman
dan meningkatkan waktu akses efektif yang sesuai.
9.4.2 Penggantian Halaman FIFO
Algoritme penggantian halaman yang paling sederhana adalah algoritme masuk
pertama, keluar pertama ( FIFO ). Sebuah FIFO algoritma penggantian rekan dengan
setiap halaman waktu ketika itu halaman dibawa ke dalam memori. Ketika sebuah
halaman harus diganti, yang terlama halaman dipilih. Perhatikan bahwa tidak
sepenuhnya perlu mencatat waktu kapan halaman dibawa masuk Kita dapat
membuat antrian FIFO untuk menampung semua halaman dalam memori. Kami
mengganti halaman di bagian depan antrian. Saat sebuah halaman dibawa ke memori,
kami memasukkannya di ekor antrian.
9.4.3 Penggantian Halaman Optimal
Salah satu hasil penemuan anomali Belady adalah pencarian yang optimal
algoritme penggantian halaman algoritme yang memiliki kesalahan halaman terendah
menilai semua algoritme dan tidak akan pernah menderita anomali Belady. Seperti

51
algoritma memang ada dan disebut OPT atau MIN . Ini sederhananya: Ganti halaman
yang tidak akan digunakan untuk jangka waktu yang lama.
9.4.4 Penggantian Halaman LRU
Jika algoritme optimal tidak layak, mungkin merupakan perkiraan dari
algoritma optimal dimungkinkan. Perbedaan utama antara FIFO dan OPT
algoritma (selain melihat ke belakang versus ke depan dalam waktu) adalah bahwa
Algoritma FIFO menggunakan waktu ketika sebuah halaman dibawa ke memori,
sedangkan yang OPT algoritma menggunakan waktu saat halaman yang
akan digunakan. Jika kita menggunakan recent masa lalu sebagai perkiraan dalam
waktu dekat, maka kita bisa mengganti halaman itu tidak digunakan untuk jangka
waktu yang lama. Pendekatan ini paling sedikit algoritma baru-baru ini digunakan
( LRU ) .
Dua implementasi dapat dilakukan:
• Penghitung . Dalam kasus paling sederhana, kami mengasosiasikan dengan setiap
entri tabel halaman kolom waktu penggunaan dan menambahkan clock atau counter
logis ke CPU . Jamnya adalah bertambah untuk setiap referensi memori. Setiap kali
referensi ke halaman dibuat, isi register jam disalin ke waktu penggunaan
bidang di entri tabel halaman untuk halaman itu. Dengan cara ini, kami selalu
melakukannya "waktu" dari referensi terakhir untuk setiap halaman. Kami mengganti
halaman dengan nilai waktu terkecil. Skema ini membutuhkan pencarian dari tabel
halaman untuk menemukan yang LRU halaman dan menulis ke memori (untuk bidang
waktu-of-digunakan di halaman tabel) untuk setiap akses memori. Waktu juga harus
dipertahankan kapan tabel halaman berubah (karena penjadwalan CPU ). Melimpahnya
jam harus diperhatikan.
• Tumpukan . Pendekatan lain untuk melaksanakan penggantian LRU adalah dengan
menjaga tumpukan nomor halaman. Setiap kali halaman direferensikan, itu dihapus
dari tumpukan dan diletakkan di atas. Dengan cara ini, yang terakhir digunakan
halaman selalu di bagian atas tumpukan dan halaman yang paling terakhir digunakan
selalu di bagian bawah (Gambar 9.16). Karena entri harus dihapus dari tengah
tumpukan, yang terbaik adalah menerapkan pendekatan ini dengan menggunakan file
daftar tertaut ganda dengan penunjuk kepala dan penunjuk ekor. Menghapus halaman

52
dan meletakkannya di atas tumpukan maka perlu mengubah enam petunjuk paling
buruk.Setiap pembaruan sedikit lebih mahal, tetapi tidak ada pencarian pengganti:
penunjuk ekor menunjuk ke bagian bawah tumpukan, yaitu yang LRU halaman.
Pendekatan ini sangat sesuai untuk perangkat lunak atau implementasi mikrokode
pengganti LRU.
9.4.5 Penggantian Halaman Perkiraan LRU
Faktanya, beberapa sistem tidak memberikan dukungan perangkat keras, dan
lainnya algoritma penggantian halaman (seperti algoritma FIFO ) harus digunakan.
Banyak sistem memberikan bantuan, bagaimanapun, dalam bentuk bit referensi . Itu
bit referensi untuk halaman ditetapkan oleh perangkat keras setiap kali halaman tersebut
dirujuk (baik membaca atau menulis ke byte mana pun di halaman). Bit referensi
dikaitkan dengan setiap entri di tabel halaman. Informasi ini adalah dasar untuk banyak
penggantian halaman algoritma yang mendekati penggantian LRU.
9.4.5.1 Algoritma Bit Referensi Tambahan
Kita dapat memperoleh informasi pemesanan tambahan dengan merekam bit referensi
di berkala. Kita dapat menyimpan byte 8-bit untuk setiap halaman dalam sebuah tabel di
memori. Pada interval reguler (katakanlah, setiap 100 milidetik), interupsi pengatur
waktu ditransfer kontrol ke sistem operasi. Sistem operasi menggeser bit referensi
untuk setiap halaman ke bit orde tinggi dari byte 8-bitnya, menggeser bit lainnya ke
kanan dengan 1 bit dan membuang bit orde rendah.
9.4.5.2 Algoritma Kesempatan Kedua
Algoritme dasar penggantian kesempatan kedua adalah pengganti FIFO algoritma.
Namun, ketika sebuah halaman telah dipilih, kami memeriksa referensinya sedikit. Jika
nilainya 0, kami melanjutkan untuk mengganti halaman ini; tetapi jika referensi sedikit
diatur ke 1, kami memberikan halaman kesempatan kedua dan melanjutkan untuk
memilih berikutnya Halaman FIFO . Saat halaman mendapat kesempatan kedua, bit
referensinya dihapus, dan waktu kedatangannya disetel ulang ke waktu saat ini.
9.4.5.3 Algoritma Kesempatan Kedua yang Ditingkatkan
Kita dapat meningkatkan algoritma kesempatan kedua dengan mempertimbangkan bit
referensi dan bit modifikasi sebagai pasangan berurutan. Dengan ini dua bit, kami
memiliki empat kemungkinan kelas berikut:

53
1. (0, 0) tidak baru-baru ini digunakan atau dimodifikasi — halaman terbaik untuk
diganti
2. (0, 1) tidak baru-baru ini digunakan tetapi dimodifikasi — tidak terlalu bagus, karena
halaman harus ditulis sebelum diganti
3. (1, 0) baru-baru ini digunakan tetapi bersih — mungkin akan segera digunakan lagi
4. (1, 1) baru-baru ini digunakan dan dimodifikasi - mungkin akan segera digunakan
lagi, dan halaman tersebut perlu ditulis ke disk sebelum dapat diganti Setiap halaman
berada dalam salah satu dari empat kelas ini. Saat penggantian halaman diperlukan,
kami menggunakan skema yang sama seperti pada algoritma jam; tapi bukannya
memeriksa apakah halaman yang kita tunjuk memiliki bit referensi yang disetel ke 1,
kami memeriksa kelas tempat halaman itu berada. Kami mengganti halaman pertama
ditemui di kelas nonempty terendah. Perhatikan bahwa kami mungkin harus memindai
antrian melingkar beberapa kali sebelum kami menemukan halaman untuk diganti.
Perbedaan utama antara algoritma ini dan algo- jam yang lebih sederhana rithm adalah
bahwa di sini kami memberikan preferensi ke halaman-halaman yang telah dimodifikasi
untuk mengurangi jumlah I / Os yang dibutuhkan.
9.4.6 Penggantian Halaman Berbasis Penghitungan
Misalnya, kita dapat menyimpan penghitung dari jumlah referensi yang telah
ada dibuat untuk setiap halaman dan kembangkan dua skema berikut.
• The setidaknya sering digunakan ( LFU ) algoritma page-pengganti mengharuskan
halaman dengan jumlah terkecil diganti. Alasan pemilihan ini adalah bahwa halaman
yang digunakan secara aktif harus memiliki jumlah referensi yang besar. Masalah
muncul, bagaimanapun, ketika sebuah halaman banyak digunakan selama fase awal
sebuah proses tetapi kemudian tidak pernah digunakan lagi. Karena sering digunakan, ia
memiliki file jumlah besar dan tetap dalam memori meskipun tidak lagi diperlukan.
Salah satu solusinya adalah menggeser hitungan ke kanan 1 bit secara berkala,
membentuk jumlah penggunaan rata-rata yang menurun secara eksponensial.
• The paling sering digunakan ( MFU ) algoritma page-pengganti didasarkan
pada argumen bahwa halaman dengan jumlah terkecil mungkin saja adil dibawa masuk
dan belum digunakan. Seperti yang Anda duga, baik penggantian MFU maupun LFU

54
tidak umum. Itu implementasi dari algoritme ini mahal, dan tidak mendekati Pengganti
OPT dengan baik.
9.4.7 Algoritma Page-Buffering
Prosedur memungkinkan proses untuk memulai kembali secepat mungkin, tanpa
menunggu untuk halaman korban yang akan ditulis. Ketika korban kemudian ditulis, itu
bingkai ditambahkan ke kumpulan bingkai bebas. Perluasan ide ini adalah
mempertahankan daftar halaman yang dimodifikasi. Kapanpun perangkat paging tidak
aktif, halaman yang diubah dipilih dan ditulis ke disk. Bit modifikasinya kemudian
diatur ulang. Skema ini meningkatkan kemungkinan sebuah halaman akan menjadi
bersih saat dipilih untuk diganti dan tidak perlu ditulis di luar.
9.4.8 Aplikasi dan Penggantian Halaman
Contoh tipikal adalah database, yang menyediakannya sendiri manajemen
memori dan buffering I / O. Aplikasi seperti ini mengerti penggunaan memori dan
penggunaan disk mereka lebih baik daripada sistem operasi menerapkan algoritma
untuk penggunaan tujuan umum. Jika sistem operasinya adalah buffering I / O dan
aplikasi melakukannya juga, namun, dua kali lipat memori yang digunakan untuk satu
set I / O . Di sini, MFU sebenarnya lebih efisien daripada LRU . Karena masalah seperti
itu, beberapa sistem operasi memberikan program khusus kemampuan untuk
menggunakan partisi disk sebagai array berurutan besar dari blok logis, tanpa struktur
data sistem file. Larik ini terkadang disebut mentah disk , dan I / O untuk array ini
disebut I / O mentah .
9.5 Alokasi Bingkai
Jika ruang ini tidak digunakan oleh sistem operasi, ruang ini dapat digunakan
untuk mendukung paging pengguna. Kami dapat mencoba untuk menyimpan tiga
bingkai gratis di daftar bingkai bebas selalu. Jadi, ketika terjadi kesalahan halaman, ada
bingkai gratis yang tersedia untuk halaman ke. Saat pertukaran halaman berlangsung,
penggantinya dapat dipilih, yang kemudian ditulis ke disk saat proses pengguna terus
dijalankan. Varian lain juga dimungkinkan, tetapi strategi dasarnya jelas: proses
pengguna dialokasikan bingkai gratis apa pun.
9.5.1 Jumlah Minimum Frame

55
Kami juga harus mengalokasikan setidaknya jumlah minimum bingkai. Di sini,
kami melihat lebih dekat pada persyaratan terakhir. Salah satu alasan untuk
mengalokasikan setidaknya jumlah minimum frame yang terlibat kinerja. Jelas, sebagai
jumlah frame yang dialokasikan untuk setiap proses menurun, tingkat kesalahan
halaman meningkat, memperlambat eksekusi proses. Tambahan, Ingatlah bahwa, ketika
kesalahan halaman terjadi sebelum instruksi eksekusi selesai, instruksi harus direstart.
Konsekuensinya, kita harus punya cukup bingkai untuk menampung semua halaman
berbeda yang dapat dilakukan oleh instruksi tunggal referensi.
9.5.2 Algoritma Alokasi
Alternatifnya adalah dengan menyadari bahwa berbagai proses membutuhkan
perbedaan jumlah memori. Pertimbangkan sistem dengan ukuran bingkai 1- KB . Jika
kecil proses siswa 10 KB dan database interaktif 127 KB adalah satu-satunya
dua proses berjalan dalam sistem dengan 62 frame gratis, itu tidak menghasilkan banyak
akal untuk memberikan setiap proses 31 frame. Proses siswa tidak membutuhkan lebih
banyak dari 10 frame, jadi 21 lainnya, sebenarnya, sia-sia.
Perhatikan bahwa, dengan alokasi yang sama atau proporsional, prioritas tinggi
proses diperlakukan sama sebagai proses dengan prioritas rendah. Namun, menurut
definisinya, kami mungkin ingin memberikan proses prioritas tinggi lebih banyak
memori untuk mempercepatnya eksekusi, sehingga merugikan proses dengan prioritas
rendah. Salah satu solusinya adalah dengan menggunakan skema alokasi proporsional
dimana rasio frame tidak bergantung ukuran relatif dari proses tetapi lebih pada prioritas
proses atau pada kombinasi ukuran dan prioritas.
9.5.3 Alokasi Global versus Lokal
Faktor penting lainnya dalam cara frame dialokasikan ke berbagai
proses adalah penggantian halaman. Dengan banyak proses yang bersaing untuk
bingkai, kita dapat mengklasifikasikan algoritme penggantian halaman menjadi dua
kategori besar: global penggantian dan penggantian lokal . Penggantian global
memungkinkan proses untuk pilih bingkai pengganti dari kumpulan semua bingkai,
bahkan jika bingkai itu adalah saat ini dialokasikan untuk beberapa proses lain; artinya,
satu proses dapat mengambil kerangka dari yang lain. Penggantian lokal mengharuskan
setiap proses memilih hanya dari prosesnya set sendiri dari frame yang dialokasikan.

56
9.5.4 Akses Memori Non-Seragam
Papan sistem saling berhubungan dengan berbagai cara, mulai dari
bus sistem ke koneksi jaringan berkecepatan tinggi seperti InfiniBand. Seperti yang
Anda bisa berharap, CPU pada papan tertentu dapat mengakses memori pada papan itu
dengan penundaan kurang dari yang mereka dapat mengakses memori di papan lain
dalam sistem. Sistem di mana waktu akses memori bervariasi secara signifikan dikenal
secara kolektif sebagai sistem non-uniform memory access ( NUMA ) , dan tanpa
kecuali, mereka lebih lambat daripada sistem di mana memori dan CPU berada di
tempat yang sama motherboard.
Mengelola bingkai halaman mana yang disimpan di lokasi mana dapat secara
signifikan mempengaruhi kinerja dalam sistem NUMA . Jika kita memperlakukan
memori sebagai seragam seperti itu sistem, CPU mungkin menunggu jauh lebih lama
untuk akses memori daripada jika kita memodifikasi algoritma alokasi memori untuk
memperhitungkan NUMA . Serupa perubahan harus dilakukan pada sistem
penjadwalan. Tujuan dari perubahan ini adalah memiliki frame memori yang
dialokasikan “sedekat mungkin” dengan CPU yang prosesnya sedang berjalan.
9.6 Meronta-ronta
Faktanya, lihat proses apa pun yang tidak memiliki bingkai "cukup". Jika
proses tidak memiliki jumlah frame yang dibutuhkan untuk mendukung halaman
penggunaan aktif, itu akan dengan cepat kesalahan halaman. Pada titik ini, beberapa
halaman harus diganti. Namun, karena semua halamannya aktif digunakan, halaman
tersebut harus menggantikan halaman yang akan digunakan dibutuhkan lagi segera.
Akibatnya, itu dengan cepat membuat kesalahan lagi, dan lagi, dan sekali lagi,
mengganti halaman yang harus segera dibuka kembali.
9.6.1 Penyebab Perontokan
Hasil meronta-ronta dalam masalah kinerja yang parah. Simak berikut ini
skenario, yang didasarkan pada perilaku sebenarnya dari sistem halaman awal.
Sistem operasi memantau penggunaan CPU . Jika pemakaian CPU terlalu rendah,
kami meningkatkan derajat multiprogramming dengan memperkenalkan proses baru
ke sistem. Algoritme penggantian halaman global digunakan; itu menggantikan
halaman tanpa memperhatikan proses di mana mereka berasal.

57
9.6.2 Model Perangkat Kerja
Seperti disebutkan, model perangkat kerja didasarkan pada asumsi lokalitas.
Model ini menggunakan parameter,, untuk menentukan jendela set kerja . Ide
adalah untuk memeriksa yang terbaru referensi halaman. Kumpulan halaman paling
banyak baru referensi halaman adalah set kerja . Jika halaman aktif gunakan, itu akan
berada di set kerja. Jika tidak lagi digunakan, itu akan hilang dari set kerja satuan waktu
setelah referensi terakhirnya. Jadi, set kerja adalah perkiraan lokalitas program.
9.6.3 Frekuensi Kesalahan Halaman
Jika tingkat kesalahan halaman berada di bawah batas bawah, kami menghapus
bingkai dari proses. Jadi, kita bisa langsung mengukur dan mengontrol kesalahan
halaman tingkat untuk mencegah meronta-ronta. Seperti halnya strategi kerja, kita
mungkin harus mengganti proses. Jika Tingkat kesalahan halaman meningkat dan tidak
ada bingkai gratis yang tersedia, kita harus memilih beberapa memproses dan
menukarnya dengan penyimpanan pendukung. Bingkai yang dibebaskan kemudian
didistribusikan ke proses dengan tingkat kesalahan halaman yang tinggi.
9.6.4 Penutup
Praktis berbicara, meronta-ronta dan hasil swapping tidak menyenangkan
berdampak besar pada kinerja. Praktik terbaik saat ini dalam menerapkan fasilitas
komputer harus menyertakan memori fisik yang cukup, bila memungkinkan, untuk
menghindari meronta-ronta dan bertukar. Dari smartphone hingga mainframe,
menyediakan memori yang cukup untuk menyimpan semua set kerja di memori secara
bersamaan, kecuali dalam kondisi ekstrim, memberikan pengalaman pengguna terbaik.
9.7 File yang Dipetakan Memori
Pertimbangkan pembacaan file secara berurutan pada disk menggunakan panggilan
sistem standar open () , read () , dan write () . Setiap akses file membutuhkan panggilan
sistem dan disk mengakses. Alternatifnya, kita dapat menggunakan teknik memori
virtual yang dibahas sejauh ini memperlakukan file I / O sebagai akses memori
rutin. Pendekatan ini dikenal sebagai pemetaan memori file, memungkinkan bagian
dari ruang alamat virtual secara logis terkait dengan file tersebut. Seperti yang akan kita
lihat, ini dapat menghasilkan kinerja yang signifikan meningkat.
9.7.1 Mekanisme Dasar

58
Beberapa proses dapat diizinkan untuk memetakan file yang sama secara
bersamaan, untuk memungkinkan berbagi data. Penulisan oleh salah satu proses
memodifikasi data di memori virtual dan dapat dilihat oleh semua orang lain yang
memetakan bagian yang sama berkas. Mengingat diskusi kami sebelumnya tentang
memori virtual, itu harus jelas bagaimana berbagi bagian memori yang dipetakan dari
memori diimplementasikan: peta memori virtual dari setiap proses berbagi mengarah ke
halaman yang sama memori fisik — halaman yang menyimpan salinan blok disk.
Memori ini berbagi diilustrasikan.
9.7.2 Memori Bersama di Windows API
Garis besar umum untuk membuat wilayah memori bersama menggunakan
memori file yang dipetakan di Windows API melibatkan pembuatan pemetaan
file untuk file yang akan dipetakan dan kemudian membuat tampilan file yang
dipetakan dalam proses ruang alamat virtual. Proses kedua kemudian dapat membuka
dan membuat tampilan file yang dipetakan di ruang alamat virtualnya. File yang
dipetakan mewakili objek memori bersama yang memungkinkan terjadinya komunikasi
antara proses.
9.7.3 I / O yang Dipetakan Memori
Biasanya, I / O khusus instruksi memungkinkan transfer data antara register ini
dan memori sistem. Untuk memungkinkan akses yang lebih nyaman ke perangkat I / O ,
banyak arsitektur komputer menyediakan I / O yang dipetakan memori . Dalam kasus
ini, rentang alamat memori adalah sisihkan dan dipetakan ke register perangkat.
Membaca dan menulis ini alamat memori menyebabkan data ditransfer ke dan dari
perangkat register. Metode ini cocok untuk perangkat yang memiliki waktu respons
cepat, seperti pengontrol video. Di PC IBM , setiap lokasi di layar dipetakan ke lokasi
memori. Menampilkan teks di layar hampir semudah menulis teks ke lokasi yang
dipetakan memori yang sesuai.
9.8 Mengalokasikan Memori Kernel
Ada dua yang utama alasan untuk ini:
1. Kernel meminta memori untuk struktur data dengan berbagai ukuran, beberapa di
antaranya yang ukurannya kurang dari satu halaman. Akibatnya kernel harus

59
menggunakan memori secara konservatif dan berupaya meminimalkan limbah karena
fragmentasi. Ini sangat penting karena banyak sistem operasi tidak terpengaruh
kode kernel atau data ke sistem halaman.
2. Halaman yang dialokasikan untuk proses mode pengguna tidak harus dalam keadaan
masuk memori fisik yang berdekatan. Namun, perangkat keras tertentu berinteraksi
langsung dengan memori fisik tanpa memanfaatkan memori virtual antarmuka dan
akibatnya mungkin memerlukan memori yang berada secara fisik halaman yang
bersebelahan.
9.8.1 Sistem Buddy
Sistem buddy mengalokasikan memori dari segmen berukuran tetap yang terdiri dari
halaman yang berdekatan secara fisik. Memori dialokasikan dari segmen ini
menggunakan pengalokasi daya 2 , yang memenuhi permintaan dalam unit berukuran
sebagai pangkat 2 (4 KB , 8 KB , 16 KB , dan lain sebagainya). Permintaan dalam unit
berukuran tidak tepat dibulatkan ke pangkat tertinggi berikutnya 2. Misalnya,
permintaan 11 KB adalah puas dengan segmen 16 KB .
9.8.2 Alokasi Slab
Strategi kedua untuk mengalokasikan memori kernel dikenal sebagai alokasi
slab . SEBUAHslab terdiri dari satu atau lebih halaman yang berdekatan secara
fisik. Sebuah Cache terdiri dari satu atau lebih lempengan. Ada satu cache untuk setiap
struktur data kernel yang unik Misalnya, cache terpisah untuk struktur data yang
merepresentasikan proses deskriptor, cache terpisah untuk objek file, cache terpisah
untuk semaphore, Dan seterusnya. Setiap cache diisi dengan objek yang merupakan
contoh dari struktur data kernel yang diwakili oleh cache. Misalnya, cache mewakili
semaphore menyimpan instance objek semaphore, cache mewakili process descriptors
menyimpan contoh objek deskriptor proses, dan seterusnya.
Di Linux, slab mungkin berada di salah satu dari tiga kemungkinan status:
1. Penuh . Semua objek di slab ditandai sebagai bekas.
2. Kosong . Semua objek di slab ditandai sebagai bebas.
3. Parsial . Slab terdiri dari benda bekas dan bebas.

60
9.9 Pertimbangan Lainnya
Keputusan utama yang kami buat untuk sistem paging adalah pilihannya
algoritma pengganti dan kebijakan alokasi, yang telah kita bahas sebelumnya
di bab ini. Ada banyak pertimbangan lain juga, dan kami berdiskusi beberapa di
antaranya di sini.
9.9.1 Mempersiapkan
Properti yang jelas dari paging permintaan murni adalah banyaknya kesalahan
halaman yang terjadi saat proses dimulai. Situasi ini diakibatkan oleh upaya untuk
mendapatkan lokalitas awal ke dalam memori. Mempersiapkan adalah upaya untuk
mencegah paging awal tingkat tinggi ini. Strateginya adalah mengingat pada
satu kali semua halaman yang akan dibutuhkan. Beberapa sistem operasi khususnya
Solaris — mempersiapkan bingkai halaman untuk file kecil. Dalam sistem yang
menggunakan model set kerja, misalnya, kita bisa menggunakan masing-masing
memproses daftar halaman dalam set kerjanya. Jika kita harus menunda proses
(karena menunggu I / O atau kurangnya frame gratis), kami mengingat set kerja untuk
proses itu.
9.9.2 Ukuran Halaman
Para perancang sistem operasi untuk mesin yang ada jarang memilikinya
pilihan tentang ukuran halaman. Namun, saat mesin baru sedang dibuat dirancang,
keputusan mengenai ukuran halaman terbaik harus dibuat. Seperti yang Anda bisa
berharap, tidak ada satu pun ukuran halaman terbaik. Sebaliknya, ada sekumpulan
faktor itu mendukung berbagai ukuran. Ukuran halaman selalu pangkat 2, umumnya
berkisar dari 4.096 (2 12 ) menjadi 4.194.304 (2 22 ) byte.
9.9.3 Jangkauan TLB
Jelas, rasio hit terkait ke jumlah entri di TLB , dan cara untuk meningkatkan
rasio klik adalah dengan meningkatkan jumlah entri di TLB . Ini, bagaimanapun, tidak
datang murah, karena memori asosiatif yang digunakan untuk membangun TLB
keduanya mahal dan haus kekuasaan. Terkait dengan rasio klik adalah metrik yang
serupa: jangkauan TLB . The TLB jangkauan mengacu ke jumlah memori yang dapat
diakses dari TLB dan hanya jumlahnya entri dikalikan dengan ukuran halaman.
Idealnya, perangkat kerja untuk suatu proses adalah disimpan di TLB . Jika tidak,

61
prosesnya akan menghabiskan banyak uang waktu menyelesaikan referensi memori di
tabel halaman daripada TLB .
9.9.4 Tabel Halaman Terbalik
Bagian 8.6.3 memperkenalkan konsep tabel halaman terbalik. Tujuan
bentuk manajemen halaman ini adalah untuk mengurangi jumlah memori fisik
diperlukan untuk melacak terjemahan alamat virtual-ke-fisik. Kami mencapai ini
penghematan dengan membuat tabel yang memiliki satu entri per halaman memori
fisik, diindeks oleh pasangan < process-id, page-number > . Karena mereka menyimpan
informasi tentang halaman memori virtual mana yang disimpan di setiap bingkai fisik,
tabel halaman terbalik mengurangi jumlah fisik memori yang dibutuhkan untuk
menyimpan informasi ini. Namun, tabel halaman terbalik tidak lagi berisi informasi
lengkap tentang ruang alamat logis proses, dan informasi itu diperlukan jika halaman
referensi saat ini tidak dalam kenangan.
9.9.6 I / O Interlock dan Page Locking
Saat permintaan paging digunakan, terkadang kami perlu mengizinkan beberapa
halaman untuk dikunci dalam memori. Satu situasi seperti itu terjadi ketika I / O
dilakukan ke atau dari memori pengguna (virtual). I / O sering diimplementasikan
oleh prosesor I / O terpisah. Misalnya, pengontrol untuk perangkat penyimpanan USB
biasanya diberi nomor byte untuk mentransfer dan alamat memori untuk buffer. Kapan
transfer selesai, CPU terputus. Kita harus yakin bahwa urutan kejadian berikut ini tidak
terjadi: Proses mengeluarkan permintaan I / O dan dimasukkan ke dalam antrian
untuk perangkat I / O tersebut . Sementara itu, CPU diberikan ke proses lain.
9.10 Contoh Sistem Operasi
Pada bagian ini, kami menjelaskan bagaimana Windows dan Solaris
mengimplementasikan virtual Penyimpanan.
9.10.1 Windows
Windows mengimplementasikan memori virtual menggunakan permintaan paging
dengan pengelompokan .Clustering menangani kesalahan halaman dengan membawa
tidak hanya halaman kesalahan tetapi juga beberapa halaman setelah halaman
kesalahan.
Terkait dengan daftar ini adalah nilai ambang batas yang digunakan

62
untuk menunjukkan apakah tersedia memori kosong yang memadai. Jika terjadi
kesalahan halaman sebuah proses yang berada di bawah maksimum set kerja, manajer
memori virtual mengalokasikan halaman dari daftar halaman gratis ini. Jika sebuah
proses yang ada di set kerjanya maksimum menimbulkan kesalahan halaman, itu harus
memilih halaman untuk penggantian menggunakan kebijakan penggantian halaman
LRU lokal.
9.10.2 Solaris
Di Solaris, ketika utas mengalami kesalahan halaman, kernel menetapkan
halaman ke kesalahan thread dari daftar halaman gratis yang dimilikinya. Oleh karena
itu, sangat penting bahwa kernel menyimpan cukup banyak memori kosong yang
tersedia. Terkait dengan daftar halaman gratis ini ada parameter— lotfree —yang
mewakili ambang batas untuk memulai paging. The lotsfree parameter biasanya set ke
1 / 64 ukuran memori fisik. Empat kali per detik, pemeriksaan kernel apakah jumlah
memori bebas kurang dari banyak yang bebas .
9.11 Ringkasan
Sangat diharapkan untuk dapat menjalankan proses yang ruang alamat logisnya
lebih besar dari ruang alamat fisik yang tersedia. Memori virtual adalah sebuah teknik
yang memungkinkan kami untuk memetakan ruang alamat logis yang besar ke fisik
yang lebih kecil Penyimpanan. Memori virtual memungkinkan kita menjalankan proses
yang sangat besar dan meningkatkan derajat multiprogramming, meningkatkan
penggunaan CPU . Selanjutnya, itu membebaskan pemrogram aplikasi dari
kekhawatiran tentang ketersediaan memori. Di Selain itu, dengan memori virtual,
beberapa proses dapat berbagi pustaka sistem dan memori. Dengan memori virtual, kita
juga dapat menggunakan jenis proses yang efisien pembuatan yang dikenal sebagai
copy-on-write, di mana proses induk dan anak berbagi halaman memori yang
sebenarnya.

63
BAB III
RINGKASAN
A. Analisis :
1.1 Keunggulan Buku Utama :
- Diberikan penjelasan yang lebih detail.
-Adanya contoh atau ilusrasi dalam setiap bab.
1.2 Kelemahan Buku Pembanding:
-Bahasa yang di gunakan terlalu tinggi sampai idak dapat di pahami.
- Telalu banyak halaman.
2.1 Keunggulan Buku Pembanding
- Ditambah latihan di akhir bab.
- Diberikan ilusrasi pada buku.
2.2 Kelemahan Buku Pembanding
-Banyak penjelasan yang sudah di jelaskan sebelumnya.
-Susunan ada yang kurang rapi.

64
BAB IV
PENUTUP
A. Kesimpulan
Memori adalah isilah generic bagi tempat penyimpanan data dalam komputer.
Memoy biasanya disebut sebagai RAM, singkatan dari Random Access
Memory. Memory berfungsi sebagai tempat penyimpanan data sementara.
Penyimpanan internal adalah sebuah penyimpanan yang dapat diakses langsung
oleh processor. Jenis memori ini biasanya terdapat di dalam sebuah perangkat,
jadi tidak terlihat.
B. Saran
Hendaknya kita sebagai mahasiswa lebih banyak membaca buku sebagai
referensi pembendaharaan ilmu pengetahuan. Sebaliknya kedua buku ini di
miliki mahasiswa agar dapat mebjadi buku pedoman yang baik bagi para
mahasiswa dan mengetahui tentang komputer.
Semoga dengan membaca CBR ini dapat bermanfaa dan dijadikan sebagai
modal dalam mempelajari sisem operasi komputer.

65

Anda mungkin juga menyukai