Senin, 17 Mei 2010

managing memory: swapping

SWAPPING

Sebuah proses harus berada di memori untuk dieksekusi. Proses juga dapat ditukar (swap) sementara keluar memori ke backing store dan kemudian dibawa kembali ke memori untuk melanjutkan eksekusi.
Backing store berupa disk besar dengan kecepatan tinggi yang cukup untuk meletakkan copy dari semua memory image untuk semua user, sistem juga harus menyediakan akses langsung ke memory image tersebut. Contohnya, sebuah lingkungan multiprogramming dengan penjadwalan CPU menggunakan algoritma round-robin. Pada saat waktu kuantum berakhir, manajer memori akan memulai untuk menukar proses yang baru selesai keluar dan menukar proses lain ke dalam memori yang dibebaskan (Gambar 7-4). Pada waktu berjalan, penjadwal CPU (CPU scheduler) akan mengalokasikan sejumlah waktu untuk proses yang lain di memori. Ketika masing-masing proses menyelesaikan waktu kuantum-nya, akan ditukar dengan proses
yang lain.
Kebijakan penukaran juga dapat digunakan pada algoritma penjadwalan berbasis prioritas. Jika proses mempunyai prioritas lebih tinggi datang dan meminta layanan, memori akan swap out proses dengan prioritas lebih rendah sehingga proses dengan prioritas lebih tinggi dapat di-load dan dieksekusi.
Umumnya sebuah proses yang di-swap out akan menukar kembali ke ruang memori yang sama dengan sebelumnya. Jika proses pengikatan dilakukan pada saat
load-time, maka proses tidak dapat dipindah ke lokasi yang berbeda. Tetapi, jika pengikatan pada saat execution-time , maka kemungkinan proses ditukar ke ruang memori yang berbeda, karena alamat fisik dihitung selama waktu eksekusi.
Bila CPU scheduler memutuskan untuk mengeksekusi proses, OS memanggil dispatcher. Dispatcher memeriksa untuk melihat apakah proses selanjutnya pada ready queue ada di memori. Jika tidak dan tidak terdapat cukup memori bebas, maka dispatcher swap out sebuah proses yang ada di memori dan swap in proses tersebut. Kemudian reload register ke keadaan normal.
Teknik swapping yang sudah dimodifikasi ditemui pada beberapa sistem misalnya Linux, UNIX dan Windows.

managing memory: virtual memory

Virtual memory adalah sebuah komputer sistem teknik yang memberikan kesan program aplikasi yang memiliki memori kerja berdekatan (ruang alamat), padahal mungkin secara fisik terfragmentasi dan bahkan mungkin meluap ke penyimpanan disk.
Dikembangkan untuk multitasking kernel , memori virtual menyediakan dua fungsi utama:

  • Setiap proses memiliki ruang alamat sendiri, sehingga tidak perlu direlokasi maupun yang diperlukan untuk menggunakan mode pengalamatan relatif .

  • Setiap proses satu blok berdekatan melihat memori bebas setelah peluncuran. Fragmentasi tersembunyi.


Semua implementasi (tidak termasuk emulator) memerlukan dukungan hardware. Hal ini biasanya dalam bentuk sebuah unit manajemen memori dibangun ke dalam CPU.

Sistem yang menggunakan teknik ini membuat pemrograman aplikasi besar lebih mudah dan menggunakan memori fisik yang sebenarnya (misalnya RAM ) lebih efisien daripada yang tanpa memori virtual. Virtual memory berbeda secara signifikan dari virtualisasi memori di memori virtual memungkinkan sumber daya untuk virtual sebagai memori untuk sistem tertentu, sebagai lawan dari kolam besar memori yang virtual sebagai kolam kecil untuk sistem yang berbeda.

Perhatikan bahwa "memori virtual" adalah lebih dari sekedar "menggunakan ruang disk untuk memperpanjang ukuran memori fisik" - yang hanya perpanjangan dari hirarki memori untuk menyertakan hard disk drive . Memperluas memori untuk disk adalah konsekuensi normal dari menggunakan teknik memori virtual, tapi bisa dilakukan dengan cara lain seperti lapisan atau bertukar program dan data mereka benar-benar keluar untuk disk sementara mereka tidak aktif. Yang dimaksud dengan "virtual memory" mendefinisikan ulang didasarkan pada ruang alamat memori virtual berdekatan dengan alamat untuk "trik" program berpikir mereka menggunakan alamat blok besar bersebelahan.

Modern komputer untuk tujuan umum sistem operasi umumnya menggunakan teknik memori virtual untuk aplikasi biasa, seperti pengolah kata, spreadsheet, pemutar multimedia, akuntansi, dll, kecuali dukungan hardware yang dibutuhkan (sebuah unit manajemen memori ) tidak tersedia. sistem operasi lama, seperti DOS [1] dari tahun 1980-an, atau mereka untuk mainframe tahun 1960-an, umumnya tidak memiliki fungsi virtual memory - pengecualian menjadi Atlas , B5000 dan Apple Computer 's Lisa .

Embedded sistem dan lain-tujuan sistem komputer khusus yang memerlukan sangat cepat dan / atau respon yang konsisten kali sangat mungkin memilih untuk tidak menggunakan virtual memory dikarenakan berkurangnya determinisme . Hal ini didasarkan pada gagasan bahwa pengecualian prosesor terduga menghasilkan yang tidak diinginkan jitter pada CPU dioperasikan I / O, yang tertanam prosesor yang lebih kecil sering melakukan langsung agar biaya dan konsumsi daya rendah, dan aplikasi sederhana terkait telah menggunakan sedikit untuk fitur multitasking

managing memory: segmentasi

Konsep segmentasi adalah user atau programmer tidak memikirkan sejumlah rutin program yang dipetakan ke main memori sebagai array linier dalam byte tetapi memori dilihat sebagai kumpulan segmen dengan ukuran berbeda-beda, tidak perlu berurutan diantara segment tersebut.

Segmentasi adalah skema manajemen memori yang memungkinkan user untuk melihat memori tersebut. Ruang alamat logika adalah kumpulan segmen. Setiap segmen mempunyai nama dan panjang. Spesifikasi alamat berupa nama segmen dan offset. Segment diberi nomor dan disebut dengan nomor segmen (bukan nama segmen) atau segment number. Segmen dibentuk secara otomatis oleh compiler.



Sebuah program adalah kumpulan segmen. Suatu segmen adalah unit logika seperti program utama, prosedur, fungsi, metode, obyek, variabel lokal, variabel global, blok umum, stack, tabel simbol, array dan lain-lain. Pandangan user terhadap sistem segmentasi dapat dilihat pada Gambar

Arsitektur Segmentasi

Alamat logika terdiri dari dua bagian yaitu nomor segmen (s) dan offset (d) yang dituliskan dengan

(nomor segmen, offset)

Pemetaan alamat logika ke alamat fisik menggunakan tabel segmen (segment table), terdiri dari
• Segmen basis (base) berisi alamat fisik awal
• Segmen limit merupakan panjang segmen

Seperti tabel page, tabel segmen dapat berupa register atau memori berkecepatan tinggi. Pada program yang berisi sejumlah segmen yang besar, maka harus menyimpan tabel page di memori.
• Segment-table base register (STBR) digunakan untuk menyimpan alamat yang menunjuk ke segment table.
• Segment-table length register (STLR) digunakan untuk menyimpan nilai jumlah segmen yang digunakan program.
• Untuk alamat logika (s, d), pertama diperiksa apakah segment number s legal (s < 88 =" 1488"> limit (412 > 400). Alamat logika dengan nomor segment 2 offset 320 akan dipetakan ke alamat fisik 4300 + 320 =
4620 karena offset < limit (320 < 400).



Dimulai dengan model 80386, microprocessor Intel menampilkan translasi alamat dengan 2 cara berbeda, yang disebut real mode dan protected mode. Real mode untuk memelihara kompatibilitas prosesor dengan model yang lebih lama dan untuk OS agar dapat melakukan bootstrap.

• Segmentation Registers
Logical address terdiri atas dua bagian : segment identifier dan sebuah offset yang menunjukkan alamat yang bersangkutan pada segment. Segment identifier adalah sebuah 16-bit field yang disebut segment selector. Untuk mempermudah memperoleh segment selectors dengan cepat, prosesor menyediakan segmentation register yang tujuannya hanya untuk memegang segment selectors. Ada enam segmentation register : cs, ss, ds, es, fs, dan gs.

• Segment Descriptor
Setiap segment direpresentasikan dengan 8-byte segment descriptor yang menggambarkan karakteristik segment. Segment descriptor disimpan pada Global Descriptor Table(GDT) atau pada Local Descriptor Table(LDT).

• Segment Selectors
Untuk mempercepat pengubahan dari logical address ke linear address, Intel menyediakan nonprogrammable register tambahan untuk setiap dari 6 programmable segmentation register. Setiap segment selector di-load pada sebuah segmentation register, segment descriptor yang bersangkutan di-load dari memori ke nonprogrammable CPU register yang bersesuaian. Jadi, pengubahan dari logical address ke linear address dilakukan tanpa mengakses GDT atau LDT yang berada pada memori utama. Akses ke GDT atau LDT hanya diperlukan bila isi dari segmentation register berubah. Setiap segment selector mengandung hal-hal berikut :
- Sebuah index 13-bit yang menunjukkan masukan segment descriptor yang berhubungan yang terdapat pada GDT atau LDT.
- Sebuah TI (tabe indicator) flag yang menunjukkan apakah segment descriptor terdapat pada GDt (Ti = 0) atau pada LDT (TI = 1).
- Sebuah RPl (requestor privilege level) 2-bit field, yang membuat current privilege level cPu tepat saat segment selector yang berhubungan di-load ke register cs.

• Segmentation Unit
Segmentatipn Unit melakukan operasi-operasi berikut :
- Memeriksa TI dari segment selector, untuk memutuskan apakah descriptor table berada pada segment descriptor.
- Menghitung alamat dari segment descriptor dari index filed segment selector.
- Menambahkan ke Base field dari segment descriptor, offset dari logical address, sehingga diperoleh linear address.

managing memory: paging

Paging unit mengubah linear addresses ke physical adresses. Paging unit mengecek tipe permintaan akses yang melanggar hak akses dari linear address. Jika akses memori tidak valid, maka akan menghasilkan eksepsi page fault.


Untuk efisiensi, linear address dikelompokkan dalam interval fixed-length yang disebut pages; linear addressess kontigu pada sebuah page dipetakan ke physical addresses kontigu. Paging unit menganggap semua RAM terpartisi menjadi fixed-length page frames. Setiap page frame mengandung sebuah page. Struktur data yang memetakan linear ke physical addressses disebut page tables, tersimpan dalam memori utama dan harus diinisialisasi secara tepay oleh kernel sebelum memfungsikan paging unit.


• Regular Paging
Linear address 32 bit dibagi menjadi 3 :
- Direktori, 10 bit most significant
- Tabel, 10 bit intermediet
- Offset, 12 bit least significant

Pengubahan linear address terjadi 2 dalam 2 tahap, masing-masing berdasar pada tipe tabel translasi. Tabel translasi yang pertama disebut page directory dan yang kedua disebut page table.


• Extended Paging
Dimulai pada model Pentium, mikroprosesor Intel 80x86 memperkenalkan extended paging, yang memungkinkan page frames berukuran 4KB atau 4 MB. Extended paging dimungkinkan dengan men-set Page Size flag dari sebuah entri Page Directory. Pada kasus ini, paging unit membagi 32 bit linear address menjadi 2 bagian:
- Direktori, 10 bit most significant
- Offset, 22 bit sisanya

Entri page directory untuk extended paging sama dengan untuk paging biasa, kecuali :
- Page Size flag harus diset.
- Hanya 10 bit most signifcant pertama dari 10 bit physical address field yang signifikan


• Transaction Lookaside Buffers (TLB)
Selain cache general purpose hardware, Intel 80x86 menyediakan juga cache yang lain, disebut translation lookaside buffers (TLB) untuk meningkatkan kecepatan translasi linear address.