BAB I
MAIN MEMORY (Memori
Utama)
Tujuan:
Adapun tujuan dari pembahasan dalam makalah ini
adalah sebagai berikut:
1.
Memaparkan secara
detail berbagai cara untuk mengorganisasi memori perangkat keras
2.
Menjelaskan mengenai
variasi teknik pengelolaan memori termasuk secara paging dan segmentasi.
1.1 Background
Seperti yang telah kita ketahui
bahwa memori adalah pusat operasi dari sistem komputer modern. Memori sendiri
terdiri dari susunan huruf-huruf atau bit-bit dengan jumlah besar dimana setiap
huruf atau bit memiliki alamat masing-masing. Program harus dibawa dari hard
drive ke dalam memori dan di tempatkan di dalam proses untuk bisa di jalankan
dalam program.
Pendefinisian di atas menunjukkan
bahwa kita selalu secara sederhana hanya memandang sebuah memori sebagai
alamat-alamat bergerak dalam satu unit memori tanpa mengetahui bagaimana cara
alamat-alamat tersebut dihasilkan atau apa fungsinya. Untuk itu pada pembahasan
ini akan disajikan pembahasan mengenai berbagai teknik untuk mengelola memori.
Hal ini mencakup dasar dari perangkat keras, bagaimana kaitan antara alamat
memori simbolik dengan alamat fisik sebenarnya, dan cara untuk membedakan
alamat fisik dan logis. Di sini juga nantinya akan terdapat kesimpulan tentang
dynamically loading and linking code dan kode shared libraries.
1.1.1 Basic
Hardware
Main Memory ( Memori Utama ) atau
mungkin yang lebih dikenal dengan nama RAM ( Random Access Memory ) pada
tingkatan perangkat keras terbentuk dari rangkaian-rangkaian terintegrasi yang
berfungsi sebagai tempat penyimpanan yang akses datanya digunakan oleh CPU (
Central Processing Unit ) atau perangkat I/O. Penyimpanan data pada main memory
bersifat sementara karena data tersebut akan hilang ketika listrik tidak
mengalir ke sistem.
Pada perangkat keras, Main Memory
dan register yang di bentuk dalam prosesor merupakan satu-satunya tempat
penyimpanan yang dapat diakses CPU secara langsung. Terdapat instruksi mesin
yang mengambil alamat memori sebagai argumen tetapi tidak ada yang mengambil
alamat disk drive. Namun setiap perintah eksekusi dan data yang digunakan oleh
perintah pasti ada di sebuah piranti penyimpan yang dapat di akses secara
langsung ini. Jika data ini tidak ada di memori maka berarti data telah di
pindahkan ke piranti penyimpanan tersebut sebelum CPU dapat mengoperasikannya.
Register yang dibentuk dalam memori secara umum dapat diakses dalam satu
putaran dari clock pada CPU, namun bisa saja memerlukan banyak putaran dari
clock CPU karena tidak tidak ditemukannya data yang dibutuhkan untuk proses
eksekusi sebuah perintah. Dalam kasus komputer bisa saja menjadi “mogok” karena
frekuensi dari akses memori tidak dapat mentolelirnya. Hal ini memunculkan ide
untuk menempatkan cache memori di antara memori utama dan register sebagai
buffer memory ( Memori Penyangga ) untuk menangani perbedaan kecepatan antara
main memory dan CPU. Ini menunjukkan perlindungan terhadap memori sangat
diperlukan untuk memastikan sebuah operasi berjalan dengan benar.
Untuk memastikan sebuah operasi
dapat berjalan dengan benar maka kita tidak boleh hanya terfokus pada beda
kecepatan akses memori tetapi juga harus memastikan bahwa sistem operasi tetap
terlindungi selama operasi berlangsung. Salah satu cara yang dapat diterapkan
adalah dengan memastikan bahwa tiap proses akan ditempatkan pada ruang memori
terpisah. Untuk itu kita harus dapat mendefinisikan alamat “sah” yang dapat di
akses oleh sebuah proses dan memastikan bahwa proses tersebut hanya dapat
mengakses alamat “sah” ini. Kita dapat menggunakan dua register yang disebut
base dan limit untuk mendefinisikan alamat “sah” tersebut, dimana base register
menentukan alamat “sah” terkecil dari memori fisik sedangkan limit register
menentukan ukuran dari jangkauannya secara spesifik. Sebagai contoh, jika base
register memiliki alamat 300040 dan register batas 120900, maka program secara
legal dapat mengakses semua alamat dari 300040 sampai 420940 secara inklusif.

Gambar
8.1 Base and Limit Registers
1.1.2 Address Binding
Biasanya program berada di hard drive
sebagai file biner yang dapat dieksekusi. Untuk dapat dieksekusi sebuah program
harus di bawa ke memori dan di letakkan dalam sebuah proses. Tergantung dari
pengelolaan memori yang digunakan, proses dapat berpindah antara hard drive dan
memori selama proses dieksekusi. Set alamat dari instruksi dan data ke
alamat-alamat memori dapat terjadi pada tiga tahap berbeda, yaitu :
1.
Saat Kompilasi (
Compile Time ), dimana jika lokasi memori ditetapkan sebagai prioritas, maka
absolute code ( kode mutlak ) dapat di bangkitkan. Kode ini harus di kompilasi
ulang ketika lokasi memori berubah.
2.
Saat Menunggu ( Load
Time ), dimana jika lokasi memori tidak terdefinisi pada saat kompilasi maka
relocatable code ( kode untuk penempatan kembali ) harus di bangkitkan.
3.
Saat Eksekusi, dimana
jika proses dapat dipindahkan selama ia di eksekusi dari satu segmen memori ke
segmen lainnya maka set di tunda sampai waktu pelaksanaan.

Gambar
8.2 Multistep Processing of a User Program
1.1.3. Logical
Versus Physical Address Space
Sebuah alamat yang dihasilkan oleh
CPU sering disebut sebagai alamat logis, dimana sebuah alamat yang dilihat
sebagai unit memori yang salah satunya dimasukkan ke alamat memori register
dari sebuah memori sering disebut sebagai alamat fisik. Metode pengikat alamat
Compile time dan load time akan menghasilkan alamat logis dan alamat fisik yang
identik, namun pada waktu eksekusi skema dari address binding ( pengikat alamat
) akan menghasilkan alamat logis dan fisik yang berbeda. Dalam hal ini, kita
biasanya menyebut ke alamat logis sebagai alamat virtual sedangkan himpunan
semua fisik alamat yang bersesuaian dengan alamat logis ini disebut ruang alamat fisik. Dengan demikian, dalam
skema waktu eksekusi pengikat alamat, alamat fisik dan logis menempati ruang
alamat yang berbeda.
Pemetaan run-time dari virtual ke
alamat fisik yang dilakukan oleh perangkat keras yang disebut unit manajemen
memori ( Memory Management Unit ). Dalam skema MMU, nilai pada register
relokasi ditambahkan ke setiap alamat yang dihasilkan oleh proses user pada
saat itu yang dikirim ke memori. User hanya akan berurusan dengan alamat logis
dan tidak akan pernah melihat alamat fisik.

Gambar
8.3 Dynamic relocation using a relocation register
Pada ilustrasi di atas, Register
Dasar ( Base Register ) sekarang disebut Register Relokasi ( Relocation
Register ). Nilai pada register relokasi ditambahkan ke setiap alamat yang
dihasilkan oleh proses pengguna/user pada saat itu dikirim ke memori (lihat
Gambar 8.3). Misalnya, jika base berada pada 14000, maka alamat lokasi 0 dari
pengguna/user adalah berpindah secara
dinamis ke lokasi 14000. Sehingga akses ke lokasi alamat 346 akan dipetakan ke
alamat 14346.
1.1.4 Dynamic
Loading
Dalam pembahasan kita sejauh ini,
seluruh program dan semua data dari sebuah proses harus berada di memori fisik
untuk dapat dieksekusi. Dengan demikian ukuran sebuah proses terbatas dengan
ukuran memori fisik. Untuk mendapatkan pemanfaatan ruang memori yang lebih
baik, kita dapat menggunakan Dynamic Loading. Dengan Dynamic Loading, rute
tidak di-load/dimuat sampai ia dibutuhkan. Semua rute akan disimpan pada disk
dalam relocatable load format. Program utama akan dimuat ke memori dan
dijalankan. Ketika rute memerlukan rute lain, rute awal yang dipanggil akan
melihat apakah rute lain tersebut telah dimuat atau belum. Jika belum,
relocatable linking loader akan dipanggil untuk memuat rute yang diinginkan ke
memori dan memperbaharui tabel alamat program untuk menunjukkan perubahan ini. Kemudian kontrol akan diteruskan
ke rute yang baru dimuat. Keuntungan dari Dynamic Loading adalah rute yang
tidak digunakan tidak akan pernah dimuat sehingga akan menghemat penggunaan
ruang memori dan mengoptimalkan kecepatan proses.
1.1.5 Dynamic
Linking and Shared Libraries
Gambar 8.3 juga menunjukkan pustaka
terhubung dinamis ( Dynamic Linking Libraries ). Beberapa sistem operasi hanya bisa terhubung statis, dimana
sistem bahasa library diperlakukan seperti modul obyek lain dan digabungkan
oleh loader ke dalam program gambar biner ( binary program image ). Konsep dari
dynamic linking mirip dengan yang dynamic loading. Fitur ini biasanya digunakan
dengan perpustakaan sistem, seperti perpustakaan bahasa subrutin ( language
subroutine libraries ). Tanpa fasilitas ini, masing-masing program pada sebuah
sistem harus menyertakan salinan perpustakaan bahasanya (atau setidaknya
referensi rutin dari program) pada executable image. Persyaratan ini sangat
merugikan disk space dan memori utama.
Dengan dynaimc linking, sebuah stub
akan ada dalam referensi tiap-tiap image untuk library routine. Stub adalah
potongan kecil dari kode yang digunakan untuk menemukan tempat memori library
routine yang sesuai. Stub menggantikan tempatnya dengan alamat routine dan
kemudian mengeksekusi alamat tersebut. Fitur ini dapat digunakan untuk
memperbaharui versi library seperti untuk memperbaiki bug sistem. Sistem
seperti ini dikenal juga dengan nama Shared Library.
1.2 Swapping
Sebuah proses harus ada di memori
agar bisa dieksekusi. Namun sebuah proses dapat di keluarkan dari dalam
memori ( ditukar ) untuk sementara ke
backing store dan di bawa kembali ke memori untuk kembali di eksekusi. Backing
store adalah cakram
cepat yang cukup besar untuk menampung salinan dari semua gambar memori untuk
semua pengguna. Varian dari kebijakan swapping ini digunakan untuk penjadwalan
prioritas berbasis algoritma dimana proses prioritas rendah di geser keluar
sehingga proses prioritas lebih tinggi dieksekusi terlebih dahulu disebur Roll
out, rol in.

Gambar 8.4 Schematic
View of Swapping
Konteks waktu pertukaran pada
sebuah sistem swapping sangatlah tinggi. Mari kita asumsikan bahwa proses
pengguna berukuran 10 MB dan backing store senilai hard disk standar dengan
transfer rate 40 MB per detik maka transfer aktual dari proses 10 MB dari atau
ke memori utama mengambil
10000 KB/40000 KB per detik = 1/4 detik atau 250 millidetik
Dengan asumsi bahwa tidak ada
kepala berusaha diperlukan, dan mengasumsikan latency rata-rata dari 8
milidetik, waktu swap adalah 258 milidetik. Karena kita harus melakukan swap
out dan swap in, waktu swap total sekitar 516 milidetik.
1.3 Contiguous Memory
Allocation
Memori utama harus mengakomodasi
baik sistem operasi dan berbagai proses pengguna. Karena itu kita perlu
mengalokasikan bagian-bagian dari memori utama dengan cara yang paling efisien.
Bagian ini menjelaskan salah satu metode umum, alokasi memori yang berdekatan (
contiguous memory allocation ).
Memori biasanya dibagi menjadi dua
partisi dimana salah satu partisi digunakan untuk sistem operasi dan yang
lain untuk proses pengguna. Kita dapat
menempatkan sistem operasi baik dalam memori rendah atau memori tinggi. Faktor
utama yang mempengaruhi ini keputusan adalah lokasi dari vektor interupsi (
interrupt vector ). Karena vektor interupsi sering dalam memori rendah,
programmer biasanya tempat sistem operasi memori rendah juga. Dalam tulisan
ini, hanya akan membahas situasi di mana sistem operasi berada dalam memori
rendah. Vektor interupsi adalah alamat memori dari sebuah interrupt handler,
atau indeks dalam array yang disebut tabel vektor interupsi ( interrupt vector
table ) atau tabel pengiriman ( dispatch table ). interrupt vector table berisi
memori alamat dari interrupt handler. Ketika sebuah interupsi dihasilkan,
prosesor menyimpan keadaan eksekusinya melalui context switch, dan mulai
pelaksanaan interrupt handler pada interrupt vector. Kita biasanya ingin beberapa user proses berada di memori pada
saat yang bersamaan. Oleh karena itu kita perlu mempertimbangkan bagaimana cara
untuk mengalokasikan memori yang tersedia agar proses yang berada dalam antrian
masukan dapat menunggu untuk dibawa ke dalam memori. Dalam alokasi memori yang
berdekatan, setiap proses berada pada salah satu bagian memori yang saling
bersebelahan.
1.3.1 Memory
Mapping and Protection
Seperti yang telah dibahas
sebelumnya, register relokasi ( relocation
register ) berisi nilai dari alamat fisik terkecil sedangkan register
batas menunjukkan jangkauan alamat logis ( logical address ). Dengan adanya
register relokasi dan batas, tiap alamat logis harus lebih kecil dari register
batas, sedangkan MMU memetakan alamat logika secara dinamis dengan menambahkan
nilai dalam register relokasi. Alamat yang dipetakan kemudian dikirim ke
memori.

Gambar
8.5 Hardware support for relocation and limit registers
Ketika penjadwal CPU memilih suatu
proses untuk eksekusi, dispatcher memuat register relokasi dan limit dengan
nilai yang benar sebagai bagian dari context switch. Karena setiap alamat yang
dihasilkan oleh CPU diperiksa terhadap register ini, kita dapat melindungi baik
sistem operasi juga pengguna program dan data dari perubahan saat proses
berjalan.
Skema relokasi register menyediakan
cara yang efektif untuk memungkinkan ukuran sistem operasi untuk berubah secara
dinamis. Fleksibilitas ini diinginkan dalam banyak situasi. Sebagai contoh,
sistem operasi berisi kode dan ruang buffer untuk device driver. Jika device
driver atau yang lebih disebut operating-system service, tidak sering digunakan
maka ita tidak ingin menyimpan kode dan datanya di dalam memori, sehingga kita
bisa menggunakan ruang ini untuk keperluan lain. Kode tersebut sering disebut
transient operating system code, yang datang dan pergi sesuai kebutuhan. Dengan
demikian, menggunakan kode ini akan mengubah ukuran sistem operasi selama
program dieksekusi.
1.3.2 Memory
Allocation
Dalam skema partisi tetap, sistem
operasi menyimpan sebuah tabel yang menunjukkan bagian mana dari memori yang
tersedia/dapat digunakan dan yang sibuk/sedang digunakan. Semua memori yang
tersedia untuk penggunaan proses dan dianggap sebagai satu blok besar memori
yang tersedia/dapat digunakan disebut hole ( lubang ). Ketika sebuah proses
terjadi dan membutuhkan memori maka harus dicari sebuah lubang yang cukup besar
untuk proses ini. Jika telah ditemukan maka kita hanya perlu mengalokasikan
sebanyak memori diperlukan dan menjaga sisanya tersedia untuk memenuhi
permintaan/proses selanjutnya. Prosedur ini adalah contoh khusus dari masalah
alokasi penyimpanan data begerak ( dynamic storage allocation problem ).
Ada banyak solusi untuk permasalahan ini dan
beberapa yang umum digunakan adalah :
1. First Fit, dimana alokasi hole/lubang yang
digunakan adalah hole/lubang pertama yang cukup besar. Pencarian dapat dimulai
dari awal set lubang atau dimana pencarian First Fit sebelumnya berakhir.
Pencarian dapat dihentikan segera setelah lubang bebas yang cukup besar
ditemukan.
2. Best Fit, dimana alokasi hole/lubang yang
digunakan adalah hole/lubang terkecil yang cukup besar. Kita harus mencari
seluruh daftar sampai daftar diperintahkan oleh tersusun sesuai ukuran.
Strategi ini memproduksi sisa lubang terkecil.
3. Worst
Fit, dimana alokasi hole/lubang yang digunakan adalah hole/lubang terbesar.
Sekali lagi kita diharuskan untuk mencari seluruh daftar sampai daftar
diperintahkan oleh tersusun sesuai ukuran.
Strategi ini menghasilkan sisa
lubang terbesar, yang mungkin akan lebih berguna daripada sisa lubang yang
lebih kecil dari pendekatan Best Fit. Simulasi telah menunjukkan bahwa baik
first fit dan best fit lebih baik dari worst fit dalam hal menyingkat waktu dan
pemanfaatan storage, tetapi dalam hal ini first fit pada umumnya lebih cepat.

Gambar 8.6
Multiple-partition allocation
1.3.3 Fragmentation
Baik First Fit maupun Best Fit akan
mengalami masalah external fragmentation ( fragmentasi luar ) dalm
pengalokasian memorinya. Saat proses yang dimuat dan dihapus dari memori, ruang
memori bebas yang dipecah menjadi potongan-potongan kecil. External
Fragmentation adalah kasus dimana ruang memori total ada untuk memenuhi
permintaan, tapi letaknya tidak saling berdekatan sedangkan Internal
Fragmentation adalah kasus dimana memori yang dialokasikan mungkin sedikit
lebih besar dari memori yang diminta. Ini adalah perbedaan ukuran memori
internal untuk partisi yang tidak digunakan.
Salah
satu solusi untuk masalah fragmentasi eksternal adalah pemadatan.
Tujuannya adalah untuk mengacak isi
memori sehingga dapat menempatkan semua memori bersama ke dalam satu blok
besar. Jika relokasi bersifat statis dan dilakukan pada waktu perakitan atau
saat pemuatan maka pemadatan tidak dapat dilakukan. Pemadatan hanya mungkin
jika relokasi yang dinamis dan dilakukan pada saat waktu eksekusi. Jika alamat
akan dipindahkan secara dinamis, relokasi hanya butuh menggerakan program dan
data kemudian mengubah base register untuk mencerminkan alamat base baru.
Ketika pemadatan dimungkinkan, kita harus menentukan nilainya. Algoritma
pemadatan paling sederhana adalah dengan memindahkan semua proses menuju salah
satu ujung memori dimana semua lubang bergerak ke arah lain, membentuk satu
lubang besar memori yang tersedia.
Solusi lain yang memnungkinkan untuk
masalah eksternal fragmentasi adalah dengan mengizinkan ruang alamat logis dari
proses menjadi tidak bersebelahan, sehingga memungkinkan proses untuk
dialokasikan ke memori fisik dimanapun yang terakhir tersedia. Dua teknik
pelengkap untuk mencapai solusi ini adalah Paging dan Segmentasi. Kedua teknik
ini juga bisa dikombinasikan
1.4 Pagging
Pagging adalah sebuah skema
manajemen memori yang memungkinkan alamat fisik ruang proses menjadi tidak
saling berdekatan. Pagging menghindarkan sejumlah besar masalah dari potongan
memori yang terpasangan dalam berbagai ukuran ke ruang penyimpanan. Skema
ini paling sering digunakan sebelum
paging menderita dari masalah ini. Proses mengalokasikan memori fisik kapan pun
proses terakhir tersedia.

Gambar
8.7 Paging Hardware
1.4.1
Basic Method
Proses dimana paging akan membagi memori
menjadi blok-blok berukuran tetap yang disebut frame. Sementara memori logis
yang dibagi menjadi blok-blok berukuran sama disebut pages. Ketika suatu proses
akan dieksekusi, halamannya ( pages ) akan dimuat ke setiap frame memori yang
tersedia dari backing store. Backing store akan dibagi menjadi blok-blok
berukuran tetap dan berukuran sama dengan memori frame.
Dukungan hardware untuk paging
diilustrasikan pada Gambar 8.7. Setiap alamat yang dihasilkan oleh CPU dibagi
menjadi dua bagian yaitu sebuah nomor halaman (p) dan offset halaman (d). Nomor
halaman digunakan sebagai indeks untuk tabel halaman. Tabel halaman berisi
alamat dasar/base dari setiap halaman di memori fisik. Alamat dasar ini
dikombinasikan dengan offset halaman untuk menentukan alamat memori fisik yang
dikirim ke unit memori. Model paging memori ditampilkan pada Gambar 8.8.

Gambar
8.8 Model paging memori
Ukuran halaman (seperti ukuran
frame) didefinisikan oleh perangkat keras. Ukuran halaman biasanya terbagi 2
variasi antara 512 bytes dan 16 MB per halaman,
tergantung dari arsitektur komputer. Untuk menjalankan program berukuran n
halaman, dibutuhkan n frame bebas.
Sebagai contoh pada gambar 8.9
menggunakan ukuran halaman 4 byte dan memori fisik 32 byte ( 8 halaman ), kita
dapat melihat bagaimana pandangan pengguna terhadap memori dapat dipetakan ke
dalam memori fisik. Alamat logis 0 adalah halaman 0 dengan offset 0. Jika kika
Indeks ke tabel halaman, kita menemukan bahwa halaman 0 berada dalam bingkai 5.
Jadi, alamat logis 0 memetakan ke alamat fisik 20 =( ( 5 x 4 ) + 0). Alamat
logis 3 ( halaman 0 dengan offset 3 ) memetakan ke alamat fisik 23 = ( ( 5 x 4
) + 3 ). Alamat logis 4 adalah halaman 1 ber-offset 0; menurut tabel halaman,
halaman 1 dipetakan ke frame 6. Jadi, alamat logis 4 memetakan ke alamat fisik
24 = ( ( 6 x 4 ) + 0 ). Alamat logis 13 memetakan ke alamat fisik 9, dan
seterusnya.

Gambar
8.9 Contoh paging
1.4.2 Hardware
Support
Implementasi perangkat keras dari
tabel halaman dapat dilakukan dengan beberapa cara. Dalam kasus yang paling
sederhana, tabel halaman diimplementasikan sebagai kumpulan dari register
khusus. Register ini harus dibangun dengan logika yang sangat tinggi
kecepatannya untuk membuat terjemahan alamat paging paling efisien. Setiap
akses ke memori harus melalui peta paging, sehingga efisiensi adalah
pertimbangan utama.
Solusi standar untuk masalah ini
adalah dengan menggunakan suatu perangkat khusus yang disebut translation
look-aside buffer (TLB). TLB sangat
asosiatif dan memiliki memori berkecepatan tinggi. Setiap entri dalam TLB
terdiri dari dua bagian yaitu sebuah kunci (atau tag) dan nilai. Bila memori
asosiatif disajikan dengan item, item tersebut dibandingkan dengan semua kunci
secara bersamaan. Jika item ditemukan, nilai bidang yang sesuai dikembalikan.
Namun menggunakan metode ini memerlukan biaya mahal.
Persentase perkalian yang pada
nomor halaman tertentu ditemukan dalam TLB disebut rasio hit ( Hit Ratio ).
Rasio hit 80-persen berarti bahwa kita menemukan nomor halaman yang diinginkan
dalam TLB 80 persen dari waktu. Jika membutuhkan waktu 20 nanodetik untuk
mencari TLB dan 100 nanodetik untuk mengakses memori, maka akses jika dipetakan
ke memori akan mengambil 120 nanodetik
bila nomor halaman berada di TLB. Jika kita gagal untuk menemukan nomor halaman
dalam TLB (20 nanodetik), maka kita harus terlebih dahulu mengakses memori
untuk tabel halaman dan nomor frame (100 nanodetik) dan kemudian mengakses byte
yang diinginkan di memori (100 nanodetik), dengan total 220 nanodetik. Untuk menemukan
waktu akses memori efektif, kita dapat
mengukur setiap kasus dengan
probabilitasnya :
Waktu akses efektif = 0.80 x 120 + 0.20 x 220 = 140
nanodetik.
dimana dalam contoh ini, kita
mengalami penurunan 40 persen dalam waktu akses memori (100-140 nanodetik ).
Untuk rasio hit 98 persen, akan
didapatkan
Waktu akses efektif = 0.98 x 120 +
0.02 x 220 = 122 nanodetik
Ternyata hit rata-rata ini
meningkat hanya untuk menghasilkan perlambatan 22 persen dari waktu akses.

Gambar 8.10 Paging
Hardware dengan TLB
1.4.3 Protection
Satu bit dapat menentukan halaman
yang akan berstatus read-write atau
read-only. Setiap referensi ke memori berjalan melalui tabel halaman untuk
menemukan nomor frame yang benar. Pada saat yang sama bahwa alamat fisik sedang
dihitung, bit proteksi dapat diperiksa untuk memastikan bahwa tidak ada menulis
sedang dilakukan ke halaman read-only. Sebuah usaha untuk menulis ke halaman
read-only menyebabkan perangkat keras terjebak ke sistem operasi ( atau
pelanggaran terhadap perlindungan memori ).
Satu bit tambahan yang umumnya
melekat pada setiap entri pada tabel halaman yang valid dan sedikit valid. Jika
bit ini diset ke “valid,” maka halaman terkait ini akan masuk ke dalam ruang proses
alamat logika dan akan dinyatakan sebagi halaman yang legal/valid. Jika bit
diatur ke “tidak valid, ‘” halaman tidak akan ada di dalam ruang proses alamat
logika itu. Alamat ilegal akan dijebak diproses ini dengan menggunakan bit
valid-tak valid. Sistem operasi mengatur bit ini pada setiap halaman untuk
mengatur izin akses ke halaman.

GAmbar 8.11 Bit Valid dan invalid pada sebuah tabel
page
1.4.4 Shared Pages
Keuntungan dari paging adalah
kemungkinan kode umum berbagi. Pertimbangan ini sangat penting dalam lingkungan
time-sharing. Pertimbangkan sebuah sistem yang mendukung 40 pengguna, yang
masing-masing mengeksekusi sebuah editor teks. Jika editor teks terdiri dari
150 KB kode dan 50 KB ruang data, kita perlu 8.000 KB untuk mendukung 40
pengguna. Jika kode adalah kode reentrant (atau kode murni), namun dapat
dibagi, seperti yang ditunjukkan pada Gambar 8.13. Di sini kita melihat tiga
halaman editor masing-masing 50 halaman KB dalam ukuran (ukuran halaman besar
digunakan untuk menyederhanakan gambar) sedang dibagi-diantara tiga
proses.Setiap proses memiliki halaman datanya sendiri.
kode reentrant adalah kode
non-self-memodifikasi, tetapi tidak pernah berubah selama eksekusi. Jadi, dua
atau lebih proses dapat mengeksekusi kode yang sama pada waktu yang sama.Setiap
proses memiliki salinan dari register dan penyimpanan data untuk menyimpan data
untuk pelaksanaan proses itu. Data untuk dua proses yang berbeda akan, tentu
saja, akan berbeda.
Hanya satu salinan editor perlu disimpan
dalam memori fisik. peta Setiap halaman tabel pengguna ke salinan fisik yang
sama dari editor, tapi halaman data yang dipetakan ke frame yang berbeda. Jadi,
untuk mendukung 40 pengguna, kita hanya perlu satu salinan dari editor (150
KB), ditambah 40 salinan 50 KB dari ruang data per pengguna. Ruang total yang
dibutuhkan sekarang 2.150 KB bukan 8.000 KB-suatu penghematan yang signifikan.
program lain yang juga banyak digunakan
dapat dibagi-compiler, sistem window, run-time libraries, sistem basis data,
dan sebagainya. Untuk menjadi sharable, kode harus reentrant. Sifat hanya-baca
kode bersama tidak boleh diserahkan kepada kebenaran kode, sistem operasi harus
menegakkan properti ini.

8.12
Contoh Shared Pages
Summary
Algoritma memori-manajemen untuk
sistem operasi multi program berkisar dari pendekatan single-user sistem
sederhana untuk segmentasi paged. Penentu paling penting dari metode yang
digunakan dalam suatu sistem tertentu adalah perangkat keras yang disediakan.
Setiap alamat memori yang dihasilkan oleh CPU harus diperiksa untuk legalitas
dan mungkin dipetakan ke alamat fisik. pemeriksaan tidak dapat
diimplementasikan (efisien) dalam perangkat lunak. Oleh karena itu, kita
dibatasi oleh perangkat keras yang tersedia.
Algoritma memori-manajemen berbagai
(alokasi tambahan, paging, segmentasi, dan kombinasi dari paging dan
segmentasi) berbeda dalam banyak aspek. Dalam membandingkan strategi yang
berbeda-manajemen memori, kita menggunakan pertimbangan berikut :
1.
Hardware support.
Sebuah base register sederhana atau sepasang base-limit register sudah memadai
untuk single dan multiple-skema partisi, sedangkan paging dan segmentasi perlu
tabel pemetaan untuk menentukan peta alamat.
2.
Kinerja. Sebagai
algoritma memori-manajemen menjadi lebih kompleks, waktu yang dibutuhkan untuk
memetakan alamat logis ke alamat fisik meningkat. Untuk sistem yang sederhana,
kita hanya perlu membandingkan atau menambahkan ke alamat logis-operasi yang
cepat. Paging dan segmentasi dapat lebih cepat jika tabel pemetaan.
Diimplementasikan dalam register cepat. Jika tabel dalam memori, tetapi,
pengguna mengakses memori dapat terdegradasi secara substansial. Sebuah TLB
dapat mengurangi penurunan kinerja pada tingkat yang memadai.
3.
Fragmentasi. Sebuah
sistem multi program umumnya akan melakukan lebih efisien jika memiliki tingkat
yang lebih tinggi dari multiprogramming. Untuk diberikan serangkaian proses,
kita dapat meningkatkan tingkat multiprogramming hanya dengan kemasan proses
yang lebih ke dalam memori. Untuk menyelesaikan tugas ini, kita harus
mengurangi limbah memori, atau fragmentasi. Sistem dengan alokasi unit
berukuran tetap, seperti skema partisi tunggal dan paging, menderita
fragmentasi internal. Sistem dengan unit alokasi berukuran variabel, seperti
skema multi-partisi dan segmentasi, menderita fragmentasi eksternal.
4.
Relokasi. Salah satu
solusi untuk masalah eksternal-fragmentasi adalah pemadatan.Pemadatan
melibatkan pergeseran program dalam memori sedemikian rupa sehingga program ini
tidak melihat perubahan. Pertimbangan ini mengharuskan alamat logis dipindahkan
dinamis, pada waktu eksekusi. Jika alamat akan dipindahkan hanya pada waktu
buka, kita tidak bisa penyimpanan kompak.
5.
Swapping. Swapping
dapat ditambahkan ke algoritma. Pada interval yang ditentukan oleh sistem
operasi, biasanya kebijakan penjadwalan ditentukan oleh CPU, proses akan
disalin dari memori utama ke toko backing dan kemudian akan disalin kembali ke
memori utama. Skema ini memungkinkan proses yang lebih untuk dijalankan
daripada yang dapat masuk ke dalam memori pada satu waktu.
6.
Sharing. Cara lain
untuk meningkatkan tingkat multiprogramming adalah untuk berbagi kode dan data
antara pengguna yang berbeda. Berbagi umumnya mensyaratkan bahwa baik paging
atau segmentasi digunakan, untuk menyediakan paket-paket kecil informasi
(halaman atau segmen) yang bisa dibagi. Berbagi adalah sarana menjalankan
banyak proses dengan jumlah terbatas memori, tetapi program bersama dan data
harus dirancang secara hati-hati.
7.
Protection. Jika paging
atau segmentasi disediakan, bagian-bagian yang berbeda dari sebuah program
pengguna dapat dideklarasikan mengeksekusi-only, read-only, atau read-write.
Pembatasan ini perlu dengan kode bersama atau data dan umumnya berguna dalam
hal apapun untuk memberikan cek sederhana run-time untuk kesalahan pemrograman
umum.
DAFTAR ISI
www.google.com
http://rezataftazani.students-blog.undip.ac.id/2010/09/20/chapter-8-main
memory/comment-page-1/#comment-716
jpelupessy.mhs.uksw.edu/2012/12/main-memory.html
No comments:
Post a Comment