halaman fisik tidak boleh memiliki dua (atau lebih) alamat virtual bersama. Teknik
sederhana untuk mengatasi masalah ini adalah dengan mengizinkan tabel halaman
berisi hanya satu pemetaan alamat virtual ke alamat fisik bersama. Ini berarti bahwa
referensi ke alamat virtual yang tidak dipetakan mengakibatkan kesalahan halaman.
384
Bab 8 Memori Utama
alamat
segmentasi alamat logis alamat linier unit fisik fisik
CPU
satuan halaman Penyimpanan
Di bagian ini, kami memeriksa terjemahan alamat untuk arsitektur IA-32 dan x86-64.
Namun, sebelum melanjutkan, penting untuk dicatat bahwa karena Intel telah merilis
beberapa versi—serta variasi—arsitekturnya selama bertahun-tahun, kami tidak dapat
memberikan deskripsi lengkap tentang struktur manajemen memori semua chipnya. Kami
juga tidak dapat memberikan semua detail CPU , karena informasi tersebut sebaiknya
diserahkan ke buku tentang arsitektur komputer. Sebaliknya, kami menyajikan konsep
manajemen memori utama dari CPU Intel ini.
Arsitektur IA-32 memungkinkan segmen sebesar 4 GB, dan jumlah segmen maksimum
per proses adalah 16 K. Ruang alamat logis dari suatu proses dibagi menjadi dua partisi.
Partisi pertama terdiri dari hingga 8 Ksegmen yang bersifat privat untuk proses tersebut.
Partisi kedua terdiri dari hingga 8 K segmen yang dibagi di antara semua proses. Informasi
tentang partisi pertama disimpan di tabel deskriptor lokal (LDT); informasi tentang partisi
kedua disimpan dalam tabel deskriptor global (GDT). Setiap entri di LDT dan GDT terdiri
dari deskriptor segmen 8-byte dengan informasi rinci tentang segmen tertentu, termasuk
lokasi dasar dan batas segmen itu.
Alamat logis adalah pasangan (pemilih, offset), di mana pemilih adalah nomor 16-bit:
s g p
13 1 2
meja deskriptor
deskriptor segmen +
Alamat linier pada IA-32 panjangnya 32 bit dan dibentuk sebagai berikut.
Register segmen menunjuk ke entri yang sesuai di LDT atau GDT. Informasi dasar dan
batas tentang segmen tersebut digunakan untuk menghasilkan alamat linier. Pertama,
limit digunakan untuk memeriksa validitas alamat. Jika alamat tidak valid, kesalahan
memori dihasilkan, mengakibatkan jebakan ke sistem operasi. Jika valid, maka nilai offset
ditambahkan ke nilai basis, menghasilkan alamat linier 32-bit. Hal ini ditunjukkan pada
Gambar 8.22. Pada bagian berikut, kita membahas bagaimana unit paging mengubah
alamat linier ini menjadi alamat fisik.
p1 p2 d
10 10 12
Skema terjemahan alamat untuk arsitektur ini mirip dengan skema yang ditunjukkan pada
Gambar 8.18. Terjemahan alamat IA-32 ditunjukkan lebih rinci pada Gambar 8.23. 10 bit
orde tinggi mereferensikan sebuah entri dalam tabel halaman terluar, yang oleh IA-32
disebut sebagai direktori halaman. ( Register CR3 menunjuk ke direktori halaman untuk
proses saat ini.) Entri direktori halaman menunjuk ke tabel halaman dalam yang diindeks
oleh isi 10 bit terdalam di alamat linier. Akhirnya, bit orde rendah 0–11 merujuk ke offset
di halaman 4-KB yang ditunjukkan di tabel halaman.
Satu entri dalam direktori halaman adalah bendera Ukuran Halaman , yang—jika
disetel—menunjukkan bahwa ukuran bingkai halaman adalah 4 MB dan bukan 4 KB standar.
Jika bendera ini disetel, direktori halaman menunjuk langsung ke bingkai halaman 4-MB ,
melewati tabel halaman dalam; dan 22 bit orde rendah dalam alamat linier mengacu pada
offset dalam bingkai halaman 4 MB .
Machine Translated by Google
31 22 21 12 11 0
halaman 4-KB
meja halaman
halaman
direktori
CR3 4-MB
daftar halaman
31 22 21 0
Untuk meningkatkan efisiensi penggunaan memori fisik, tabel halaman IA-32 dapat
ditukar ke disk. Dalam hal ini, bit yang tidak valid digunakan di direktori halaman
entri untuk menunjukkan apakah tabel yang ditunjuk entri ada di memori
atau pada disk. Jika tabel ada di disk, sistem operasi dapat menggunakan yang lain 31
bit untuk menentukan lokasi disk tabel. Meja kemudian dapat dibawa ke
memori sesuai permintaan.
Saat pengembang perangkat lunak mulai menemukan keterbatasan memori 4 GB
arsitektur 32-bit, Intel mengadopsi ekstensi alamat halaman (PAE), yang
memungkinkan prosesor 32-bit untuk mengakses ruang alamat fisik yang lebih besar dari 4 GB. Itu
perbedaan mendasar yang diperkenalkan oleh dukungan PAE adalah bahwa paging berasal dari
skema dua tingkat (seperti yang ditunjukkan pada Gambar 8.23) ke skema tiga tingkat, di mana:
dua bit teratas merujuk ke tabel penunjuk direktori halaman. Gambar 8.24 mengilustrasikan
sistem PAE dengan halaman 4-KB . (PAE juga mendukung halaman 2-MB .)
31 30 29 21 20 12 11 0
4-KB
halaman
CR3
daftar direktori halaman halaman halaman
63 47 48 12 11 0
PAE juga meningkatkan entri direktori halaman dan tabel halaman dari ukuran 32
menjadi 64 bit, yang memungkinkan alamat dasar tabel halaman dan bingkai halaman
diperpanjang dari 20 menjadi 24 bit. Dikombinasikan dengan offset 12-bit,
menambahkan dukungan PAE ke IA-32 meningkatkan ruang alamat menjadi 36 bit,
yang mendukung memori fisik hingga 64 GB . Penting untuk dicatat bahwa dukungan
sistem operasi diperlukan untuk menggunakan PAE. Baik Linux dan Intel Mac OS X
mendukung PAE. Namun, sistem operasi desktop Windows versi 32-bit masih
menyediakan dukungan hanya untuk memori fisik 4 GB , meskipun PAE diaktifkan.
8.7.2 x86-64
Intel memiliki sejarah yang menarik dalam mengembangkan arsitektur 64-bit. Entri
awalnya adalah arsitektur IA-64 (kemudian bernama Itanium) , tetapi arsitektur itu
tidak diadopsi secara luas. Sementara itu, produsen chip lain— AMD — mulai
mengembangkan arsitektur 64-bit yang dikenal sebagai x86-64 yang didasarkan pada
perluasan set instruksi IA-32 yang ada. x86-64 mendukung ruang alamat logis dan
fisik yang jauh lebih besar, serta beberapa kemajuan arsitektur lainnya. Secara
historis, AMD sering mengembangkan chip berdasarkan arsitektur Intel, tetapi
sekarang peran tersebut dibalik karena Intel mengadopsi arsitektur x86-64 AMD .
Dalam membahas arsitektur ini, daripada menggunakan nama komersial AMD64 dan
Intel 64, kita akan menggunakan istilah yang lebih umum x86-64.
Dukungan untuk ruang alamat 64-bit menghasilkan memori yang dapat
dialamatkan sebesar 264 byte—angka yang lebih besar dari 16 quintillion (atau 16 exabytes).
Namun, meskipun sistem 64-bit berpotensi dapat mengatasi memori sebanyak ini,
dalam praktiknya jauh lebih sedikit dari 64 bit yang digunakan untuk representasi
alamat dalam desain saat ini. Arsitektur x86-64 saat ini menyediakan alamat virtual
48-bit dengan dukungan untuk ukuran halaman 4 KB, 2 MB, atau 1 GB menggunakan
empat tingkat hierarki paging. Representasi alamat linier tampak pada Gambar 8.25.
Karena skema pengalamatan ini dapat menggunakan PAE, alamat virtual berukuran
48 bit tetapi mendukung alamat fisik 52-bit (4096 terabyte).
KOMPUTER 64-BIT
Sejarah telah mengajarkan kita bahwa meskipun kapasitas memori, kecepatan CPU , dan
kemampuan komputer serupa tampaknya cukup besar untuk memenuhi permintaan di
masa mendatang, pertumbuhan teknologi pada akhirnya menyerap kapasitas yang
tersedia, dan kita mendapati diri kita membutuhkan memori tambahan atau kekuatan
pemrosesan, seringkali lebih cepat dari yang kita kira. Apa yang mungkin dibawa oleh
teknologi masa depan yang akan membuat ruang alamat 64-bit tampak terlalu kecil?
Machine Translated by Google
Sistem paging yang digunakan tergantung pada apakah halaman atau bagian sedang
direferensikan. Paging satu tingkat digunakan untuk bagian 1-MB dan 16-MB ; halaman
dua tingkat digunakan untuk halaman 4-KB dan 16-KB . Terjemahan alamat dengan ARM
MMU ditunjukkan pada Gambar 8.26.
Arsitektur ARM juga mendukung dua tingkat TLB. Di tingkat luar ada dua TLB mikro
—sebuah TLB terpisah untuk data dan satu lagi untuk instruksi.
TLB mikro juga mendukung ASID . Di tingkat dalam adalah TLB utama tunggal.
Terjemahan alamat dimulai pada tingkat mikro TLB . Dalam kasus miss, TLB utama
kemudian diperiksa. Jika kedua TLB menghasilkan kesalahan, langkah tabel halaman
harus dilakukan di perangkat keras.
32 bit
4-KB
atau
halaman
16-KB
1-MB
atau
Bagian
16-MB
8.9 Ringkasan
Algoritme manajemen memori untuk sistem operasi multiprogram mulai dari pendekatan sistem
pengguna tunggal yang sederhana hingga segmentasi dan paging. Penentu terpenting dari metode
yang digunakan dalam sistem tertentu adalah perangkat keras yang disediakan. Setiap alamat
memori yang dihasilkan oleh CPU harus diperiksa legalitasnya dan kemungkinan dipetakan ke
alamat fisik.
Pengecekan tidak dapat diimplementasikan (efisien) dalam perangkat lunak. Oleh karena itu, kami
terkendala oleh perangkat keras yang tersedia.
Berbagai algoritma manajemen memori (alokasi bersebelahan, paging, segmentasi, dan
kombinasi paging dan segmentasi) berbeda dalam banyak aspek. Dalam membandingkan berbagai
strategi manajemen memori, kami menggunakan pertimbangan berikut:
• Dukungan perangkat keras. Sebuah register dasar sederhana atau pasangan register batas-
dasar sudah cukup untuk skema partisi tunggal dan ganda, sedangkan paging dan segmentasi
membutuhkan tabel pemetaan untuk mendefinisikan peta alamat.
• Kinerja. Ketika algoritma manajemen memori menjadi lebih kompleks, waktu yang dibutuhkan
untuk memetakan alamat logis ke alamat fisik meningkat. Untuk sistem sederhana, kita hanya
perlu membandingkan atau menambah alamat logis—operasi yang cepat. Paging dan
segmentasi bisa secepat jika tabel pemetaan diimplementasikan dalam register cepat. Namun,
jika tabel ada di dalam memori, akses memori pengguna dapat diturunkan secara substansial.
TLB dapat mengurangi penurunan kinerja ke tingkat yang dapat diterima. • Fragmentasi.
Sistem multiprogram umumnya akan bekerja lebih efisien jika memiliki tingkat multiprogram yang
lebih tinggi. Untuk sekumpulan proses tertentu, 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 unit alokasi
berukuran tetap, seperti skema partisi tunggal dan paging, mengalami fragmentasi internal.
Sistem dengan unit alokasi berukuran variabel, seperti skema dan segmentasi multi-partisi,
mengalami fragmentasi eksternal.
• Relokasi. Salah satu solusi untuk masalah eksternal-fragmentasi adalah pemadatan. Pemadatan
melibatkan pemindahan program dalam memori sedemikian rupa sehingga program tidak
memperhatikan perubahan tersebut. Pertimbangan ini mengharuskan alamat logis dipindahkan
secara dinamis, pada waktu eksekusi.
Jika alamat direlokasi hanya pada waktu buka, kami tidak dapat memadatkan penyimpanan.
• Bertukar. Swapping dapat ditambahkan ke algoritma apapun. Pada interval yang ditentukan
oleh sistem operasi, biasanya ditentukan oleh kebijakan penjadwalan CPU, proses disalin
dari memori utama ke backing store dan kemudian disalin kembali ke memori utama. Skema
ini memungkinkan lebih banyak proses untuk dijalankan daripada yang dapat dimasukkan ke
dalam memori pada satu waktu. Secara umum, sistem operasi PC 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
umumnya mengharuskan baik paging atau segmentasi digunakan untuk menyediakan paket-
paket kecil dari
Machine Translated by Google
Latihan Latihan
8.1 Sebutkan dua perbedaan antara alamat logis dan alamat fisik.
8.2 Pertimbangkan sebuah sistem di mana program dapat dipisahkan menjadi dua
bagian: kode dan data. CPU mengetahui apakah ia menginginkan instruksi
(pengambilan instruksi) atau data (pengambilan atau penyimpanan data). Oleh
karena itu, dua pasangan register basis-batas disediakan: satu untuk instruksi dan satu untuk data
Pasangan register basis-batas instruksi secara otomatis read-only, sehingga
program dapat dibagi di antara pengguna yang berbeda. Diskusikan keuntungan
dan kerugian dari skema ini.
8.3 Mengapa ukuran halaman selalu pangkat 2?
8.4 Pertimbangkan ruang alamat logis 64 halaman masing-masing 1.024 kata, dipetakan
ke memori fisik 32 frame.
8.5 Apa efek membiarkan dua entri dalam tabel halaman menunjuk ke bingkai halaman
yang sama di memori? Jelaskan bagaimana efek ini dapat digunakan untuk
mengurangi jumlah waktu yang diperlukan untuk menyalin sejumlah besar memori
dari satu tempat ke tempat lain. Apa pengaruh memperbarui beberapa byte pada
satu halaman di halaman lain?
8.6 Jelaskan mekanisme dimana satu segmen dapat menjadi bagian dari ruang alamat
dari dua proses yang berbeda.
8.7 Berbagi segmen di antara proses tanpa mengharuskan mereka memiliki nomor
segmen yang sama dimungkinkan dalam sistem segmentasi yang terhubung
secara dinamis.