Managemen memori pada intinya adalah menempatkan semua bagian proses yang akan dijalankan kedalam memori sebelum proses itu dijalankan. Untuk itu, semua bagian proses itu harus memiliki tempat sendiri di dalam memori fisik.
Tetapi tidak semua bagian dari proses itu akan dijalankan, misalnya:
Pernyataan atau pilihan yang hanya akan dieksekusi pada kondisi tertentu. Contohnya adalah: pesan-pesan error yang hanya muncul bila terjadi kesalahan saat program dijalankan.
Fungsi-fungsi yang jarang digunakan.
Pengalokasian memori yang lebih besar dari yang dibutuhkan. Contoh: array, list dan tabel.
Pada memori berkapasitas besar, hal-hal ini tidak akan menjadi masalah. Akan tetapi, pada memori yang sangat terbatas, hal ini akan menurunkan optimalisasi utilitas dari ruang memori fisik. Sebagai solusi dari masalah-masalah ini digunakanlah konsep memori virtual.
Memori virtual adalah suatu teknik yang memisahkan antara memori logis dan memori fisiknya. Teknik ini menyembunyikan aspek-aspek fisik memori dari pengguna dengan menjadikan memori sebagai lokasi alamat virtual berupa byte yang tidak terbatas dan menaruh beberapa bagian dari memori virtual yang berada di memori logis.
Berbeda dengan keterbatasan yang dimiliki oleh memori fisik, memori virtual dapat menampung program dalam skala besar, melebihi daya tampung dari memori fisik yang tersedia.
Prinsip dari memori virtual yang patut diingat adalah bahwa: "Kecepatan maksimum eksekusi proses di memori virtual dapat sama, tetapi tidak pernah melampaui kecepatan eksekusi proses yang sama di sistem tanpa menggunakan memori virtual."
Konsep memori virtual pertama kali dikemukakan Fotheringham pada tahun 1961 pada sistem komputer Atlas di Universitas Manchester, Inggris (Hariyanto, Bambang: 2001).
Demand Paging
Demand paging atau permintaan pemberian halaman adalah salah satu implementasi dari memori virtual yang paling umum digunakan. (Demand paging) pada prinsipnya hampir sama dengan permintaan halaman (paging) hanya saja halaman (page) tidak akan dibawa ke ke dalam memori fisik sampai ia benar-benar diperlukan. Untuk itu diperlukan bantuan perangkat keras untuk mengetahui lokasi dari halaman saat ia diperlukan.
Karena demand paging merupakan implementasi dari memori virtual, maka keuntungannya sama dengan keuntungan memori virtual, yaitu:
Sedikit I/O yang dibutuhkan.
Sedikit memori yang dibutuhkan.
Respon yang lebih cepat.
Dapat melayani lebih banyak pengguna.
Ada tiga kemungkinan kasus yang dapat terjadi pada saat dilakukan pengecekan pada halaman yang dibutuhkan, yaitu: halaman ada dan sudah berada di memori. Statusnya valid ("1"). Halaman ada tetapi masih berada di disk belum diberada di memori (harus menunggu sampai dimasukkan). Statusnya tidak valid ("0"). Halaman tidak ada, baik di memori maupun di disk (invalid reference --> abort).
Saat terjadi kasus kedua dan ketiga, maka proses dinyatakan mengalami kesalahan halaman. Perangkat keras akan menjebaknya ke dalam sistem operasi.
Skema Bit Valid - Tidak Valid
Dengan meminjam konsep yang sudah pernah dijelaskan dalam bagian berjudul Segmentasi, maka dapat ditentukan halaman mana yang ada di dalam memori dan mana yang tidak ada di dalam memori.
Konsep itu adalah skema bit valid-tidak valid, di mana di sini pengertian valid berarti bahwa halaman legal dan berada dalam memori (kasus 1), sedangkan tidak valid berarti halaman tidak ada (kasus 3) atau halaman ada tapi tidak ditemui di memori (kasus 2).
Pengesetan bit:
Bit 1 --> halaman berada di memori
Bit 0 --> halaman tidak berada di memori.
(Dengan inisialisasi: semua bit di-set 0)
Apabila ternyata hasil dari translasi, bit halaman = 0, berarti kesalahan halaman terjadi.
Penanganan Kesalahan Halaman
Prosedur penanganan kesalahan halaman sebagaimana tertulis dalam buku Operating System Concept 5th Ed. halaman 294 adalah sebagai berikut:
Memeriksa tabel internal yang dilengkapi dengan PCB untuk menentukan valid atau tidaknya bit.
Apabila tidak valid, program akan di terminasi (interupsi oleh illegal address trap). Jika valid tapi proses belum dibawa ke halaman, maka kita halaman kan sekarang.
Memilih frame kosong (free-frame), misalnya dari free-frame list. Jika tidak ditemui ada frame yang kosong, maka dilakukan swap-out dari memori. Frame mana yang harus di-swap-out akan ditentukan oleh algoritma (lihat sub bab penggantian halaman).
Menjadualkan operasi disk untuk membaca halaman yang diinginkan ke frame yang baru dialokasikan.
Ketika pembacaan komplit, ubah bit validasi menjadi "1" yang berarti halaman sudah diidentifikasi ada di memori.
Mengulang instruksi yang tadi telah sempat diinterupsi. Jika tadi kesalahan halaman terjadi saat instruksi di-ambil, maka akan dilakukan pengambilan lagi. Jika terjadi saat operan sedang di-ambil, maka harus dilakukan pengambilan ulang, dekode, dan pengambilan operan lagi.
Apa yang terjadi pada saat kesalahan?
Kesalahan halaman menyebabkan urutan kejadian berikut:
Ditangkap oleh Sistem Operasi.
Menyimpan register pengguna dan proses.
Tetapkan bahwa interupsi merupakan kesalahan halaman.
Periksa bahwa referensi halaman adalah legal dan tentukan lokasi halaman pada disk.
Kembangkan pembacaan disk ke frame kosong.
Selama menunggu, alokasikan CPU ke pengguna lain dengan menggunakan penjadualan CPU.
Terjadi interupsi dari disk bahwa I/O selesai.
Simpan register dan status proses untuk pengguna yang lain.
Tentukan bahwa interupsi berasal dari disk.
Betulkan tabel halaman dan tabel yang lain bahwa halaman telah berada di memory.
Tunggu CPU untuk untuk dialokasikan ke proses tersebut
Kembalikan register pengguna, status proses, tabel halaman, dan meneruskan instruksi interupsi.
Pada berbagai kasus, ada tiga komponen yang kita hadapi pada saat melayani kesalahan halaman:
Melayani interupsi kesalahan halaman
Membaca halaman
Mengulang kembali proses
Kinerja Demand Paging
Menggunakan Effective Access Time (EAT), dengan rumus:
EAT = (1-p) x ma + p x waktu kesalahan halaman
p: kemungkinan terjadinya kesalahan halaman (0 < p < 1)
p = 0; tidak ada kesalahan halaman
p = 1; semuanya mengalami kesalahan halaman
ma: waktu pengaksesan memory (memory access time)
Untuk menghitung EAT, kita harus tahu berapa banyak waktu dalam pengerjaan kesalahan halaman.
Contoh penggunaan Effective Access Time
Diketahui: Waktu pengaksesan memory = ma = 100 nanodetik Waktu kesalahan halaman = 20 milidetik
Maka, EAT = (1-p) x 100 + p (20 milidetik) = 100 - 100p + 20.000.000p = 100 + 19.999.900p (milidetik)
Pada sistem demand paging, sebisa mungkin kita jaga agar tingkat kesalahan halamannya rendah. Karena bila Effective Access Time meningkat, maka proses akan berjalan lebih lambat.
Tetapi tidak semua bagian dari proses itu akan dijalankan, misalnya:
Pernyataan atau pilihan yang hanya akan dieksekusi pada kondisi tertentu. Contohnya adalah: pesan-pesan error yang hanya muncul bila terjadi kesalahan saat program dijalankan.
Fungsi-fungsi yang jarang digunakan.
Pengalokasian memori yang lebih besar dari yang dibutuhkan. Contoh: array, list dan tabel.
Pada memori berkapasitas besar, hal-hal ini tidak akan menjadi masalah. Akan tetapi, pada memori yang sangat terbatas, hal ini akan menurunkan optimalisasi utilitas dari ruang memori fisik. Sebagai solusi dari masalah-masalah ini digunakanlah konsep memori virtual.
Memori virtual adalah suatu teknik yang memisahkan antara memori logis dan memori fisiknya. Teknik ini menyembunyikan aspek-aspek fisik memori dari pengguna dengan menjadikan memori sebagai lokasi alamat virtual berupa byte yang tidak terbatas dan menaruh beberapa bagian dari memori virtual yang berada di memori logis.
Berbeda dengan keterbatasan yang dimiliki oleh memori fisik, memori virtual dapat menampung program dalam skala besar, melebihi daya tampung dari memori fisik yang tersedia.
Prinsip dari memori virtual yang patut diingat adalah bahwa: "Kecepatan maksimum eksekusi proses di memori virtual dapat sama, tetapi tidak pernah melampaui kecepatan eksekusi proses yang sama di sistem tanpa menggunakan memori virtual."
Konsep memori virtual pertama kali dikemukakan Fotheringham pada tahun 1961 pada sistem komputer Atlas di Universitas Manchester, Inggris (Hariyanto, Bambang: 2001).
Demand Paging
Demand paging atau permintaan pemberian halaman adalah salah satu implementasi dari memori virtual yang paling umum digunakan. (Demand paging) pada prinsipnya hampir sama dengan permintaan halaman (paging) hanya saja halaman (page) tidak akan dibawa ke ke dalam memori fisik sampai ia benar-benar diperlukan. Untuk itu diperlukan bantuan perangkat keras untuk mengetahui lokasi dari halaman saat ia diperlukan.
Karena demand paging merupakan implementasi dari memori virtual, maka keuntungannya sama dengan keuntungan memori virtual, yaitu:
Sedikit I/O yang dibutuhkan.
Sedikit memori yang dibutuhkan.
Respon yang lebih cepat.
Dapat melayani lebih banyak pengguna.
Ada tiga kemungkinan kasus yang dapat terjadi pada saat dilakukan pengecekan pada halaman yang dibutuhkan, yaitu: halaman ada dan sudah berada di memori. Statusnya valid ("1"). Halaman ada tetapi masih berada di disk belum diberada di memori (harus menunggu sampai dimasukkan). Statusnya tidak valid ("0"). Halaman tidak ada, baik di memori maupun di disk (invalid reference --> abort).
Saat terjadi kasus kedua dan ketiga, maka proses dinyatakan mengalami kesalahan halaman. Perangkat keras akan menjebaknya ke dalam sistem operasi.
Skema Bit Valid - Tidak Valid
Dengan meminjam konsep yang sudah pernah dijelaskan dalam bagian berjudul Segmentasi, maka dapat ditentukan halaman mana yang ada di dalam memori dan mana yang tidak ada di dalam memori.
Konsep itu adalah skema bit valid-tidak valid, di mana di sini pengertian valid berarti bahwa halaman legal dan berada dalam memori (kasus 1), sedangkan tidak valid berarti halaman tidak ada (kasus 3) atau halaman ada tapi tidak ditemui di memori (kasus 2).
Pengesetan bit:
Bit 1 --> halaman berada di memori
Bit 0 --> halaman tidak berada di memori.
(Dengan inisialisasi: semua bit di-set 0)
Apabila ternyata hasil dari translasi, bit halaman = 0, berarti kesalahan halaman terjadi.
Penanganan Kesalahan Halaman
Prosedur penanganan kesalahan halaman sebagaimana tertulis dalam buku Operating System Concept 5th Ed. halaman 294 adalah sebagai berikut:
Memeriksa tabel internal yang dilengkapi dengan PCB untuk menentukan valid atau tidaknya bit.
Apabila tidak valid, program akan di terminasi (interupsi oleh illegal address trap). Jika valid tapi proses belum dibawa ke halaman, maka kita halaman kan sekarang.
Memilih frame kosong (free-frame), misalnya dari free-frame list. Jika tidak ditemui ada frame yang kosong, maka dilakukan swap-out dari memori. Frame mana yang harus di-swap-out akan ditentukan oleh algoritma (lihat sub bab penggantian halaman).
Menjadualkan operasi disk untuk membaca halaman yang diinginkan ke frame yang baru dialokasikan.
Ketika pembacaan komplit, ubah bit validasi menjadi "1" yang berarti halaman sudah diidentifikasi ada di memori.
Mengulang instruksi yang tadi telah sempat diinterupsi. Jika tadi kesalahan halaman terjadi saat instruksi di-ambil, maka akan dilakukan pengambilan lagi. Jika terjadi saat operan sedang di-ambil, maka harus dilakukan pengambilan ulang, dekode, dan pengambilan operan lagi.
Apa yang terjadi pada saat kesalahan?
Kesalahan halaman menyebabkan urutan kejadian berikut:
Ditangkap oleh Sistem Operasi.
Menyimpan register pengguna dan proses.
Tetapkan bahwa interupsi merupakan kesalahan halaman.
Periksa bahwa referensi halaman adalah legal dan tentukan lokasi halaman pada disk.
Kembangkan pembacaan disk ke frame kosong.
Selama menunggu, alokasikan CPU ke pengguna lain dengan menggunakan penjadualan CPU.
Terjadi interupsi dari disk bahwa I/O selesai.
Simpan register dan status proses untuk pengguna yang lain.
Tentukan bahwa interupsi berasal dari disk.
Betulkan tabel halaman dan tabel yang lain bahwa halaman telah berada di memory.
Tunggu CPU untuk untuk dialokasikan ke proses tersebut
Kembalikan register pengguna, status proses, tabel halaman, dan meneruskan instruksi interupsi.
Pada berbagai kasus, ada tiga komponen yang kita hadapi pada saat melayani kesalahan halaman:
Melayani interupsi kesalahan halaman
Membaca halaman
Mengulang kembali proses
Kinerja Demand Paging
Menggunakan Effective Access Time (EAT), dengan rumus:
EAT = (1-p) x ma + p x waktu kesalahan halaman
p: kemungkinan terjadinya kesalahan halaman (0 < p < 1)
p = 0; tidak ada kesalahan halaman
p = 1; semuanya mengalami kesalahan halaman
ma: waktu pengaksesan memory (memory access time)
Untuk menghitung EAT, kita harus tahu berapa banyak waktu dalam pengerjaan kesalahan halaman.
Contoh penggunaan Effective Access Time
Diketahui: Waktu pengaksesan memory = ma = 100 nanodetik Waktu kesalahan halaman = 20 milidetik
Maka, EAT = (1-p) x 100 + p (20 milidetik) = 100 - 100p + 20.000.000p = 100 + 19.999.900p (milidetik)
Pada sistem demand paging, sebisa mungkin kita jaga agar tingkat kesalahan halamannya rendah. Karena bila Effective Access Time meningkat, maka proses akan berjalan lebih lambat.
0 komentar:
Post a Comment