MANAJEMEN MEMORY
Disusun Oleh:
NIM : 5203151019
FAKULTAS TEKNIK
Puji dan syukur penulis panjatkan kepada Tuhan Yang Maha Esa, karena penulis masih dapat
membuat tugas Critical Book Report (CBR) ini tepat pada waktunya. Makalah ini membahas
tentang “Manajemen Memory”.
Adapun tugas ini dibuat untuk memenuhi tugas CBR mata kuliah sistem operasi komputer.
Penulis berharap makalah ini bisa menjadi salah satu referensi bagi pembaca bila mana
hendak membandingkan isi dua buku yang berisi tentang materi yang berhubungan dengan
Manajemen Memory.
Kritik dan saran yang membangun dari pembaca sangat penulis harapkan supaya makalah ini
menjadi lebih baik. Akhir kata, penulis mengucapkan terimakasih kepada pembaca atas
perhatiannya.
Penulis
i
DAFTAR ISI
ii
BAB I
Pendahuluan
1.1 Latar Belakang
Critical Book Report adalah sebuah karya hasil dari kritikan/bandingan dari suatu topik
materi yang bertujuan untuk mengetahui isi buku, akan tetapi lebih menitikberatkan
kepada evaluasi terhadap buku yang berbeda. Penulisan Critical Book Report ini pada
dasarnya adalah untuk memenuhi tugas mata kuliah Sistem Operasi komputer
1.2 Tujuan
1.3 Manfaat
1. Agar pembaca mengetahui hal-hal penting yang ada didalam pembahasan ini
2. Agar memahami materi yang dibahas
3. Agar penulis terlatih dalam mengkritik suatu buku
1
BAB II
ISI BUKU
Edisi : Keempat
Edisi : Kesembilan
Penerbit : Wiley
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
2
set alamat dari 0 hingga beberapa maksimum, setiap alamat sesuai genangan ke sel yang berisi
sejumlah bit, biasanya delapan.
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
lainnya. Sistem operasi e-Cos adalah contoh umum dari sistem operasi sebagai perpustakaan.
Di komputer pribadi, ini com mon untuk membuka beberapa program sekaligus (pengolah kata,
program email, file Browser web), salah satunya memiliki fokus saat ini, tetapi yang lainnya
aktif vated di klik mouse. Karena situasi ini sulit dicapai bila ada abstraksi dari ingatan fisik,
sesuatu harus dilakukan.
Sebuah alamat space adalah himpunan alamat yang dapat digunakan proses untuk
mengalamatkan memori. Setiap proses 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.
3.2.2 Bertukar
Secara umum, ada dua cara untuk melacak penggunaan memori: bitmap dan daftar gratis.
Dengan pemasangan yang cepat, menemukan lubang dengan ukuran yang dibutuhkan sangatlah
cepat, tetapi ia berhasil kerugian yang sama seperti semua skema yang diurutkan berdasarkan
ukuran lubang, yaitu, ketika proses berakhir atau ditukar, mencari tetangganya untuk melihat
apakah bergabung dengan mereka mungkin harganya cukup mahal. Jika penggabungan tidak
dilakukan, memori akan cepat pecah menjadi sejumlah besar lubang kecil di mana tidak ada
proses yang cocok.
3
Dalam arti tertentu, memori virtual adalah generalisasi dari base and limit register ide. 8088
memiliki register dasar yang terpisah (tetapi tidak ada register batas) untuk teks dan data.
Dengan memori virtual, alih-alih memiliki relokasi terpisah hanya untuk teks dan segmen data,
seluruh ruang alamat dapat dipetakan ke memori fisik unit yang cukup kecil. Kami akan
menunjukkan bagaimana memori virtual diimplementasikan di bawah ini.
Memori virtual berfungsi dengan baik dalam sistem multiprogramming, dengan bit dan
potongan dari banyak program di memori sekaligus. Sementara sebuah program menunggu
potongan itu sendiri untuk dibaca, CPU dapat diberikan ke proses lain.
3.3.1 Paging
Alamat yang dihasilkan program ini disebut alamat virtual dan membentuk ruang alamat virtual
. Pada komputer tanpa memori virtual, alamat virtual diletakkan langsung ke bus memori dan
menyebabkan kata memori fisik dengan alamat yang sama untuk dibaca atau ditulis. Ketika
memori virtual digunakan, iklan virtual gaun tidak langsung masuk ke bus memori. Sebagai
gantinya, mereka pergi ke MMU ( Memory Management Unit ) yang memetakan alamat virtual
ke memori fisik alamat.
Tujuan dari tabel halaman adalah untuk memetakan halaman virtual ke bingkai halaman.
Secara matematis, tabel halaman adalah sebuah fungsi, dengan nomor halaman virtual sebagai
argumen dan nomor bingkai fisik sebagai hasilnya.
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.
Sekarang saatnya untuk membahas lebih detail tentang kemungkinan penerapan. Dalam sistem
paging apa pun, dua masalah utama harus dihadapi:
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.
Poin kedua mengikuti fakta bahwa semua komputer modern menggunakan virtual alamat
setidaknya 32 bit, dengan 64 bit menjadi norma untuk desktop dan atasan. Dengan, katakanlah,
4
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.
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.
dicatat bahwa masalah '' penggantian halaman '' terjadi di area lain desain komputer juga.
Misalnya, kebanyakan komputer memiliki satu atau lebih 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.
Untuk menghindari kemungkinan kebingungan, harus dijelaskan bahwa log halaman ini
referensi hanya mengacu pada satu program yang baru diukur dan kemudian hanya satu
masukan spesifik. Algoritme penggantian halaman yang diturunkan darinya dikhususkan untuk
program itu dan memasukkan data. Meskipun metode ini berguna untuk mengevaluasi
algoritma penggantian halaman, tidak ada gunanya dalam sistem praktis. Di bawah ini kami
akan melakukannya algoritma studi yang berada berguna pada sistem nyata.
Ketika suatu proses dimulai, semua entri tabel halamannya ditandai sebagai tidak ada dalam
memori. Sesegera mungkin halaman direferensikan, kesalahan halaman akan terjadi. Sistem
operasi kemudian menetapkan bit R, (dalam tabel internalnya), mengubah entri tabel halaman
agar mengarah ke halaman yang benar, dengan mode HANYA BACA, dan mulai ulang
instruksi. Jika halaman selanjutnya dimodifikasi, kesalahan halaman lain akan terjadi,
memungkinkan sistem operasi untuk mengatur M, bit dan ubah mode halaman menjadi
BACA / TULIS.
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
5
dapat direkonsiliasi tuted dalam oven microwave. Ini adalah kesuksesan langsung, jadi
supermarket terbatas kami harus membuang satu produk lama untuk menyimpannya.
Meskipun peluang kedua adalah algoritme yang masuk akal, ini tidak perlu karena terus-
menerus memindahkan halaman-halaman dalam daftarnya. Pendekatan yang lebih baik adalah
menyimpan semua bingkai halaman pada daftar melingkar dalam bentuk jam
Perkiraan yang baik untuk algoritma yang optimal didasarkan pada observasi bahwa halaman
yang telah banyak digunakan dalam beberapa instruksi terakhir mungkin akan digunakan
banyak digunakan lagi segera. Sebaliknya, halaman yang sudah lama tidak digunakan akan
mungkin tetap tidak digunakan untuk waktu yang lama. 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 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.
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 pertama . 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 dengan kesalahan halaman yang relatif sedikit. Strategi ini disebut demand
paging karena halaman dimuat hanya berdasarkan permintaan, bukan sebelumnya.
6
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.
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. Mereka
didasarkan pada LRU dan set kerja, masing-masing. Keduanya memberikan performa paging
yang baik dan dapat diimplementasikan secara efisien. Ada beberapa algoritme bagus lainnya,
tetapi keduanya mungkin yang paling penting dalam praktiknya.
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, kita akan melihat masalah lain
yang harus dipertimbangkan oleh perancang sistem operasi hati-hati untuk mendapatkan
kinerja yang baik dari sistem paging.
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.
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.
7
Ukuran halaman merupakan parameter yang dapat dipilih oleh sistem operasi. Bahkan jika
perangkat keras telah dirancang dengan, misalnya, halaman 4096-byte, operasi Sistem ing
dapat dengan mudah menganggap pasangan halaman 0 dan 1, 2 dan 3, 4 dan 5, dan seterusnya,
sebagai 8-KB halaman dengan selalu mengalokasikan dua frame halaman 8192-byte berturut-
turut untuk mereka.
Masing-masing memiliki tabel halamannya sendiri, dengan peta halaman virtual ke frame
halaman fisik. Saat perangkat keras ingin mengambil file instruksi, ia tahu bahwa itu harus
menggunakan I-space dan tabel halaman I-space. 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.
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
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.
Shared library yang benar-benar kasus khusus dari fasilitas yang lebih umum disebut file yang
dipetakan . Idenya di sini adalah bahwa suatu proses dapat mengeluarkan panggilan sistem
untuk memetakan sebuah file ke bagian dari ruang alamat virtualnya.
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
8
3.5.9 Antarmuka Memori Virtual
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.
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.
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.
Dengan adanya informasi ini, sistem operasi dapat urungkan secara besar-besaran semua efek
dari instruksi kesalahan sehingga dapat dimulai kembali. Jika informasi ini tidak tersedia,
sistem operasi harus melewati rintangan untuk mencari tahu apa yang terjadi dan bagaimana
memperbaikinya. Seolah-olah perangkat keras itu penandatangan tidak dapat menyelesaikan
masalah, jadi mereka mengangkat tangan dan memberi tahu penulis sistem operasi untuk
menghadapinya.
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.
Halaman yang ada di memori selalu memiliki salinan bayangan pada disk, tetapi salinan ini
mungkin kedaluwarsa jika file halaman telah diubah sejak dimuat. Halaman berbayang dalam
memori menunjukkan halaman tidak ada dalam memori. Halaman berbayang pada disk (pada
9
prinsipnya) digantikan oleh salinan di memori, meskipun jika halaman memori harus ditukar
kembali ke disk dan belum pernah diubah sejak dimuat, disk (berbayang) salinan akan
digunakan.
Alat penting untuk mengelola kompleksitas sistem apa pun adalah membagi kebijakan dari
mekanisme. Prinsip ini dapat diterapkan pada manajemen memori dengan memiliki sebagian
besar pengelola memori dijalankan sebagai proses tingkat pengguna. Pemisahan seperti itu
pertama kali dilakukan di Mach (Young et al., 1987)
3.7 Segmentasi
Segmentasi juga memfasilitasi prosedur berbagi atau data antara beberapa proses. 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.
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. Ini
dapat ditangani dengan pemadatan,
Sistem operasi MULTICS adalah salah satu sistem operasi yang paling berpengaruh masalah
ini, memiliki pengaruh besar pada topik yang berbeda seperti UNIX, x86 arsitektur memori,
TLB, dan komputasi awan. Ini dimulai sebagai penelitian proyek di MIT dan ditayangkan pada
tahun 1969. Sistem MULTICS terakhir ditutup pada tahun 2000, jangka waktu 31 tahun.
Beberapa sistem operasi lain bertahan lebih atau kurang tidak dimodifikasi mendekati selama
itu. Sedangkan sistem operasinya disebut Windows juga telah ada selama itu, Windows 8 sama
sekali tidak memiliki kesamaan dengan Windows 1.0 kecuali nama dan fakta bahwa itu ditulis
oleh Microsoft.
Faktanya, semua sistem operasi saat ini untuk x86 bekerja dengan cara ini. OS / 2 adalah satu-
satunya salah satu yang menggunakan kekuatan penuh dari arsitektur MMU Intel. Jadi
mengapa Intel membunuh varian dari MULTICS model ory yang didukungnya selama hampir
tiga dekade? Mungkin alasan utamanya adalah bahwa baik UNIX maupun Windows tidak
10
pernah menggunakannya, meskipun itu cukup efisien menjadi karena itu menghilangkan
panggilan sistem, mengubahnya menjadi panggilan prosedur secepat kilat ke alamat yang
relevan dalam segmen sistem operasi yang dilindungi. Tak satupun dari pengembang sistem
UNIX atau Windows mana pun ingin mengubah memori mereka model untuk sesuatu yang
spesifik x86 karena akan merusak portabilitas platform lain.
Manajemen memori tradisional, terutama algoritma paging untuk uniprocesor 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 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)
Memori terdiri dari beberapa byte, dimana masing-masing byte memiliki tempat tersendiri.
CPU mengambil instruksi dari memori sesuai dengan programnya. Siklus instruksi-eksekusi
yang khas, misalnya, pertama-tama mengambil instruksi dari memori. Instruksi tersebut
kemudian diterjemahkan dan dapat menyebabkan operan untuk diambil dari memori. Setelah
instruksi dijalankan pada operan, hasil dapat disimpan kembali ke memori.
Ada mesin 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 maka, mereka harus dipindahkan ke sana
sebelum CPU dapat beroperasi pada mereka.
Untuk sistem operasi yang tepat kita harus melindungi sistem operasi dari akses oleh
proses pengguna. Pada sistem multipengguna, kami juga harus melindungi proses pengguna
dari satu sama lain. Perlindungan ini harus disediakan oleh perangkat keras karena sistem
operasi biasanya tidak mengintervensi antara CPU dan memorinya akses (karena hukuman
kinerja yang dihasilkan). Implementasi perangkat keras produksi ini dalam beberapa cara
berbeda.
Pertama-tama kita perlu memastikan bahwa setiap proses memiliki ruang memori terpisah.
Ruang memori per proses yang terpisah melindungi proses dari satu sama lain dan
sangat penting untuk memiliki banyak proses yang dimuat dalam memori untuk konkurensi
11
eksekusi. Untuk memisahkan ruang memori, kita membutuhkan kemampuan untuk
menentukan berbagai alamat hukum yang dapat diakses oleh proses dan untuk memastikan
bahwa proses hanya dapat mengakses alamat resmi ini. Kami dapat memberikan perlindungan
ini dengan menggunakan dua register yaitu, basis dan batas.
Register dasar dan batas hanya dapat dimuat oleh sistem operasi,
yang menggunakan instruksi dengan hak istimewa khusus. Sejak instruksi hak istimewa bisa
dijalankan hanya dalam mode kernel, dan karena hanya sistem operasi yang dijalankan
dalam mode kernel, hanya sistem operasi yang dapat memuat register basis dan batas.
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.
Sebuah alamat yang dihasilkan oleh CPU biasanya disebut sebagai alamat logis ,
sedangkan alamat dilihat oleh unit memori — yaitu, yang dimuat ke dalamnya yang memori-
register alamat memori-sering disebut sebagai alamat fisik . Metode pengikatan alamat waktu
kompilasi dan waktu muat menghasilkan alamat logis dan fisik tical. Namun, alamat waktu
eksekusi skema pengikatan menghasilkan alamat logis dan fisik yang berbeda. Di dalam kasus,
kami biasanya merujuk ke alamat logis sebagai alamat virtual.
Kumpulan semua alamat logis yang dihasilkan oleh suatu program adalah ruang alamat
logis . Set dari semua alamat fisik yang sesuai dengan alamat logis ini adalah alamat fisik ruang
alamat . Jadi, dalam skema pengikatan alamat waktu-eksekusi, logis dan ruang alamat fisik
berbeda.
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.
Keuntungan dari pembebanan dinamis adalah rutinitas dimuat hanya saat itu
dibutuhkan. Metode ini sangat berguna ketika kode dalam jumlah besar diperlukan untuk
menangani kasus yang jarang terjadi, seperti rutinitas kesalahan.
12
Pustaka yang ditautkan secara dinamis adalah pustaka sistem yang ditautkan ke
pengguna program ketika program dijalankan. Fitur ini biasanya digunakan dengan pustaka
sistem, seperti subrutin bahasa perpustakaan. Tanpa fasilitas ini, setiap program di sistem harus
menyertakan salinannya perpustakaan bahasanya.
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 jika
rutinitas belum ada.
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
Suatu proses, bagaimanapun, bisa jadi menukar sementara dari memori ke penyimpanan
pendukung dan kemudian dibawa kembali ke dalam memori untuk eksekusi lanjutan.
Pertukaran standar melibatkan proses pemindahan antara memori utama dan toko pendukung.
Penyimpanan pendukung biasanya berupa disk cepat. Itu pasti cukup besar untuk menampung
salinan dari semua gambar memori untuk semua pengguna, dan itu harus menyediakan akses
langsung ke gambar memori ini. Waktu pengalihan konteks dalam sistem pertukaran seperti
itu cukup tinggi.
Waktu swap adalah 200 milidetik. Karena kita harus menukar keduanya keluar dan masuk, file
total waktu swap sekitar 4.000 milidetik. bagian utama dari waktu swap adalah waktu transfer.
Jumlah seluruhnya waktu transfer berbanding lurus dengan jumlah memori yang ditukar. Jika
kita memiliki sistem komputer dengan memori utama 4 GB dan residen sistem operasi
mengambil 1 GB , ukuran maksimum proses pengguna adalah 3 GB . Namun, banyak proses
pengguna mungkin jauh lebih kecil dari ini — katakanlah, 100 MB . Proses 100-MB dapat
ditukar dalam 2 detik, dibandingkan dengan 60 detik yang diperlukan untuk menukar 3 GB .
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 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.
13
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.
Memori utama harus mengakomodasi sistem operasi dan file berbagai proses pengguna.
Memori biasanya dibagi menjadi dua partisi: satu untuk residen sistem operasi dan satu untuk
proses pengguna. 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. Jadi, dalam teks ini,
kami hanya membahas situasi di mana sistem operasi berada dalam memori rendah.
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. Alamat yang dipetakan ini dikirim ke
memori.
Ketika penjadwal CPU memilih proses untuk dieksekusi, dispatcher memuat relokasi dan
register batas dengan nilai yang benar sebagai bagian dari sakelar konteks. Karena setiap
alamat yang dihasilkan oleh CPU akan diperiksa register ini, kami dapat melindungi sistem
operasi dan pengguna lain program dan data yang dimodifikasi oleh proses yang sedang
berjalan ini.
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.
Memori dialokasikan untuk proses sampai, akhirnya, persyaratan memori untuk proses
selanjutnya tidak dapat dipenuhi — yaitu tidak tersedia blok memori (atau lubang) yang cukup
besar untuk menampung proses itu. Itu sistem operasi kemudian dapat menunggu hingga blok
yang cukup besar tersedia, atau bisa juga lewati antrian input untuk melihat apakah kebutuhan
memori yang lebih kecil dari beberapa proses lain dapat dipenuhi.
Secara umum, seperti yang disebutkan, blok memori yang tersedia terdiri set dari lubang
dengan berbagai ukuran tersebar di seluruh memori. Saat suatu proses tiba dan membutuhkan
14
memori, sistem mencari set lubang yang cukup besar untuk proses ini. Jika lubangnya terlalu
besar, maka dibelah menjadi dua bagian. Satu bagian adalah dialokasikan untuk proses
kedatangan; yang lainnya dikembalikan ke set lubang. Kapan suatu proses berakhir, ia
melepaskan blok memorinya, yang kemudian ditempatkan kembali di set lubang. Jika lubang
baru bersebelahan dengan lubang lain, ini lubang yang berdekatan digabung untuk membentuk
satu lubang yang lebih besar.
8.3.3 Fragmentasi
Kedua strategi first-fit dan best-fit untuk alokasi memori menderita fragmentasi
eksternal . Saat proses dimuat dan dihapus dari memori, ruang memori bebas dipecah menjadi
potongan-potongan kecil. Fragmentasi eksternal ada ketika ada ruang memori total yang cukup
untuk memenuhi permintaan tetapi tersedia ruang tidak bersebelahan: penyimpanan
terfragmentasi menjadi sejumlah besar kecil lubang.
Solusi lain yang mungkin untuk masalah fragmentasi eksternal adalah dengan
mengizinkan ruang alamat logis dari proses menjadi tidak bersebelahan, dengan demikian
memungkinkan proses untuk dialokasikan memori fisik dimanapun memori tersebut berada
tersedia. Fragmentasi adalah masalah umum dalam komputasi yang dapat terjadi di mana saja
kita harus mengelola blok data.
8.4 Segmentasi
Pemetaan ini dilakukan dengan tabel segmen . Setiap entri ditabel 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.
Nomor segmen digunakan sebagai indeks pada tabel segmen. Offset d dari alamat logis
harus antara 0 dan batas segmen. Jika tidak, kami menjebak ke sistem operasi (upaya
15
pengalamatan logis di luar akhir segmen). Jika offset legal, offset ditambahkan ke basis segmen
untuk menghasilkan alamat dalam memori fisik dari byte yang diinginkan. Tabel segmen pada
dasarnya larik pasangan register basa-batas.
8.5 Paging
. Paging adalah skema manajemen memori lain yang menawarkan ini keuntungan. Namun,
paging menghindari fragmentasi eksternal dan kebutuhan akan pemadatan, sedangkan
segmentasi tidak.
Metode dasar untuk menerapkan paging melibatkan pemutusan memori fisik. Mem ori
menjadi blok berukuran tetap yang disebut frame dan memecah memori logis menjadi blok
dengan ukuran yang sama disebut halaman.
Aspek penting dari paging adalah pemisahan yang jelas antara program pandangan
programmer tentang memori dan memori fisik yang sebenarnya. Pandangan
programmermemori sebagai satu ruang tunggal, hanya berisi satu program ini. Faktanya,
pengguna. Program tersebar di seluruh memori fisik, yang juga memegang lainnya program.
Perbedaan antara pandangan pemrogram tentang memori dan memori fisik aktual direkonsiliasi
dengan perangkat keras terjemahan alamat.
Setiap sistem operasi memiliki metode sendiri untuk menyimpan tabel halaman. 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. Sistem operasi lain menyediakan satu atau paling banyak beberapa
tabel halaman, yang mengurangi overhead yang terlibat saat proses dialihkan konteksnya.
Implementasi perangkat keras dari tabel halaman dapat dilakukan di beberapa cara.
Analisis kinerja lengkap dari overhead paging dalam sistem semacam itu akan memerlukan
informasi kesalahan tarif tentang setiap tingkatan TLB . TLB adalah fitur perangkat keras dan
oleh karena itu tampaknya menjadi perhatian kecil ke sistem operasi dan perancangnya. Namun
desainer perlu memahami fungsi dan fitur TLB , yang bervariasi menurut platform perangkat
keras. Untuk operasi yang optimal, desain sistem operasi untuk platform tertentu harus
menerapkan paging sesuai dengan desain TLB platform . Demikian juga dengan perubahan
16
yang TLB desain (misalnya, antara generasi Intel CPU s) mungkin memerlukan perubahan
implementasi paging dari sistem operasi yang menggunakannya.
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. Dibersamaan dengan penghitungan
alamat fisik, bit perlindungan dapat diperiksa untuk memverifikasi bahwa tidak ada penulisan
yang dilakukan pada halaman hanya baca.
Keuntungan paging adalah kemungkinan berbagi kode umum. Setiap proses memiliki
halaman datanya sendiri. Kode reentrant adalah kode non-modifikasi diri: tidak pernah berubah
selama eksekusition. Dengan demikian, dua atau lebih proses dapat menjalankan kode yang
sama pada waktu yang sama.
Setiap proses memiliki salinan register dan penyimpanan data sendiri untuk menampung
data eksekusi proses. Data untuk dua proses yang berbeda, tentu saja, akan menjadi berbeda.
Hanya satu salinan editor yang perlu disimpan dalam memori fisik. Setiap pengguna tabel
halaman memetakan ke salinan fisik yang sama dari editor, tetapi halaman data dipetakan ke
bingkai yang berbeda. Jadi, untuk mendukung 40 pengguna, kami hanya membutuhkan satu
salinan editor (150 KB ), ditambah 40 salinan dari ruang data 50 KB per pengguna. Total ruang
yang dibutuhkan sekarang 2.150 KB, bukan 8.000 KB — signifikan tabungan.
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. Salah satu
caranya adalah dengan menggunakan algoritma paging dua tingkat, di mana tabel halaman itu
sendiri. Misalnya, pertimbangkan kembali sistem dengan ruang alamat logis 32-bit dan ukuran
halaman 4 KB . Alamat logisnya adalah dibagi menjadi nomor halaman yang terdiri dari 20 bit
dan offset halaman terdiri dari 12 bit. Karena kita halaman tabel halaman, nomor halaman
dibagi lagi.
17
Langkah selanjutnya adalah skema halaman empat tingkat, di mana tingkat kedua tabel
halaman luar itu sendiri juga paged, dan sebagainya. Ultra SPARC 64-bit akan melakukannya
memerlukan tujuh tingkat paging jumlah akses memori yang sangat tinggi untuk
menerjemahkan setiap alamat logis.
Pendekatan umum untuk menangani ruang alamat yang lebih besar dari 32 bit adalah
dengan menggunakan sebuah tabel halaman hash , dengan nilai hash menjadi nomor halaman
virtual. Setiap entri dalam tabel hash berisi daftar terkait dari elemen yang memiliki hash yang
sama lokasi (untuk menangani tabrakan). Setiap elemen terdiri dari tiga bidang: (1)nomor
halaman virtual, (2) nilai bingkai halaman yang dipetakan, dan (3) penunjuk ke elemen
berikutnya dalam daftar tertaut.
Oleh karena itu, tabel halaman tunggal entri dapat menyimpan pemetaan untuk beberapa
bingkai halaman fisik. Berkelompok tabel halaman sangat berguna untuk ruang alamat yang
jarang , di mana memori referensi tidak bersebelahan dan tersebar di seluruh ruang alamat.
Tabel halaman memiliki satu entri untuk setiap halaman yang digunakan proses (atau satu
slot untuk setiap virtual alamat, terlepas dari validitas yang terakhir). 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 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. . Contoh sistem yang menggunakan halaman terbalik
tabel termasuk Ultra SPARC 64-bit dan Power PC
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.
Jika kecocokan ditemukan di TSB , CPU menyalin entri TSB ke TLB , dan terjemahan
memori selesai. Jika tidak ditemukan kecocokan di TSB , kernel terputus untuk mencari tabel
hash. Kernel kemudian membuat TTE dari file tabel hash yang sesuai dan menyimpannya di
TSB untuk pemuatan otomatis ke TLB oleh unit manajemen memori CPU . Akhirnya,
18
penangan interupsi kembali kontrol ke MMU , yang menyelesaikan terjemahan alamat dan
mengambil file byte atau kata yang diminta dari memori utama.
Baru-baru ini, Intel telah menghasilkan serangkaian chip 64-bit berdasarkan arsitektur
x86-64. Saat ini, semua sistem operasi PC terpopuler berjalan pada chip Intel, termasuk
Windows, Mac OS X , dan Linux (walaupun Linux, tentu saja, berjalan pada beberapa
arsitektur lain juga). Terutama, bagaimanapun, dominasi Intel belum menyebar ke sistem
seluler, yang saat ini dinikmati oleh arsitektur ARM sukses besar.
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.
The IA -32 arsitektur memungkinkan segmen untuk menjadi besar seperti 4 GB , dan
maksimal jumlah segmen per proses adalah 16 K . 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 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 ) .
Penting untuk dicatat bahwa dukungan sistem operasi adalah diperlukan untuk
menggunakan PAE . Baik Linux dan Intel Mac OS X mendukung PAE . Namun, Versi 32-bit
dari sistem operasi desktop Windows masih memberikan 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. Ini
awalnya entri adalah arsitektur IA -64 (kemudian dinamai Itanium ), tetapi arsitektur itu tidak
19
diadopsi secara luas. Sementara itu, produsen chip lain AMD mulai mengembangkan
arsitektur 64-bit yang dikenal sebagai x86-64 yang didasarkan pada memperluas set instruksi
IA -32 yang ada . X86-64 mendukung lebih besar ruang alamat logis dan fisik, serta beberapa
arsitektur lainnya.
Dalam membahas arsitektur ini, daripada menggunakan komersial beri nama AMD 64
dan Intel 64 , kami akan menggunakan istilah yang lebih umum x86-64 .Dukungan untuk ruang
alamat 64-bit menghasilkan 2 64 byte yang menakjubkan memori yang dapat dialamatkan —
angka yang lebih besar dari 16 quintillion (atau 16 exabytes). Arsitektur x86-64 saat ini
menyediakan virtual 48-bit alamat dengan dukungan untuk ukuran halaman 4 KB , 2 MB , atau
1 GB menggunakan empat tingkat hierarki halaman.
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 .
Memori virtual melibatkan pemisahan memori logis seperti yang dirasakan oleh pengguna dari
memori fisik. Pemisahan ini memungkinkan terjadinya sangat besar memori virtual akan
disediakan untuk programmer bila fisiknya lebih kecil memori tersedia (Gambar 9.1). Memori
virtual membuat tugas program lebih mudah ming, karena programmer tidak perlu lagi
khawatir jumlah memori fisik yang tersedia; dia bisa berkonsentrasi padamasalah yang akan
diprogram. Ruang alamat virtual dari suatu proses mengacu pada tampilan logis (atau virtual)
tentang bagaimana suatu proses disimpan dalam memori.
Memori virtual melibatkan pemisahan memori logis seperti yang dirasakan oleh pengguna dari
memori fisik. Pemisahan ini memungkinkan terjadinya sangat besar memori virtual akan
disediakan untuk programmer bila fisiknya lebih kecil memori tersedia (Gambar 9.1). Memori
virtual membuat tugas program lebih mudah ming, karena programmer tidak perlu lagi
khawatir jumlah memori fisik yang tersedia; dia bisa berkonsentrasi pada masalah yang akan
diprogram. Ruang alamat virtual dari suatu proses mengacu pada tampilan logis (atau virtual)
tentang bagaimana suatu proses disimpan dalam memori.
Secara teoritis, beberapa program dapat mengakses beberapa halaman memori baru dengan
setiap eksekusi instruksi (satu halaman untuk instruksi dan banyak untuk data), mungkin
20
menyebabkan beberapa kesalahan halaman per instruksi. Situasi ini akan menghasilkan kinerja
sistem yang tidak dapat diterima. Untungnya, analisis proses yang berjalan menunjukkan
bahwa perilaku ini sangat tidak mungkin. Program cenderung memiliki lokalitas referensi yang
menghasilkan kinerja yang wajar dari paging permintaan.
Persyaratan penting untuk permintaan paging adalah kemampuan untuk memulai kembali
instruksi setelah kesalahan halaman. Karena kami menyimpan negara (register, kondisi kode,
penghitung instruksi) dari proses yang terputus ketika kesalahan halaman terjadi, kita harus
dapat memulai kembali proses di tempat yang persis sama dan status, kecuali bahwa halaman
yang diinginkan sekarang ada dalam memori dan dapat diakses.
9.3 Copy-on-Write
Secara tradisional, fork () bekerja dengan membuat salinan dari induknya ruang alamat untuk
anak, menggandakan halaman milik orang tua. Namun, mengingat bahwa banyak anak proses
memanggil exec () system panggilan segera setelah pembuatan, penyalinan ruang alamat orang
tua mungkin menjadi tidak perlu. Sebagai gantinya, kita dapat menggunakan teknik yang
dikenal sebagai salin-saat-tulis , yang berfungsi dengan mengizinkan proses induk dan anak
pada awalnya untuk membagikan file halaman yang sama. Halaman-halaman bersama ini
ditandai sebagai halaman salin-saat-menulis, artinya bahwa jika salah satu proses menulis ke
halaman bersama, salinan halaman bersama tersebut adalah dibuat.
. 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.
kesalahan paling banyak, saat pertama kali direferensikan. Representasi ini tidak ketat akurat,
bagaimanapun. Jika proses sepuluh halaman benar-benar hanya menggunakan setengah dari
mereka, maka permintaan paging menyimpan I / O yang diperlukan untuk memuat lima
halaman yang tidak pernah bekas.
21
. Beberapa sistem mengalokasikan persentase memori tetap untuk buffer I / O , sedangkan yang
lain mengizinkan proses pengguna dan subsistem I / O untuk bersaing untuk semua memori
sistem. Alokasi memori yang berlebihan memanifestasikan dirinya sebagai berikut. Saat proses
pengguna sedang dijalankan, terjadi kesalahan halaman. Sistem operasi menentukan di mana
file halaman yang diinginkan berada pada disk tetapi kemudian menemukan bahwa tidak ada
bingkai bebas pada daftar bingkai bebas; semua memori sedang digunakan.
Penggantian halaman adalah dasar dari permintaan paging. Itu melengkapi pemisahan
antara memori logis dan memori fisik. Dengan mekanisme ini, sebuah memori virtual yang
sangat besar dapat disediakan untuk pemrogram yang lebih kecil ingatan fisik. Tanpa paging
permintaan, alamat pengguna dipetakan ke alamat fisik, dan dua kumpulan alamat bisa
berbeda. Semua halaman proses masih harus dalam memori fisik, bagaimanapun. Dengan
permintaanpaging, ukuran ruang alamat logis tidak lagi dibatasi oleh fisik penyimpanan.
Salah satu hasil penemuan anomali Belady adalah pencarian yang optimal algoritma
penggantian halaman — algoritme yang memiliki kesalahan halaman terendah menilai semua
algoritme dan tidak akan pernah menderita anomali Belady. Seperti algoritma memang ada dan
disebut OPT atau MIN . Ini sederhananya: Ganti halaman yang tidak akan digunakan untuk
jangka waktu yang lama. Penggunaan algoritme penggantian halaman ini menjamin halaman
tingkat kesalahan untuk sejumlah frame tetap.
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 ) .
Beberapa sistem komputer menyediakan dukungan perangkat keras yang cukup untuk
halaman LRU yang sebenarnya penggantian. Faktanya, beberapa sistem tidak memberikan
dukungan perangkat keras, dan lainnya algoritma penggantian halaman (seperti algoritma FIFO
22
) harus digunakan. Banyak sistem memberikan bantuan, bagaimanapun, dalam bentuk bit
referensi.
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. Register geser 8-bit ini berisi sejarah penggunaan halaman selama
delapan periode waktu terakhir.
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.
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.
Misalnya, kita dapat menyimpan penghitung dari jumlah referensi yang telah ada
dibuat untuk setiap halaman dan kembangkan dua skema berikut.
Beberapa versi sistem UNIX menggunakan metode ini bersama dengan algoritma
kesempatan kedua. Ini bisa menjadi augmentasi yang berguna untuk halaman apa pun
algoritma pengganti, untuk mengurangi penalti yang ditimbulkan jika salah korban halaman
dipilih.
23
Dalam kasus tertentu, aplikasi mengakses data melalui sistem operasi memori virtual
bekerja lebih buruk daripada jika sistem operasi tidak disediakan buffering sama sekali. 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 .
Jumlah minimum frame ditentukan oleh arsitektur komputer. Misalnya, instruksi pemindahan
untuk PDP -11 mencakup lebih dari satu kata untuk beberapa mode pengalamatan, dan dengan
demikian instruksinya sendiri dapat mengangkangi dua halaman. Selain itu, masing-masing
dari dua operannya dapat menjadi referensi tidak langsung, untuk a total enam frame. Contoh
lain adalah instruksi IBM 370 MVC .
Cara termudah untuk membagi m frame di antara n proses adalah dengan memberikan file
bagian yang sama, m / n bingkai (mengabaikan bingkai yang dibutuhkan oleh sistem operasi
untuk saat ini). 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 sebuah kombinasi ukuran dan prioritas.
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
24
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.
Perbedaan kinerja ini disebabkan oleh bagaimana caranya CPU dan memori saling
berhubungan dalam sistem. Seringkali, sistem seperti itu terdiri dari beberapa papan sistem,
masing-masing berisi beberapa CPU dan beberapa penyimpanan. Papan sistem saling
berhubungan dengan berbagai cara, mulai dari bus sistem ke koneksi jaringan berkecepatan
tinggi seperti InfiniBand.
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.
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.
Proses ini membutuhkan halaman tersebut, bagaimanapun, dan mereka juga melakukan
kesalahan, mengambil frame dari proses lain. Ini proses kesalahan harus menggunakan
perangkat paging untuk menukar halaman masuk dan keluar. Sebagai mereka mengantri untuk
perangkat paging, antrian siap kosong. Sebagai proses tunggu perangkat paging, pemakaian
CPU berkurang.
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.
Strategi yang menggunakan frekuensi kesalahan halaman ( PFF ) membutuhkan lebih banyak
pendekatan langsung. Masalah spesifiknya adalah bagaimana mencegah meronta-ronta.
25
Meronta-ronta memiliki sifat yang tinggi tingkat kesalahan halaman. Jadi, kami ingin
mengontrol tingkat kesalahan halaman. Saat itu juga tinggi, kami tahu bahwa proses tersebut
membutuhkan lebih banyak bingkai. Sebaliknya, jika halaman bermasalah rate terlalu rendah,
maka prosesnya mungkin memiliki terlalu banyak frame.
9.6.4 Penutup
Praktik terbaik saat ini dalam menerapkan sebuah fasilitas komputer harus menyertakan
memori fisik yang cukup, bila memungkinkan, untuk menghindari meronta-ronta dan bertukar.
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.
Pemetaan memori file dilakukan dengan memetakan blok disk ke halaman (atau halaman)
dalam memori. Akses awal ke file berlangsung melalui permintaan biasa paging,
mengakibatkan kesalahan halaman.
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.
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.
Ketika proses yang berjalan dalam mode pengguna meminta memori tambahan, halaman
dialokasikan dari daftar bingkai halaman gratis yang dikelola oleh kernel.
26
Sistem buddy mengalokasikan memori dari segmen berukuran tetap yang terdiri dari halaman
yang berdekatan secara fisik. Memori dialokasikan dari segmen ini menggunakan sebuah
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 .
Strategi kedua untuk mengalokasikan memori kernel dikenal sebagai alokasi slab. Sebuah slab
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.
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. Situasi yang sama mungkin muncul di lain waktu.
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.
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.
Mengelola TLB dalam perangkat lunak dan bukan perangkat keras berdampak buruk pada
kinerja. Namun, peningkatan rasio hit dan jangkauan TLB mengimbangi biaya kinerja.
Memang, tren terbaru menunjukkan pergerakan menuju TLB yang dikelola perangkat lunak
dan dukungan sistem operasi untuk berbagai ukuran halaman.
27
Tujuan bentuk manajemen halaman ini adalah untuk mengurangi jumlah memori fisik
diperlukan untuk melacak terjemahan alamat virtual-ke-fisik. Sejak tabel ini direferensikan
hanya ketika terjadi kesalahan halaman, mereka tidak perlu melakukannya tersedia dengan
cepat. Sebaliknya, mereka sendiri masuk dan keluar dari memori seperlunya. Sayangnya,
kesalahan halaman sekarang dapat menyebabkan memori virtual manajer untuk menghasilkan
kesalahan halaman lain seperti halaman di tabel halaman eksternal itu perlu menemukan
halaman virtual di penyimpanan pendukung. Kasus khusus ini membutuhkan penanganan yang
hati-hati di kernel dan penundaan dalam pemrosesan pencarian halaman.
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.
9.10.1 Windows
9.10.2 Solaris
Secara umum, kernel mencari proses yang telah menganggur jangka waktu yang lama. Jika
sistem tidak dapat mempertahankan jumlah gratis memori di minfree , proses halaman keluar
dipanggil untuk setiap permintaan baru halaman. Rilis terbaru dari kernel Solaris telah
menyediakan penyempurnaan algoritma paging. Salah satu peningkatan tersebut melibatkan
pengenalan halaman dari perpustakaan bersama. Halaman milik perpustakaan yang sedang
dibagikan oleh beberapa proses bahkan jika memenuhi syarat untuk diklaim oleh pemindai
dilewati selama proses pemindaian halaman.
28
BAB III
PEMBAHASAN
Kelebihan Buku I
Menurut saya, kelebihan dari buku ini adalah berisi informasi yang bermanfaat
yang dibahas didalam buku menegenai materi “Manajeman Memori”. Bagi
pecinta komputer atau yang bekerja dibidang komputer sangat membutuhkan
buku ini untuk menambah wawasannya. Buku ini juga terstruktur dengan baik.
Kekurangan Buku I
Menurut saya, kekurangan dari buku ini adalah menggunakan bahasa Inggris.
Orang-orang yang tidak mengerti bahasa Inggris seperti saya akan sulit untuk
memahami dan mengerti isi buku ini.
Kelebihan Buku II
Menurut saya, kelebihan dari buku I adalah memiliki banyak informasi
bermanfaat yang diambil dari materi yang dibahas didalam buku terutama
materi tentang “ Manajemen Memory”. Buku ini sangat diperlukan oleh
seseorang yang bekerja/menyukai bidang komputer. Buku ini cukup menarik
karena pemberian warna biru pada kata-kata yang sangat penting. Sehingga,
mempermudah para pembaca untuk memahami isi buku tersebut. Buku ini juga
memiliki struktur yang lengkap bahkan memiliki ringkasan juga.
Kekurangan Buku II
Menurut saya, kekurangan dari buku I adalah menggunakan bahasa Inggris,
sehingga yang tidak mengerti bahasa Inggris akan kesulitan untuk memahami
buku ini. Dan setelah diterjemahkan banyak penggunaan kata yang sulit untuk
dimengerti. Dan beberapa penjelasan materinya ada yang bertele-tele.
29
BAB IV
PENUTUP
4.1 Kesimpulan
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. 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.
4.2 Saran
Memahami cara kerja sistem operasi beserta bagian-bagiannya pada komputer dapat
membuat kita lebih mudah memahami dan membuat program yang diinginkan. Oleh
karena itu, menambah wawasan mengenai sistem operasi pada komputer merupakan
salah satu cara agar kita bisa lebih mudah memahami komputer dan kedepannya bisa
lebih bermanfaat lagi bagi orang banyak di era globalisasi saat ini.
30
DAFTAR PUSTAKA
31