Bellek Yönetimi 1 - Mehmet Mehdi KARAKOÇ

Download Report

Transcript Bellek Yönetimi 1 - Mehmet Mehdi KARAKOÇ

Bellek Yönetimi
Bellek Yönetimi
• Belleğin birden fazla prosese yer verilebilecek
şekilde alt birimlere ayrılması işlemidir.
Nasıl olmalı?
• Bellekteki herhangi bir işlemi başka bir yere
aktarabilmelidir. (Relocation)
• Birden fazla işlem veya kullanıcı olduğunda bir
kullanıcının diğer kullanıcını alanlarına girmeleri
önlenmelidir. (Koruma)
• Kullanıcılar arası kaynak paylaşımını sağlamalıdır.
(Paylaşma)
• Belleğin mantıksal alanlara bölünmesini
sağlayarak bilgiye erişimi kolaylaştırmalıdır.
• Belleğin yetmediği durumlarda fiziksel başka
bellek alanlarını yani hard diskleri/flash bellekleri
kullanabilmelidir.
Adres Türleri
• Fiziksel Adres: Bellek üzerindeki gerçek adres
• Mantıksal Adres: İşlemci üretir
• Göreceli Adres: Adres bir referans noktasına
göre ifade edilir. (Genelde proses başlangıç
adresi+değer)
Bellek Yönetim Birimi: Mantıksal adres->Fiziksel
adres
Bellek Yönetim Birimi
Proses Yükleme Türleri
• Mutlak Yükleme: Her zaman aynı sabit adres
• Yeniden Yerleşebilir Yükleme: Adres=başlangıç
noktası+sabit adres
• Dinamik Yükleme: Adres yükleme aşamasında
dinamik olarak atanır
Yeniden Yerleştirme
• Takas (Swap) İşlemi: önce RAM->ROM
sonra ROM->RAM
• Bitiştirme (DEFRAG/Sıkıştırma) İşlemi:
Kaydırarak boşlukları doldur.
Bu işlemler sonrası fiziksel adres değişir; ama
mantıksal adresler değişmeyebilir
Bellek Adres Kayıtlıkları (Registerler)
• Taban Kayıtlığı
– prosesin başlangıç adresi
• Sınır Kayıtlığı
– prosesin son adresi
• Bu değerler saklayıcılara proses belleğe
yüklendiğinde yazılır
Bellek Bölümleme (Tahsisi)
• Bölmeleme (Partitioning)
– Sabit
– Dinamik
• Basit sayfalama (Paging)
• Basit segmanlama (Segmentation)
• Sayfalamalı görüntü bellek (Virtual Memory)
• Segmanlamalı görüntü bellek
Sabit Bölümleme
• Eşit Parçalara Bölme
– boş bölmeye, boyu bölme boyundan küçük ya
da eşit prosesler yüklenebilir
– tüm bölmeler doluysa proseslerden biri
bellekten atılır
– program bölmeye sığmayabilir ⇒ Program kod
dosyalarına bölünür, çalışacak kısım çalışanın
üzerine yazılır (overlay)
Sabit Bölmeleme (2)
• Bellek kullanımı etkin değil:
– Her program ne kadar boyu küçük de olsa tam bir
bölmeyi elinde tutar ⇒ iç parçalanma (internal
fragmentation)
– Eşit boyda olmayan bölmeler kullanılması sorunu
bir derece çözer
• Maksimum aktif proses sayısı sınırlı
• İşletim sistemi tarafından gerçeklenmesi kolay
• Getirdiği ek yük az.
Yerleştirme Algoritmaları (Sabit
Bölümleme)
• Bölme boyları eşit
– prosesin hangi bölmeye yerleştirileceği fark
etmez
• Bölme boyları eşit değil
– her prosesi sığacağı en küçük bölmeye
– her bölme için kuyruk
– bölme içi boş kalan yer miktarını en aza
indirmek
Dinamik Bölmeleme (1)
• Bölme sayısı ve bölme boyları sabit değil
• Proseslere sadece gerektiği kadar bellek atanır
• Kullanılmayan boş yerler yine de oluşur (dış
parçalanma)
• Tüm boş alanın bir blok halinde olması için
sıkıştırma kullanılır
• Hangi boş bloğa hangi prosese atanacağına
işletim sistemi karar verir
Yerleştirme Algoritmaları (Dinamik
Bölmeleme (1)
1. En-İyi-Sığan Algoritması (Best-Fit)
– Boyu istenene en yakın olan boşluk seçilir
– Olası en küçük bölme bulunduğundan artan
boş alan az ⇒ sıkıştırmanın daha sık yapılanması
gerekir
Yerleştirme Algoritmaları (2)
2. İlk-Sığan Algoritması (First-fit)
– En hızlı
– Prosesler baş bölgelere yığılır ⇒ boş yer
ararken üst üste taranır
Yerleştirme Algoritmaları (3)
3. Bir-Sonraki-Sığan Algoritması (Next-fit)
– Son yerleştirilen yerden itibaren ilk sığan yeri
bulur
– Genellikle atamalar belleğin son kısımlarında
yer alan büyük boşluklardan olur
– En büyük boşluklar küçük parçalara bölünmüş
olur
– Sıkıştırma gerekir
Yerleştirme Algoritmaları (4)
4. En Kötü Uyan Algoritması (Worst-fit)
– Listeden araştırma yapıldıktan sonra en büyük
boşluğun seçilerek işlemin yerleştirilmesidir.
5. “Buddy” Yöntemi
• Tüm boş alan 2U boyutunda tek bir alan olarak
ele alınır
– s boyutundaki bir istek eğer 2U-1 < s <= 2U ise
tüm blok atanır
– Aksi halde blok 2U-1 boyutunda iki eş bloğa
bölünür (buddy)
– s’den büyük veya eşit en küçük birim blok
oluşturulana kadar işlem devam eder
Buddy Sistem Örneği
Buddy Yönteminin Ağaç ile Temsili