Fragmentasi Memori
8:26:00 AM
KertasputiH
, Posted in
Sistem Operasi
,
0 Comments
Penjadwalan jangka-panjang harus mencari dan mengalokasikan memori untuk semua segmen dari program pengguna. Situasi ini mirip dengan pemberian halaman kecuali bahwa segmen-segmen ini mempunyai panjang yang variabel; sedangkan pada halaman, semua mempunyai ukuran yang sama. maka, masalah yang dihadapi adalah pengalamatan memori secara dinamis, hal ini biasanya dapat diselesaikan dengan menggunakan algoritma best-fit atau algoritma first-fit.
Segmentasi dapat menyebabkan terjadi fragmentasi eksternal, ini terjadi ketika semua blok memori yang dapat dapat dialokasikan terlalu sedikit untuk mengakomodasi sebuah segmen. Dalam kasus ini, proses hanya harus menunggu sampai terdapat cukup tempat untuk menyimpan segmen tersebut di memori, atau, melakukan suatu pemampatan dapat digunakan untuk membuat ruang kosong dalam memori menjadi lebih besar. Karena segmentasi pada dasarnya adalah algoritma penempatan secara dinamis, maka kita dapat melakukan pemampatan memori kapan saja kita mau. Jika CPU Scheduler harus menunggu untuk satu proses, karena masalah pengalokasian memori, ini mungkin akan dilewati untuk mencari proses yang berprioritas lebih kecil untuk dieksekusi lebih dulu untuk membebaskan ruang kosong dalam memori.
Seberapa seriuskah masalah fragmentasi eksternal dalam segmentasi? Jawaban dari pertanyaan ini tergantung kepada besarnya rata-rata segmen yang tersimpan didalam memori. Jika ukuran rata-rata dari segmen menggunakan sedikit tempat di memori, maka fragmentasi eksternal yang dilakukan juga akan sedikit terjadi.
Segmentasi Dengan Pemberian Halaman
Pengertian
Metode segmentasi dan paging yang telah dijelaskan pada sub bab sebelumnya masing-masing memiliki keuntungan dan kerugian. Selain kedua metode itu ada metode pengaturan memori lain yang berusaha menggabungkan metode segmentasi dan paging. Metode ini disebut dengan segmentation with paging.
Dengan metode ini jika ukuran segmen melebihi ukuran memori utama maka segmen tersebut dibagi-bagi jadi ukuran-ukuran halaman yang sama ==> paging.
Kelebihan Segmentasi dengan Pemberian Halaman
Sesuai dengan definisinya yang merupakan gabungan dari segmentasi dan paging, maka metode ini memiliki keunggulan yang dimiliki baik oleh metode segmentasi mau pun yang dimiliki oleh paging.
Tetapi selain itu segmentasi dengan pemberian halaman ini juga memiliki beberapa kelebihan yang tidakdimiliki oleh kedua metode tersebut. Kelebihan-kelebihan segmentasi dengan pemberian halaman antara lain:
· Dapat dibagi.
· Proteksi.
· Tidak ada fragmentasi luar.
· Alokasi yang cepat.
· Banyak variasinya.
· Biaya kinerja yang kecil.
Perbedaan Segmentasi dan Paging
1. Segmentasi melibatkan programer (programer perlu tahu teknik yang digunakan), sedangkan dengan paging, programer tidak perlu tahu teknik yang digunakan.
2. Pada segmentasi kompilasi dilakukan secara terpisah sedangkan pada paging, kompilasinya tidak terpisah.
3. Pada segmentasi proteksinya terpisah sedangkan pada paging proteksinya tidak terpisah.
4. Pada segmentasi ada shared code sedangkan pada paging tidak ada shared code.
5. Pada segmentasi terdapat banyak ruang alamat linier sedangkan pada paging hanya terdapat satu ruang alamat linier.
6. Pada segmentasi prosedur dan data dapat dibedakan dan diproteksi terpisah sedangkan pada paging prosedur dan data tidak dapat dibedakan dan diproteksi terpisah.
7. Pada segmentasi pengubahan ukuran tabel dapat dilakukan dengan mudah sedangkan pada Paging pengubahan ukuran tabel tidak dapat dilakukan dengan mudah.
8. Segmentasi digunakan untuk mengizinkan program dan data dapat dipecahkan jadi ruang alamat mandiri dan juga untuk mendukung sharing dan proteksi sedangkan paging digunakan untuk mendapatkan ruang alamat linier yang besar tanpa perlu membeli memori fisik lebih.
Pengimplementasian Segmentasi dengan Pemberian Halaman Intel i386
Salah satu contoh prosesor yang menggunakan metode segmentasi dengan pemberian halaman ini diantaranya adalah Intel i386. Jumlah maksimum segmen tiap proses adalah 16 K dan besar tiap segmen adalah 4 GB. Dan ukuran halamannya adalah 4 KB.
Logical Address
Ruang logical address dari suatu proses terbagi menjadi dua partisi yaitu:
1. Partisi I
• Terdiri dari segmen berjumlah 8 K yang sifatnya pribadi atau rahasia terhadap proses tersebut.
• Informasi tentang partisi ini disimpan didalam Local Descriptor Table.
2. Partisi II
• Terdiri dari 8 K segmen yang digunakan bersama diantara proses-proses tersebut.
• Informasi tentang partisi ini disimpan didalam Global Descriptor Table.
Tiap masukan atau entri pada Local Descriptor Table dan Global Descriptor Table terdiri dari 8 bit dengan informasi yang detil tentang segmen khusus termasuk lokasi dasar dan panjang segmen tersebut.
Logical address merupakan sepasang:
1. Selektor
Terdiri dari angka 16 bit:
Dimana s = jumlah segmen (13 bit)
g = mengindikasikan apakah segmen ada di
Global Descriptor Table
atau Local Descriptor Table
(1 bit)
p= proteksi(2 bit)
s g p
13 1 2
2. Offset
Terdiri dari angka 32 bit yang menspesifikasikan lokasi suatu kata atau bita di dalam segmen tersebut.
Mesin memiliki 6 register segmen yang membiarkan 6 segmen dialamatkan pada suatu waktu oleh sebuah proses. Mesin meiliki register program mikro 8 bita untuk menampung descriptor yang bersesuaian baik dari Global Descriptor Table atau Local Descriptor Table. Cache ini membiarkan 386 menghindari membaca descriptor dari memori untuk tiap perujukan memori.
Alamat Fisik
Alamat fisik 386 panjangnya adalah 32 bit. Mula-mula register segmen menunjuk ke masukan atau entri di Global Descriptor Table atau Local Descriptor Table. Kemudian informasi dasar dan limit tentang segmen tersebut digunakan untuk mengeneralisasikan alamat linier. Limit itu digunakan untuk mengecek keabsahan alamat. Jika alamat tidak sah maka akan terjadi memori fault yang menyebabkan terjadinya trap pada sistem operasi. Sedangkan apabila alamat itu sah maka nilai dari offset ditambahkan kenilai dasar yang menghasilkan alamat linier 32 bit. Alamat inilah yang kemudian diterjemahkan ke alamat fisik.
Seperti dikemukakan sebelumnya tiap segmen dialamatkan dan tiap halaman 4 KB. Sebuah tabel halaman mungkin terdiri sampai satu juta masukan atau entri. Karena tiap entri terdiri dari 4 byte, tiap proses mungkin membutuhkan sampai 4 MB ruang alamat fisik untuk halaman tabel sendiri. Sudah jelas kalau kita tidak menginginkan untuk mengalokasi tabel halaman bersebelahan di memori utama. Solusi yang dipakai 386 adalah dengan menggunakan skema paging dua tingkat (two-level paging scheme). Alamat linier dibagi menjadi nomer halaman yang terdiri dari 20 bit dan offset halaman terdiri dari 12 bit. Karena kita page tabel halaman dibagi jadi 10 bit penunjuk halaman direktori dan 10 bit penunjuk tabel halaman sehingga logical address menjadi:
nomor halaman
offset halaman
p1 p2 d
10 10 12
0 Response to "Fragmentasi Memori"
Posting Komentar