Minggu, 16 Mei 2010

Managing Memory

• Program Tunggal
memory dibagi 2, untuk OS dan untuk program yang dijalankan
• Program Jamak
Bagian “Pengguna” dibagi dan digunakan bersama oleh beberapa proses yang aktif

Swapping

Swapping (tukar menukar) ==> antrian panjang dari proses yang disimpan dalam disk
Proses swapping menukarkan sebuah proses keluar dari memori untuk sementara waktu ke sebuah penyimpanan sementara dengan sebuah proses lain yang sedang membutuhkan sejumlah alokasi memori untuk dieksekusi. Tempat penyimpanan sementara ini biasanya berupa sebuah fast disk dengan kapasitas yang dapat menampung semua salinan dari semua gambaran memori serta menyediakan akses langsung ke gambaran tersebut. Jika eksekusi proses yang dikeluarkan tadi akan dilanjutkan beberapa saat kemudian, maka ia akan dibawa kembali ke memori dari tempat penyimpanan sementara tadi. Bagaimana sistem mengetahui proses mana saja yang akan dieksekusi? Hal ini dapat dilakukan denganready queue. Ready queue berisikan semua proses yang terletak baik di penyimpanan sementara maupun memori yang siap untuk dieksekusi. Ketika penjadwal CPU akan mengeksekusi sebuah proses, ia lalu memeriksa apakah proses bersangkutan sudah ada di memori ataukah masih berada dalam penyimpanan sementara. Jika proses tersebut belum berada di memori maka proses swapping akan dilakukan seperti yang telah dijelaskan di atas.

• Permasalahan : I/O lebih lambat dibandingkan CPU seperti terjadi pada sistem operasi, pemrograman jamak, CPU dapat diam untuk sebagian besar waktu
• Solusi :
1. Meningkatkan memori utama
2. Swapping
• Setelah proses swapping dilakukan, maka file swap dihapus dari memory
• Jika tidak ada proses dalam memory yang siap (misal seluruh I/O digunakan), swap mengeluarkan satu blok proses ke antrian menengah.

Virtual Memory

Pengertian
Memori virtual merupakan suatu teknik yang memisahkan antara memori logis dan memori fisiknya. Teknik ini mengizinkan program untuk dieksekusi tanpa seluruh bagian program perlu ikut masuk ke dalam memori.
Berbeda dengan keterbatasan yang dimiliki oleh memori fisik, memori virtual dapat menampung program dalam skala besar, melebihi daya tampung dari memori utama 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).

Keuntungan
Sebagaimana dikatakan di atas bahwa hanya sebagian dari program yang diletakkan di memori. Hal ini berakibat pada:

o Berkurangnya I/O yang dibutuhkan (lalu lintas I/O menjadi rendah). Misal, untuk program butuh membaca dari disk dan memasukkan dalam memory setiap kali diakses.
o Berkurangnya memori yang dibutuhkan (space menjadi lebih leluasa). Contoh, untuk program 10 MB tidak seluruh bagian dimasukkan dalam memori. Pesan-pesan error hanya dimasukkan jika terjadi error.
o Meningkatnya respon, sebagai konsekuensi dari menurunnya beban I/O dan memori.
o Bertambahnya jumlah user yang dapat dilayani. Ruang memori yang masih tersedia luas memungkinkan komputer untuk menerima lebih banyak permintaan dari user.

Implementasi
Gagasan dari memori virtual adalah ukuran gabungan program, data dan stack melampaui jumlah memori fisik yang tersedia. Sistem operasi menyimpan bagian-bagian proses yang sedang digunakan di memori utama (main memory) dan sisanya ditaruh di disk. Begitu bagian di disk diperlukan, maka bagian di memori yang tidak diperlukan akan disingkirkan (swap-out) dan diganti (swap-in) oleh bagian disk yang diperlukan itu.
Memori virtual diimplementasikan dalam sistem multiprogramming. Misalnya: 10 program dengan ukuran 2 Mb dapat berjalan di memori berkapasitas 4 Mb. Tiap program dialokasikan 256 KByte dan bagian-bagian proses di-swap masuk dan keluar memori begitu diperlukan. Dengan demikian, sistem multiprogrammingmenjadi lebih efisien.
Memori virtual dapat dilakukan melalui dua cara:
1. Permintaan pemberian halaman (demand paging).
2. Permintaan segmentasi (demand segmentation). Contoh: IBM OS/2. Algoritma dari permintaan segmentasi lebih kompleks, karenanya jarang diimplementasikan

Paging

• membagi memory dalam ukuran yang sama, dalam potongan kecil (disebut bingkai halaman)
• Membagi program (proses) dalam potongan kecil berukuran sama
• Mengalokasikan jumlah bingkai halaman yang diperlukan untuk sebuah proses
• Sistem Operasi mengelola daftar bingkai yang bebas (tidak digunakan)
• Sebuah proses tidak memerlukan bingkai halaman yang berdampingan
• Menggunakan tabel halaman untuk menjaga alur kerja
• Paging –> Mempersiapkan resource untuk proses yang akan dijalankan

Segmentasi Virtual Memory
Beberapa sistem, seperti sistem Burroughs besar, tidak menggunakan paging untuk mengimplementasikan memori virtual. Sebaliknya, mereka menggunakan segmentasi, sehingga virtual address space sebuah aplikasi dibagi menjadi segmen variabel-panjang. Alamat maya terdiri dari beberapa segmen dan offset dalam segmen tersebut.

Terutama, didukung Intel 80286 skema segmentasi yang sama sebagai pilihan, tapi itu tidak digunakan oleh sistem operasi.

Hal ini dimungkinkan untuk menggabungkan segmentasi dan paging, biasanya membagi segmen ke halaman masing-masing. Dalam sistem yang menggabungkan mereka, seperti Multics dan System/38 IBM dan IBM System i mesin, memori virtual biasanya diimplementasikan dengan Pager, dengan segmentasi digunakan untuk menyediakan perlindungan memori. Dengan Intel 80386 dan kemudian IA-32 prosesor, segmen berada dalam ruang alamat 32-bit linear paged, sehingga segmen dapat dipindahkan ke dalam dan keluar dari ruang alamat linier, dan halaman di ruang alamat linier dapat dipindahkan masuk dan keluar dari memori utama , menyediakan dua tingkat memori virtual, namun jika ada beberapa sistem operasi melakukannya. Sebaliknya, mereka hanya menggunakan paging.

Perbedaan antara implementasi memori virtual menggunakan halaman dan menggunakan segmen bukan hanya tentang pembagian memori dengan ukuran tetap dan variabel, masing-masing. Dalam beberapa sistem, umpamanya Multics, atau kemudian System/38 dan mesin Perdana, segmentasi itu sebenarnya terlihat oleh pengguna proses, sebagai bagian dari semantik model memori. Dengan kata lain, bukan sebuah proses hanya memiliki memori yang tampak seperti vektor besar tunggal byte atau kata-kata, itu lebih terstruktur. Hal ini berbeda dengan menggunakan halaman, yang tidak mengubah model terlihat pada proses. Hal ini memiliki konsekuensi penting.

Segmen bukan hanya halaman "dengan panjang variabel", atau cara sederhana untuk memperpanjang ruang alamat (seperti pada Intel 80286). Dalam Multics, segmentasi itu merupakan mekanisme yang sangat kuat yang digunakan untuk menyediakan model memori virtual single-level, di mana tidak ada pembedaan antara "memori proses" dan "file system" - sebuah proses 'ruang alamat aktif hanya terdiri daftar segmen (file) yang dipetakan ke ruang alamat potensi, baik kode dan data. Hal ini tidak sama dengan fungsi mmap kemudian di Unix, karena antar-file pointer tidak bekerja saat file pemetaan ke semi- sewenang-wenang tempat. Multics memiliki seperti mode pengalamatan dibangun ke instruksi paling. Dengan kata lain itu bisa melakukan pindah referensi antar-segmen, sehingga menghilangkan kebutuhan untuk linker yang sepenuhnya. ini juga bekerja ketika proses yang berbeda memetakan file yang sama ke tempat yang berbeda dalam ruang alamat pribadi mereka.f

Tidak ada komentar:

Posting Komentar