You are on page 1of 39

MANAJEMEN MEMORI

MATA KULIAH : SISTEM OPERASI


Muhammad Airlangga – 211011401931 – 04TPLM003
PENJELASAN
Memori utama (RAM) adalah sumber daya penting yang perlu
ditangani dengan sangat hati-hati. Sementara rata-rata komputer
rumah saat ini memiliki memori 10.000 kali lebih banyak daripada IBM
7094, komputer terbesar di dunia pada awal 1960-an, program
menjadi lebih besar lebih cepat daripada memori. Parafrase hukum
Parkinson, "Program berkembang untuk mengisi memori yang tersedia
untuk menampung mereka.“

Apa yang diinginkan setiap programmer adalah memori pribadi yang


sangat besar dan cepat tanpa batas yang juga tidak mudah menguap,
yaitu, yang tidak kehilangan isinya saat catu daya dilepas.
Abstraksi Memori
Abstraksi memori yang paling sederhana adalah tidak memiliki
abstraksi. Komputer kerangka utama awal (sebelum 1960),
komputer mini awal (sebelum 1970), dan komputer pribadi
pertama (sebelum 1980) tidak memiliki abstraksi memori. Setiap
program hanya meli Ketika sebuah program menjalankan
instruksi seperti komputer baru saja memindahkan isi dari lokasi
memori fisik 1000 ke LOG1. Jadi, model memori yang disajikan
kepada programmer hanyalah memori fisik, sekumpulan alamat
dari 0 hingga maksimum, setiap alamat sesuai dengan sel yang
berisi sejumlah bit, biasanya delapan.hat memori fisik.
Dalam kondisi ini, tidak mungkin untuk menjalankan dua
program di memori pada saat yang bersamaan. Jika program
pertama menulis nilai baru, katakanlah, di posisi 2000, ini akan
menghapus nilai yang disimpan program kedua di sana. Tidak
ada yang berhasil dan kedua program akan terhambat.
Abstraksi Dalam Memori : Ruang Alamat
Secara keseluruhan, eksposur memori fisik ke proses memiliki
beberapa kelemahan penting. Pertama, jika program pengguna dapat
menangani setiap byte memori, mereka dapat dengan mudah
mengotori sistem operasi, secara sengaja atau tidak sengaja,
mengarahkan sistem ke grind lock (kecuali ada perangkat keras khusus
seperti lock-and -kunci dari IBM 360). Masalah ini muncul bahkan jika
hanya satu program pengguna (aplikasi) yang berjalan. Kedua, dengan
model ini, sulit untuk menjalankan beberapa program secara
bersamaan (pada gilirannya, jika hanya ada satu CPU)
Address Space
Dua masalah perlu diatasi untuk memungkinkan beberapa
aplikasi disimpan pada saat yang sama tanpa mengganggu satu
sama lain: perlindungan dan transfer. Kami melihat solusi
primitif yang pertama kali digunakan pada IBM 360: beri label
blok memori dengan kunci proteksi dan bandingkan kunci dari
proses yang berjalan dengan kunci dari setiap kata memori yang
diambil. Namun, pendekatan ini dengan sendirinya tidak
menyelesaikan masalah terakhir, meskipun dapat diselesaikan
dengan memposisikan ulang program saat dimuat, tetapi ini
adalah solusi yang lambat dan rumit.
Pertukaran
Jika memori fisik komputer cukup besar untuk
menampung semua proses, skema yang
dijelaskan sejauh ini akan bekerja lebih atau
kurang baik. Namun dalam praktiknya, jumlah
total RAM yang dibutuhkan untuk semua proses
seringkali jauh lebih banyak daripada yang dapat
ditampung oleh memori. Pada sistem Windows,
OS X, atau Linux biasa, sekitar 50–100 proses atau
lebih dapat dimulai segera setelah komputer
dihidupkan.
Manajemen Memori Bebas
Ketika memori dialokasikan secara dinamis, sistem operasi harus
mengelolanya. Secara umum, ada dua cara untuk melacak
penggunaan memori: bitmap dan daftar gratis. Di bagian ini dan
selanjutnya, kita akan melihat dua metode ini. Kita akan melihat
beberapa pengalokasi memori khusus yang digunakan di Linux
(seperti pengalokasi buddy dan slab) secara lebih rinci.
Manajemen Memori Dengan Bitmap

Dengan bitmap, memori dibagi menjadi unit alokasi sekecil


beberapa kata dan hingga beberapa kilobyte. Setiap unit alokasi
sesuai dengan bit dalam bitmap, yaitu 0 jika unit tersebut bebas
dan 1 jika sudah terisi (atau sebaliknya). Gambar 9.3
menunjukkan bagian dari memori dan bitmap yang sesuai.
Manajemen Memori Dengan Daftar Terkait

Cara lain untuk melacak memori adalah dengan menyimpan daftar


terkait dari segmen memori yang dialokasikan dan gratis, di mana
segmen berisi proses atau celah kosong antara dua proses. Memori
Gambar 9.3 (a) diwakili dalam Gambar 9.3 (c) sebagai daftar segmen
yang terhubung. Setiap entri dalam daftar menentukan lubang (H)
atau proses (P), alamat awal, panjang, dan penunjuk ke elemen
berikutnya.
Memori Virtual
Meskipun register dasar dan batas dapat digunakan untuk
membuat abstraksi ruang alamat, ada masalah lain yang perlu
diatasi: manajemen bloatware. Sementara ukuran memori
berkembang pesat, ukuran perangkat lunak tumbuh jauh lebih
cepat. Pada 1980-an, banyak universitas menjalankan sistem
timeshare dengan lusinan (kurang lebih puas) pengguna yang
berjalan secara bersamaan pada VAX 4MB. Microsoft sekarang
merekomendasikan memiliki setidaknya 2GB untuk Windows 8
64-bit. Tren multimedia membutuhkan lebih banyak memori.
Translation Lookaside Buffers
 Sekarang mari kita lihat skema yang diterapkan secara luas untuk
mempercepat paging dan untuk mengelola ruang besar alamat virtual,
mulai dari yang pertama. Titik awal untuk sebagian besar teknik
pengoptimalan adalah tabel halaman ada di memori. Secara potensial,
desain ini berdampak besar pada performa. Misalnya, pertimbangkan
instruksi 1-byte yang menyalin

satu register ke register lain. Jika paging tidak ada, instruksi ini hanya
membuat satu referensi ke memori, untuk mengambil instruksi.
Dengan paging, Anda memerlukan setidaknya satu referensi memori
tambahan untuk mengakses tabel halaman.
Manajemen Perangkat Lunak TLB
Hingga saat ini, kami berasumsi bahwa setiap mesin memori virtual
paged memiliki tabel halaman yang diakui perangkat keras, ditambah
TLB. Dalam proyek ini, pengelolaan dan pengelolaan kesalahan TLB
dilakukan sepenuhnya oleh perangkat keras MMU. Perangkap ke
sistem operasi hanya terjadi jika halaman tidak ada di memori.

Dulu, anggapan ini benar. Namun, banyak mesin RISC, termasuk


SPARC, MIPS, dan HP PA (sekarang mati), menangani hampir semua
halaman ini dalam perangkat lunak.
Tabel Halaman Untuk Memori Besar

TLB dapat digunakan untuk mempercepat terjemahan


alamat virtual-ke- fisik pada skema tabel halaman asli
dalam memori. Tapi itu bukan satu- satunya masalah yang
kita hadapi. Masalah lainnya adalah bagaimana menangani
ruang alamat virtual yang sangat besar. Di bawah ada dua
cara untuk mengobatinya.
• Tabel Halaman Bertingkat
 
• Tabel Halaman Terbalik
Algoritma Penggantian Halaman
Ketika terjadi kesalahan halaman, sistem operasi harus
memilih halaman yang akan dihapus (dihapus dari
memori) untuk memberi ruang bagi halaman yang
masuk.
Algoritme Penggantian Halaman Yang Optimal

Algoritme penggantian halaman terbaik mudah untuk dijelaskan tetapi


tidak mungkin untuk benar-benar diterapkan. Ini berjalan seperti ini.
Ketika terjadi kesalahan halaman, serangkaian halaman ada di memori.
Kami akan merujuk ke salah satu halaman ini di pernyataan berikutnya
(halaman yang berisi pernyataan itu). Halaman lain mungkin tidak
direferensikan hingga 10, 100, atau mungkin 1000 pernyataan
berikutnya. Setiap halaman dapat diberi label dengan nomor instruksi
yang akan dijalankan sebelum referensi pertama ke halaman tersebut.
Algoritme Untuk Mengganti Halaman Yang Baru
Saja Tidak Digunakan
Untuk memungkinkan sistem operasi mengumpulkan
statistik yang berguna tentang penggunaan halaman,
sebagian besar komputer memori virtual memiliki dua bit
status, R dan M, yang dikaitkan dengan setiap halaman. R
diatur setiap kali halaman direferensikan (baca atau tulis).
M disetel saat halaman ditulis (yaitu dimodifikasi). Bit-bit
tersebut terdapat dalam setiap entri tabel halaman.
Algoritme Penggantian Halaman
FIFO (First-In, First-Out)
Algoritma paging dengan overhead rendah lainnya adalah algoritma
FIFO (First-In, First-Out). Untuk mengilustrasikan cara kerjanya,
pertimbangkan supermarket yang memiliki cukup rak untuk memajang
produk

yang sama persis. Suatu hari, beberapa perusahaan memperkenalkan


makanan siap pakai baru: yogurt organik kering beku instan yang
dapat dibentuk kembali dalam oven microwave. Ini langsung populer,
jadi supermarket kami yang sudah jadi harus membuang produk lama
untuk menyimpannya.
Algoritma Penggantian Halaman
Kesempatan Kedua
Modifikasi FIFO sederhana yang menghindari masalah membuang
halaman yang banyak digunakan adalah dengan memeriksa bit R dari
halaman terlama. Jika nilainya 0, halaman tersebut sudah tua dan
tidak terpakai, sehingga segera diganti. Jika bit R adalah 1, bit tersebut
dihapus, halaman diletakkan di bagian bawah daftar halaman dan
waktu pemuatannya diperbarui seolah-olah baru saja tiba di memori.
Jadi penelitian terus berlanjut.
Algoritma Penggantian Halaman Jam
Meskipun peluang kedua adalah algoritme yang masuk akal, algoritme
ini tidak perlu efisien karena terus-menerus memindahkan halaman
dalam daftarnya. Pendekatan yang lebih baik adalah dengan
menyimpan semua bingkai halaman pada daftar melingkar dalam
bentuk jam. Tangan menunjuk ke halaman tertua.
Algoritma Penggantian Halaman (LRU)
Yang Paling Terakhir Digunakan
Perkiraan yang baik dari algoritme optimal didasarkan pada
pengamatan bahwa halaman yang telah digunakan secara ekstensif
dalam beberapa instruksi terakhir kemungkinan besar akan segera
digunakan lagi. Sebaliknya, halaman yang sudah tidak digunakan
selama berabad-abad kemungkinan besar akan tetap tidak digunakan
untuk waktu yang lama. Ide ini menyarankan algoritme yang bisa
diterapkan: ketika terjadi kesalahan halaman, hapus halaman yang
telah menganggur untuk waktu yang lama. Strategi ini disebut paging
Least Last Used (LRU).
Mensimulasikan LRU Dalam Perangkat
Lunak
Meskipun algoritma LRU sebelumnya (pada prinsipnya) dapat dicapai,
hanya sedikit, jika ada, mesin yang memiliki perangkat keras yang
diperlukan. Sebagai gantinya, dibutuhkan solusi yang dapat
diimplementasikan dalam perangkat lunak. Salah satu
kemungkinannya disebut algoritma NFU (Not Frequently Used).
Membutuhkan penghitung perangkat lunak yang terkait dengan setiap
halaman, awalnya nol.
Algoritma Penggantian Halaman Set Kerja
Dalam bentuk paging yang paling murni, proses dimulai tanpa
halaman di memori. Segera setelah CPU mencoba mengambil instruksi
pertama, ia menerima kesalahan halaman, menyebabkan sistem
operasi memasukkan halaman yang berisi instruksi pertama.
Kesalahan halaman lain untuk variabel global dan tumpukan biasanya
mengikuti dengan cepat. Setelah beberapa saat, proses memiliki
sebagian besar halaman yang dibutuhkan dan diselesaikan untuk
berjalan dengan kesalahan halaman yang relatif sedikit. Strategi ini
disebut halaman permintaan karena halaman dimuat hanya atas
permintaan, bukan sebelumnya.
Masalah Perancangan Sistem Paging

Di bagian sebelumnya, telah dijelaskan cara kerja paging dan


menyediakan beberapa algoritme dasar untuk penggantian halaman.
Tetapi mengetahui mekanika telanjang saja tidak cukup. Untuk
merancang sistem dan membuatnya bekerja dengan baik, Anda perlu
mengetahui lebih banyak. Ini seperti perbedaan antara mengetahui
cara memindahkan benteng, kesatria, uskup, dan bidak catur lainnya
dan menjadi pemain yang baik. Pada bagian berikut, kita akan melihat
masalah lain yang perlu dipertimbangkan oleh perancang sistem
operasi dengan hati-hati untuk mendapatkan kinerja yang baik dari
sistem paging.
Local versus Global Allocation Policies
(Kebijakan Alokasi Lokal versus Global)
Pada bagian sebelumnya kita telah membahas beberapa algoritma
untuk memilih halaman yang akan diganti saat terjadi kesalahan.
Masalah utama yang terkait dengan pilihan ini (yang telah kami
sembunyikan dengan hati-hati sampai sekarang) adalah bagaimana
memori harus dialokasikan di antara proses yang dapat dieksekusi
yang bersaing.
Load Control (Kontrol Beban)
Bahkan dengan algoritme penggantian halaman terbaik dan alokasi
global yang optimal dari bingkai halaman ke proses, terkadang sistem
bisa macet. Memang, setiap kali set kerja gabungan dari semua proses
melebihi kapasitas memori, thrashing dapat diharapkan. Gejala dari
situasi ini adalah algoritma PFF menunjukkan bahwa beberapa proses
memerlukan lebih banyak memori tetapi tidak ada proses yang
memerlukan lebih sedikit memori. Dalam kasus ini, tidak ada cara
untuk memberikan lebih banyak memori ke proses yang
membutuhkannya tanpa merusak proses lainnya. Satu-satunya solusi
nyata adalah menghapus sementara beberapa proses.
Page Size (Ukuran Halaman)
Ukuran halaman merupakan parameter yang dapat dipilih oleh sistem
operasi. Bahkan jika perangkat keras dirancang dengan, misalnya,
halaman 4096-byte, sistem operasi dapat dengan mudah
mempertimbangkan pasangan halaman 0 dan 1, 2 dan 3, 4 dan 5, dan
seterusnya, sebagai halaman 8KB. menugaskan mereka dua ingkai
halaman 8192-byte berturut- turut.
Separate Instruction and Data Spaces
(Instruksi Terpisah dan Ruang Data)
Pada komputer dengan jenis desain ini, kedua ruang alamat dapat
diberi nomor halaman, secara terpisah satu sama lain. Masing-masing
memiliki tabel halaman sendiri, dengan pemetaan halaman virtual ke
bingkai halaman fisik. Ketika perangkat keras ingin mengambil
instruksi, ia tahu ia harus menggunakan I-space dan tabel halaman I-
space. Demikian juga, data harus melewati tabel halaman D-space.
Shared Pages (Halaman Yang Dibagikan)

Masalah desain lainnya adalah berbagi. Dalam sistem


multiprogramming yang besar, biasanya beberapa pengguna
menjalankan program yang sama pada waktu yang sama. Bahkan satu
pengguna dapat menjalankan beberapa program yang menggunakan
pustaka yang sama. Jelas lebih efisien untuk berbagi halaman, untuk
menghindari dua salinan halaman yang sama dalam memori pada
waktu yang sama.
Shared Libraries (Pustaka Yang
Dibagikan)
Berbagi dapat dilakukan dengan perincian lain selain halaman
individual. Jika sebuah program dijalankan dua kali, kebanyakan sistem
operasi akan secara otomatis membagikan semua halaman teks
sehingga hanya satu salinan yang ada di memori. Halaman teks selalu
hanya-baca, jadi tidak ada masalah di sini. Bergantung pada sistem
operasi, setiap proses bisa mendapatkan salinan halaman data
pribadinya sendiri, atau mereka dapat dibagikan dan ditandai sebagai
hanya baca. Jika suatu proses mengubah halaman data, itu akan
membuat salinan pribadinya, yaitu salinan tulis akan diterapkan.
Mapped Files (Pemetaan Files)
Library bersama benar-benar kasus khusus dari struktur yang lebih
umum yang disebut file yang dipetakan memori. Idenya di sini adalah
bahwa suatu proses dapat mengeluarkan panggilan sistem untuk
memetakan file ke bagian dari ruang alamat virtualnya. Dalam
sebagian besar penerapan, tidak ada halaman yang diimpor pada saat
pemetaan, tetapi saat halaman diketuk, halaman satu per satu diminta
untuk dibuat halaman, menggunakan file disk sebagai arsip cadangan.
Saat proses keluar, atau secara eksplisit menghapus file, semua
halaman yang diubah ditulis kembali ke file di disk.
Cleaning Policy (Kebijakan
Pembersihan)
Paging berfungsi paling baik jika ada banyak sekali bingkai halaman
gratis yang dapat diklaim saat terjadi kesalahan halaman. Jika setiap
bingkai halaman penuh, dan selanjutnya diubah, sebelum halaman
baru dapat disisipkan, halaman lama harus ditulis ke disk. Untuk
memastikan persediaan frame halaman gratis yang berlimpah, sistem
paging umumnya memiliki proses latar belakang, yang disebut daemon
paging
Virtual Memory Interface (Memori Virtual
Antarmuka)
Hingga saat ini, seluruh diskusi kita mengasumsikan bahwa memori
virtual transparan bagi proses dan pemrogram, yaitu semua yang
mereka lihat adalah ruang alamat virtual yang besar di komputer
dengan memori fisik (er) kecil. Dengan banyak sistem, hal ini benar,
tetapi di beberapa sistem tingkat lanjut, pemrogram memiliki kendali
atas peta memori dan dapat menggunakannya dengan cara non-
tradisional untuk meningkatkan perilaku program. Di bagian ini, kami
akan meninjau secara singkat beberapa di antaranya.
Masalah Implementasi
 
• Keterlibatan Sistem Operasi Dengan Paging
• Penanganan Kesalahan Halaman
1. Perangkat keras memotong kernel, menyimpan penghitung program di
tumpukan. Pada kebanyakan mesin, beberapa informasi tentang status instruksi
saat ini disimpan dalam register khusus pada CPU.
2. Rutin kode assembly dimulai untuk menyimpan register umum dan informasi
volatil lainnya, untuk mencegah sistem operasi menghancurkannya. Rutinitas ini
menyebut sistem operasi sebagai prosedur.
3. Sistem operasi mendeteksi bahwa kesalahan halaman telah terjadi dan mencoba
mencari halaman virtual mana yang diperlukan. Seringkali salah satu register
perangkat keras berisi informasi ini. Jika tidak, sistem operasi perlu mengambil
penghitung program, mengambil instruksi, dan menguraikannya ke dalam
perangkat lunak untuk mengetahui apa yang dilakukannya saat kesalahan terjadi.
4. Setelah alamat virtual yang menyebabkan kesalahan diketahui,
sistem akan memeriksa apakah alamat ini valid dan keamanannya
konsisten dengan akses. Jika tidak, proses dikirim sinyal atau
dibatalkan. Jika alamatnya valid dan tidak ada kesalahan keamanan
yang terjadi, sistem akan memeriksa untuk melihat apakah bingkai
halaman bebas. Jika tidak ada bingkai yang gratis, algoritma
penggantian halaman dijalankan untuk memilih korban.
5. Jika bingkai halaman yang dipilih kotor, halaman tersebut
dijadwalkan untuk ditransfer ke disk dan sakelar konteks terjadi,
menangguhkan proses yang gagal dan membiarkan proses lain
berjalan hingga transfer disk selesai. Bagaimanapun, bingkai
ditandai sibuk untuk mencegahnya digunakan untuk tujuan lain.
6. Segera setelah bingkai halaman bersih (segera atau setelah itu ditulis ke disk), sistem
operasi mencari alamat disk tempat halaman yang diperlukan berada dan
menjadwalkan operasi disk untuk membawanya ke . Saat laman dimuat, proses
kesalahan masih ditangguhkan dan proses pengguna lain sedang berjalan jika
tersedia.
7. Ketika disk break menunjukkan bahwa halaman telah tiba, tabel halaman diperbarui
untuk mencerminkan posisinya dan bingkai ditandai seperti dalam keadaan normal.
8. Instruksi kesalahan dicadangkan ke keadaan semula dan penghitung program diatur
ulang untuk menunjuk ke instruksi itu.
9. Proses kegagalan dijadwalkan dan sistem operasi kembali ke prosedur (dalam bahasa
assembly) yang memanggilnya.
10. Rutinitas ini memuat ulang register dan informasi status lainnya dan kembali ke ruang
pengguna untuk melanjutkan eksekusi seolah-olah tidak ada kesalahan yang terjadi.
Segmentasi
Memori virtual yang dibahas sejauh ini adalah satu dimensi karena
alamat virtual berkisar dari 0 hingga alamat maksimum, satu alamat
demi satu alamat. Untuk banyak masalah, memiliki dua atau lebih
ruang alamat virtual yang terpisah bisa jauh lebih baik daripada hanya
memiliki satu. Misalnya, kompilator memiliki banyak tabel yang
dibuat saat kompilasi berlangsung, mungkin disertakan
• Teks sumber yang disimpan untuk daftar tercetak (pada sistem batch).
• Tabel simbol, berisi nama dan atribut variabel.
• Tabel yang berisi semua konstanta integer dan floating point yang digunakan.  
• Pohon parse, berisi parsing program.
• Tumpukan yang digunakan untuk panggilan prosedur dalam kompilator.
Penelitian Manajemen Memori
Manajemen memori tradisional, terutama algoritma paging untuk CPU
uniprocessor, pernah menjadi area yang bermanfaat untuk penelitian, tetapi
sebagian besar tampaknya sebagian besar telah menghilang, setidaknya
untuk sistem generik, meskipun ada orang yang belum. mereka tidak pernah
mengatakan mati (Moruz et al., 2012) atau fokus pada beberapa aplikasi,
seperti pemrosesan transaksi online, yang memiliki persyaratan khusus
(Stoica dan Ailamaki, 2013). Bahkan pada uniprocessor, paging pada SSD
alih-alih hard disk menimbulkan masalah baru dan membutuhkan algoritma
baru (Chen et al., 2012). Paging ke memori perubahan fase non-volatile yang
muncul juga membutuhkan pemikiran ulang halaman untuk kinerja (Lee et
al., 2013) dan untuk alasan latensi (Saito dan Oikawa, 2012) dan karena
mereka aus jika digunakan terlalu banyak (Bheda et al. ., 2011, 2012).
SEKIAN TERIMAKASIH
MATA KULIAH : SISTEM OPERASI
Muhammad Airlangga – 211011401931 – 04TPLM003

You might also like