Bellek Yönetimi (3) - Mehmet Mehdi KARAKOÇ

Report
Bellek Yönetimi (3)
Görüntü Bellek
• Gerçek bellek
– Ana bellek
• Görüntü (Sanal/Virtual) bellek
– Disk üzerinde oluşturulan ikincil bellek
– Çoklu programlamayı daha etkin kılar.
– Ana bellek boyu kısıtlarından programcıyı
kurtarır.
Görüntü (Sanal) Bellek
(Virtual Memory)
• Çalışma anında prosesin tüm parçalarının
birden bellekte olması gerekmez
• Proses çalışması boyunca belleğe alınıp,
bellekten atılabilir ve her seferinde farklı bir
bölgeye yerleştirilebilir.
• Prosesin parçalarının bellekte birbirini izleyen
bölgelerde olması gerekli değil
Görüntü (Sanal) Bellek (2)
• İşletim sistemi başlangıçta belleğe prosesin bir
kısmını yükler
• Yerleşik set (resident set) - prosesin bellekte
bulunan kısmıdır.
• İhtiyaç duyulan bir bölge bellekte yoksa kesme
oluşur
• İşletim sistemi prosesi bloke eder
Görüntü (Sanal) Bellek (3)
• İstenen mantıksal adresi içeren parçası belleğe
yüklenir
– İşletim sistemi tarafından disk G/Ç isteği
oluşturulur
– Disk G/Ç işlemi yürütülürken bir başka
proses çalışır
– Disk G/Ç işlemi tamamlanınca kesme oluşur.
İşletim sistemi bekleyen prosesi Hazır durumuna
getirir.
Prosesi Parçalara Ayırmanın Avantajları
• Ana bellekte daha fazla proses bulunabilir
– Prosesin sadece gerekli parçaları yüklenebilir
– Bellekte çok proses olduğundan en az birinin
Hazır durumunda olması olasılığı yüksek
• Bir proses tüm ana bellekten daha büyük
olabilir
Thrashing
• Bellekten atılan bir parçaya hemen ihtiyaç
duyulması durumu
• İşlemci zamanı proses parçalarını ana bellek ve
ikincil bellek arasında taşımakla geçer.
• Bu soruna karşılık, işletim sistemi, prosesin
geçmişine bakarak hangi parçalara ihtiyaç
duyacağını veya duymayacağını tahmin eder
Yerellik Prensibi
• Proses içi program kodu ve veri erişimleri
birbirine yakın bölgelerde kalma eğilimindedir
• Kısa bir süre içinde prosesin sadece küçük bir
alt kümesi gerekecektir
• Hangi parçaların gerekeceği konusunda
tahminde bulunmak mümkün
• Etkin bir çalışma sağlamak mümkün
Bellek Bölümleme (Tahsisi)
• Bölmeleme (Partitioning)
– Sabit
– Dinamik
• Basit sayfalama (Paging)
• Basit Kesimleme (Segmentation)
• Sayfalamalı görüntü bellek (Virtual Memory)
• Segmanlamalı görüntü bellek
Sayfalamalı Görüntü Bellek
• Diskin bir bölümü de ana bellek alanıymış gibi
kullanılır.
• Her prosesin kendi sayfa tablosu var
• Sayfa tablosunun yanında bir de «İndeks tablosu»
tutulur.
• Sayfa tablosunda ek olarak
– Sayfa Bellekte Kayıtlığı (Sayfanın bellekte olup
olmadığını gösterir)
– Değişim Kayıtlığı (Bellekteki ve diskteki kopya
arasında fark olup olmadığını gösterir)
– Erişim Hakkı Kayıtlığı bulunur.
Sayfalamalı Görüntü Bellek (2)
Sayfa Tabloları
• Sayfa tablosunun tamamı çok yer
gerektirebilir.
• Sayfa tabloları da ikincil bellekte saklanır
• Çalışan prosesin sayfa tablolarının bir kısmı da
ana belleğe alınır.
Translation Lookaside Buffer
• Her görüntü bellek erişiminde iki fiziksel bellek
erişimi olabilir:
– sayfa tablosunu getirmek için
– veriyi getirmek için
• Bu problemin çözümünde sayfa tablosu kayıtlarını
tutmak için hızlı bir cep bellek kullanılır: TLB
(Translation Lookaside Buffer)
(Çeviri arabellek tamponu)
• En yakın zamanda kullanılmış olan sayfa
tablosu kayıtlarını tutar
TLB kullanımı
Sayfa Boyu
• Sayfa boyu küçük olursa iç parçalanma daha az
• Küçük sayfa boyları olursa proses başına gereken
sayfa sayısı artar.
• Proses başına fazla sayfa olması sonucunda sayfa
tablosu boyları büyür.
• Sayfa tablosu boyunun büyük olması sonucu
tablonun ikincil bellekte tutulan kısmı daha büyük
• İkincil belleklerin fiziksel özellikleri nedeniyle
daha büyük bloklar halinde veri aktarımı daha
etkin ⇒ sayfa boyunun büyük olması iyi
Sayfa Boyu
• Zaman içinde proseslerin yakın zamanda
eriştikleri sayfaların büyük kısmı bellekte olur.
Sayfa hatası düşük olur.
• Sayfa boyu büyük olunca sayfalarda yakın
zamanlı erişimlere uzak kısımlar da olur. Sayfa
hataları artar.
Sayfa Boyu
• Birden fazla sayfa boyu olabilir.
• Büyük sayfa boyları program komut bölümleri
için kullanılabilir
• Küçük boylu sayfalar iplikler için kullanılabilir
• Çoğu işletim sistemi tek sayfa boyu destekler
Adres Dönüştürme Süreci
Adres dönüştürme sürecin de, bellek
yöneticisinin gerçekleştirmesi gereken işlemler
şunlardır:
1. Bellekte göreve atanacak boş bir sayfa aramak.
2. Bellekte kullanılabilir boş bir sayfa yoksa, yer açmak üzere
ana bellekten çıkarılacak sayfanın seçimini yapmak.
3. Ana bellekten çıkarılacak sayfada değişiklik yapılmışsa
(diskteki kopyasından farklı ise) sayfayı diskteki yerine
yazmak.
4. Erişilmek istenen sayfayı ana belleğe yüklemek.
5. Yarıda kesilen komutun işletimini yeniden başlatmak.
Sayfa Çıkarma Algoritmaları
• Ana bellekten sayfa çıkarma algoritmaları;
ana bellekte yer kalmadığı durumlarda
diske ana bellekteki bir sayfanın geçici
olarak aktarılması işlemini (Ana bellek-disk
arası gelgit) en aza indirmeyi hedefler.
– İlk giren sayfayı çıkarma
– En erken erişilmiş sayfayı çıkarma
– En geç erişilecek sayfayı çıkarma
– Saat Yöntemi
İlk giren sayfayı çıkarma
(FIFO)
• Bellekte uzun süre kalan bir sayfanın, gelecek komut
işletimlerinde erişilme olasılığının düşük olacağı
varsayımına dayanır.
21
En erken erişilmiş sayfayı çıkarma
(Least Recently Used - LRU)
• Yakın geçmişte kullanılmamış sayfayı çıkarma
algoritması olarak bilinir.
22
En geç erişilecek sayfayı çıkarma
(Optimal)
• Kuramsal olarak en iyi sonucu verecek algoritmadır. Zira bellekten
bir sayfa çıkarmak gerektiğinde, o an en geç erişilecek sayfanın
hangisi olduğu tahmin edilecektir.
23
Saat yöntemi
•
•
•
•
Kullanım biti adını alan ek bit
Sayfa belleğe yüklendiğinde kullanım bitine 1 yüklenir
Sayfaya erişimde kullanım biti bir yapılır
Çevrel kuyruk tutulur. İşaretçi en son belleğe alınan
sayfanın bir sonrasını gösterir.
• Bellekten atılacak sayfa belirlenirken bulunan kullanım
biti 0 olan ilk sayfa seçilir.
• Atılacak sayfa belirlenirken 1 olan kullanım bitleri de
sıfırlanır.
• Kullanım biti 0 olan yoksa ilk tur tamamlanır, ikinci
turda daha önce sıfır yaptıklarının ilki seçilir.
Bellek Bölümleme (Tahsisi)
• Bölmeleme (Partitioning)
– Sabit
– Dinamik
• Basit sayfalama (Paging)
• Basit Kesimleme (Segmentation)
• Sayfalamalı görüntü bellek (Virtual Memory)
• Segmanlamalı görüntü bellek
Kesimli Görüntü Bellek Yönetimi
• Kesim tanım çizelgelerinde
– Kesim başlangıç (base)
– Boy (limit)
– Erişim hakkı
– Kesim Bellekte Belirteci(0 veya 1)
– Erişim Belirteci
– Değişim Belirteci ‘de
bulunmalıdır.
26
Bellek Bölümleme (Tahsisi)
• Bölmeleme (Partitioning)
– Sabit
– Dinamik
• Basit sayfalama (Paging)
• Basit Kesimleme (Segmentation)
• Sayfalamalı görüntü bellek (Virtual Memory)
• Segmanlamalı görüntü bellek
• Kesimli-Sayfalı Görüntülü Bellek
Kesimli Sayfalı Görüntü Bellek Yönetimi
• Programların mantıksal adres alanı kesimlere, kesimler de
sayfalara ayrılır.
• Değişken boydaki kesimleri sayfa tabanında ele almayı
mümkün kılar. (Kesimli görüntü bellek yönetiminin temel
sakıncasını ortadan kaldırır)
• Kesimli-sayfalı görüntü bellek yönetiminde mantıksal
adresler üç birleşenden oluşur. Bu birleşenler:
– Kesim numarası
– Kesime göreli sayfa numarası
– Sayfa içi adrestir.
28
Kesimli Sayfalı Görüntü Bellek Yönetimi
• Mantıksal adresten fiziksel adrese geçişte iki temel tablo
kullanılır:
• Kesim Tablosu
– Kesim Numarası
– Başlangıç Adresi (Sayfa tanım Çizelgelerinin başlangıç
adresi)
– Boyu (ilgili sayfa tanım çizelgesinin boy bilgisi)
– Kesime Erişim Denetim Kodu
• Sayfa Tablosu
– Sayfa Numarası
– Başlangıç Adresi
– Sayfa bellekte Belirteci
– Erişim Hakkı Belirteci
– Değişim Belirteci
29
Linux’ta Bellek Yönetimi
• Görüntü Bellek Adresleme
– 3 seviyeli sayfa var:
• sayfa kataloğu
– her aktif prosesin bir sayfa kataloğu var.
– boyu bir sayfadır
– her kayıt orta aşama sayfa kataloğunun bir
sayfasına işaret
– her aktif proses için bellekte yer almalı
Linux’ta Bellek Yönetimi (2)
• orta aşama sayfa kataloğu
– birden fazla sayfadan oluşabilir
– her kayıt sayfa tablosunda bir sayfaya işaret
eder
• sayfa tablosu
– birden fazla sayfadan oluşabilir
– her kayıt prosesin bir sanal sayfasına işaret
eder
Linux’ta Bellek Yönetimi 3
– görüntü adres 4 alandan oluşur
• en yüksek anlamlı alan sayfa kataloğundaki bir
kayda indis
• ikinci alan orta aşama sayfa kataloğundaki bir
kayda indis
• üçüncü alan sayfa tablosundaki bir kayda indis
• dördüncü alan seçilen sayfadaki offset adresi
– platformdan bağımsız olarak 64 bitlik adresler
Linux’ta Mantıksal Adres
Sayfa katalog No
Katalog No
Sayfa No
Ofset
Linux’ta Bellek Yönetimi 4
• Sayfa atama:
– buddy sistemi kullanılır
• Sayfa değişimi:
– sayfa yöntemine dayalı bir yaklaşım
– kullanım biti yerine 8 bitlik yaş alanı var
– yaşlı olan (uzun zamandır erişilmemiş) sayfalar
öncelikle bellekten atılır
Windows’ta Bellek Yönetimi
• Windows’ta 2 seviyeli sanal sayfalar bulunur.
• Bu sanal sayfaların tamamı 2 boyutlu bir
matris gibi düşünülebilir.
• Birinci seviyedeki(boyuttaki) sanal sayfaya
Sayfa Yöneticisi (Page Directory) denir.
• Bu kısımda 1024 adet girdi bulunur.
• İkinci seviyeye (boyuta) ise Sayfa Tablosu (Page
Table) denir.
• Bu kısımda ise her biri 1024 girdiden oluşan
1023 tablo bulunmaktadır. Bu tablodaki her bir
girdi 4KB’lık bir fiziksel adrese işaret
etmektedir.
32 bitlik bir Sanal Adresin Parçaları
-Bir 32 bitlik adreste ilk 10 bit Sayfa Yöneticisi
Tablosunda indeks olarak kullanılır.
-İkinci 10 bit Sayfa Tablosunda indeks olarak
kullanılır.
-Kalan 12 bit ise fiziksel çerçevede kaç bit ilerde
nereye konumlanacağımızı belirler.
-Sanal Adres Uzayı Windows'ta 2’ye bölünmüştür.
-Bunun küçük adresli 2GB’ı kullanıcı modu, büyük
adresli 2GB’ı ise çekirdek modu olarak ayrılmıştır.
• Bunun nedeni ise sayfalar ve sayfa tablolarının bu
uzay içerisinde saklanması
• Bir kullanıcı prosesinin sisteme müdahale
etmesini engellemektir. Şekilde görüldüğü gibi:

similar documents