İşletim Sistemleri

advertisement
İşletim Sistemleri
İşletim Sistemleri
Dr. Binnur Kurt
[email protected]
Omega Eğitim ve Danışmanlık
http://www.omegaegitim.com
Bölüm 9
Bellek Yönetimi
1|Sayfa
İşletim Sistemleri
İÇİNDEKİLER
1. İşletim Sistemi
2. Kabuk
3. Prosesler
4. İplikler
5. İplikler Arası Eş Zamanlama
6. Prosesler Arası İletişim
7. İş Sıralama
8. Prosesler Arası Eş zamanlama
9. Bellek Yönetimi
10. Dosya Sistemi
11. Soket Haberleşme
Bölüm 9
Bellek Yönetimi
2|Sayfa
İşletim Sistemleri
BÖLÜM 9
Bellek Yönetimi
Bölümün Amacı
Bölüm sonunda aşağıdaki konular öğrenilmiş olacaktır:
► Bellek Yönetim Gereksinimleri
► Bellek Yönetim Teknikleri
► Sayfalama ve Segmanlama
► Görüntü Bellek
Bölüm 9
Bellek Yönetimi
3|Sayfa
İşletim Sistemleri
9.1 Giriş
İşletim sisteminin birincil görevi temel sistem kaynakları olan işlemci, ana
bellek ve diski kullanıcılar ve onların prosesleri arasında paylaştırmaktır.
Kullanıcı proseslerinin çalışabilmesi için bellekte bulunması gerekir. İşletim
sisteminde fiziksel belleğin yönetiminden sorumlu olan birime bellek yöneticisi
adı verilir. Bellek yöneticisi çalışan proseslerin hangi bellek bölümüne
yerleşeceğine karar verir, bellek erişimini ve yerleşimini denetler, prosesler
arasında bellek paylaşımını organize eder.
Bellek yöneticisinin denetiminde iki tür bellek yer alır:
 Fiziksel Ana Bellek: Yarıiletken teknolojisi olarak üretilmişlerdir.
Günümüzde fiziksel bellekler nispeten ucuz oldukları için büyük
bellekli sistemler oluşturmak mümkün olabilmektedir. DDR
standardında üretilmektedirler. DDR5 grafik kartlarında yoğun olarak
kullanılmaktadır. Bilgisayar sistemlerinde ise DDR4 bellekler
kullanılmaktadır.
İç hızı
Yol hızı
Transfer Hızı Gerilim
DDR Standardı
(MHz)
(MHz)
(GB/s)
(V)
DDR2
133-200
266-400
4.2-6.4
1.8
DDR3
133-200
533-800
8.5-14.9
1.35/1.5
DDR4
133-200 1066-1600
17-21.3
1.2
 İkincil Bellek: Fiziksel ana belleğin kapasitesinin tüm proseslerin
fiziksel belleğe sığması için yeterli olmadığı durumlarda ikincil
bellekten yararlanılır. İkincil bellek olarak kapasitesi ana belleğe göre
daha fazla olan ancak daha yavaş erişim başarımına sahip mekanik
diskler kullanılır. Son dönemde mekanik disklerin yerini daha pahalı
ancak erişim başarımı mekanik disklere göre çok daha iyi olan katı hal
diskler almaktadır (Şekil-9.1)
Mekanik Disk
Katı Hal Disk
Şekil-9.1 Mekanik disk ve katı hal disk görüntüsü
Bölüm 9
Bellek Yönetimi
4|Sayfa
İşletim Sistemleri
9.2 Bellek Yönetim Gereksinimleri
Bellek yönetim yaklaşımlarını ve mekanizmalarını çalışmadan önce belek yönetimi ile
ilgili gereksinimleri incelememiz faydalı olur. Herhangi bir bellek yönetim sisteminin
aşağıdaki beş gereksinimi karşılaması beklenir:
 Yeniden yerleşim
Yazılım geliştirici, çalışan programının bellekte fiziksel nereye yerleşeceği
ile ilgilenmeden uygulama geliştirilmelidir. Uygulama çalışma zamanında
farklı kapasiteli ve farklı fiziksel yerleşime sahip bellek parçalarının yer
aldığı sistemlerde çalıştırılabilir. İşletim sistemi, bellek yönetim sistemi
kullanıcıya sanal bir bellek uzayı sunar. Geliştirici sanki tüm bellek uzayını
sadece kendisine aitmiş gibi kod yazar. Üretilen bellek adresleri sanaldır.
Bellek yöneticisinin görevlerinden biri de bellek referans adresleri fiziksel
adres değerlerine dönüştürmektir. Koşan yazılımların fiziksel belleğe
sığmayan bölümleri ikincil bellekte saklanır. Daha sonra ihtiyaç
duyulduğunda, ikincil bellekten alınıp tekrar fiziksel belleğe muhtemelen
farklı bir bölmeye yüklenir.
 Koruma
İzni olmadan bir proses bir başka prosesin bellek alanlarına
erişememelidir. Programın yeri değişebileceğinden kontrol için
programdaki gerçek adresler kullanılamaz. Bu kontrolün çalışma
zamanında yapılması gerekir.
 Paylaşım
Bazen birden fazla prosesin aynı bellek bölgesine erişmesi istenebilir.
Prosesler biri birlerinin program kodunu ya da verilerini paylaşabilmelidir.
Koruma mekanizmasının bu paylaşıma izin verecek esneklikte olması
gerekir.
9.3 Bellek Yönetim Teknikleri
Bellek yönetiminde temel işlem prosesi çalışabilmesi için belleğe taşımaktır.
Prosesler sanal bellekte çalıştırılırlar. Sanal belleğin kullanıldığı günümüz işletim
sistemlerinde sanal belleğin organizasyonunda iki farklı yaklaşım kullanılır: sayfalama
ve segmanlama. Konunun daha iyi anlaşılması açısından, çalışmamıza önce, artık
günümüz işletim sistemlerinde kullanılmayan iki bellek yönetim yaklaşımı ile
başlayacağız: Durgun Bölümleme ve Devingen Bölümleme. Daha sonra sayfalama ve
segmanlama tekniklerini inceleyeceğiz.
9.3.1 Durağan Bölümleme
İşletim sisteminde ana belleğin bir bölümü işletim sisteminin kendisine ayrılmıştır.
Geri kalan bellek alanı ise bellek yöneticisi tarafından prosesler arasında paylaştırılır.
Bu paylaşımda en basit yaklaşımlardan biri bu bellek alanının sabit uzunlukta
bölümlere ayrılmasıdır (Şekil-9.2 (a)). Boş bölmeye, boyu bölme boyundan (64MB)
küçük ya da eşit prosesler yüklenebilir. 64MB boyutundan daha küçük bellek
ihtiyacında kullanılmayan alanlar oluşacaktır. Bu problem iç parçalanma (internal
fragmentation) olarak adlandırılır. eşit boyda olmayan bölmeler kullanılması sorunu
bir derece çözer. Proses bölmeye sığmadığı durumda, programcı program parçalarını
Bölüm 9
Bellek Yönetimi
5|Sayfa
İşletim Sistemleri
birbirinin üzerini örtecek şekilde kodlar. Bu problemler değişik uzunlukta bölümler
kullanılarak bir ölçüde hafifletilebilir.
Bu yöntemde maksimum aktif proses sayısı sınırlıdır. İşletim sistemi tarafından
gerçeklenmesi kolay ve getirdiği ek yük azdır.
Şekil-9.2 (a) Eşit uzunlukta bölümleme (b) Değişken uzunlukta bölümleme
Bölme boylarının eşit olduğu durumda prosesin hangi bölmeye yerleştirileceği fark
etmez. Bölme boylarının eşit olmadığı durumda ise bölme içi boş kalan yer miktarını
en aza indirmek üzere her proses sığacağı en küçük bölmeye yerleştirilir. Her bölme
için bir kuyruk düzenlenebilir (Şekil-9.3).
Bölüm 9
Bellek Yönetimi
6|Sayfa
İşletim Sistemleri
Şekil-9.3 Durgun Bölümlemede Bellek Atama
9.3.2 Dinamik Bölümleme
Bu yöntemde bölme sayısı ve bölme boyları sabit değildir. Proseslere sadece
gerektiği kadar bellek atanır (Şekil-9.4). Kullanılmayan boş yerler yine de oluşur. Bu
durum dış parçalanma (external fragmentation) olarak adlandırılır. Tüm boş alanların
bir blok halinde olması için sıkıştırma kullanılır (Şekil-9.5).
Bölüm 9
Bellek Yönetimi
7|Sayfa
İşletim Sistemleri
(a)
(b)
(c)
(d)
(e)
(f)
Şekil-9.4 Dinamik Bölümlemede Bellek Atama
Bölüm 9
Bellek Yönetimi
8|Sayfa
İşletim Sistemleri
Şekil-9.5 Dinamik Bölümlemede Boş Alanların Sıkıştırılması
Dinamik Bölümlemede Yerleştirme Algoritmaları
Hangi boş bloğun hangi prosesin atanacağına işletim sistemi karar verir. Bunun için
çeşitli algoritmalar önerilmiştir. Şimdi bu algoritmalara göz atacağız:
A. En iyi sığan Algoritması (Best-Fit)
Bu algoritmada, prosesin ihtiyaç duyduğu bellek alanına en yakın olan boşluk seçilir
(Şekil-9.6). Olası en küçük bölme bulunduğundan artan boş alan azdır. Buna karşılık
sıkıştırmanın daha sık yapılması gerekir.
B. İlk sığan Algoritması (First-Fit)
Bu algoritmada ilk boş göz seçilir (Şekil-9.6). Prosesler baş bölgelere yığılır. Boş yer
ararken üst üste taranır.
C. Bir sonraki Sığan Algoritması (Next-Fit)
Bölüm 9
Bellek Yönetimi
9|Sayfa
İşletim Sistemleri
Bu algoritmada, son yerleştirilen yerden itibaren ilk sığan yer bulunur (Şekil-9.6).
Genellikle atamalar belleğin son kısımlarında yer alan büyük boşluklardan seçilir. Bu
nedenle büyük boşluklar küçük parçalara bölünür. Bu da sıkıştırma gerektirir.
(a)
(b)
Şekil-9.6 Dinamik Bölümlemede Yerleştirme Algoritmaları
9.4 Sayfalama
Hem durağan hem de dinamik bölütleme, belleği verimsiz kullanırlar: biri iç
parçalanmaya diğer ise dış parçalanmaya neden olurlar. Sayfalamada proses küçük
ve eşit boylu parçalara bölünür. Benzer şekilde bellek de aynı boyda parçalara ayırılır
(Şekil-9.7). Prosesin eşit boylu bu parçalarına sayfa adı verilir. Eşit boylu bellek
parçaları ise çerçeve olarak isimlendirilir. İşletim sistemi her proses için sayfa tablosu
tutar. Prosesin her sayfasının hangi çerçevede olduğu bilgisinin kaydı yine sayfa
tablosunda tutulur (Şekil-9.8). Bellek adresinin değeri, sayfa numarası ve sayfa içi
ofset adresinin toplamından elde edilir. İşletim sistemi hangi çerçevelerin boş
olduğunu bilgisini tutar. Bellekte bir prosese ilişkin birden fazla sayfa olabilir. Sayfa ve
çerçeve boylarının ikinin kuvvetleri şeklinde seçilmesi dönüşüm hesaplamalarını
basitleştirir. Mantıksal adres, sayfa numarası ve sayfa içi kayıklık değerinden oluşur.
Sanal adresten fiziksel adrese dönüşüm için prosesin sayfa tablosundan yararlanılır.
16-bitlik bir örnek adres uzayı için, yüksek anlamlı 6-bit sayfa numarasını taşır, düşük
anlamlı 10-bit ise sayfa içi ofset değerini gösterir (Şekil-9.9).
Bölüm 9
Bellek Yönetimi
10 | S a y f a
İşletim Sistemleri
Şekil-9.7 Proses sayfalarına bellek çerçevelerinin atanması
Bölüm 9
Bellek Yönetimi
11 | S a y f a
İşletim Sistemleri
Şekil-9.8 Proseslerin sayfa tablosu değerleri
Şekil-9.9 Sayfalama yönteminde mantıksal adresten fiziksel adrese dönüşüm
Bölüm 9
Bellek Yönetimi
12 | S a y f a
İşletim Sistemleri
9.5 Segmanlama
Bu yöntemde, program segman adı verilen parçalara bölünür. Programların tüm
segmanları aynı boyda olmak zorunda değildir. Ancak segman boyunun bir üst sınırı
bulunur. Sayfalama çözümü geliştiriciye saydam olsa da segmanlama geliştiriciye ya
da onun kullandığı derleyiciye bağlıdır. Maksimum segman boyu bilinmesi gerekir.
Mantıksal adresler iki bölümden oluşur: segman numarası ve segman içi ofset.
Segman tablosundan segmanın adresi ve boyu alınır. Segman boyları eşit
olmadığından dinamik bölmelemeye benzer özelliklere sahiptir. Bir program birden
fazla segmandan oluşabilir. Bir programa ilişkin segmanlar bellekte ardışıl yerleşmek
zorunda değildir.
9.6 Görüntü Bellek
Bellek erişimleri dinamik olarak çalışma anında fiziksel adreslere dönüştürülür.
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ğildir. Benzer şekilde çalışma anında prosesin tüm parçalarının
birden bellekte olması gerekmez. İşletim sistemi başlangıçta belleğe prosesin bir
kısmını yükler. Prosesin bellekte bulunan kısmına Yerleşik Küme (Resident Set) adı
verilir. Çalışma zamanında ihtiyaç duyulan bir bölge bellekte yoksa kesme oluşur.
İşletim sistemi prosesi bloke eder ve istenen mantıksal adresi içeren parçayı belleğe
yükler. Bunun için işletim sistemi tarafından disk G/Ç isteği oluşturulur. Disk G/Ç
işlemi yürütülürken işlemciyi meşgul bekletmemek için hazır kuyruğunda bekleyen
proseslerden biri çalıştırılır. Disk G/Ç işlemi tamamlanınca kesme oluşur. İşletim
sistemi bekleyen prosesi hazır durumuna getirir. Fiziksel bellekteki tüm parçaların
dolu olması durumunda ise belirli bir kritere bağlı olarak bir parça fiziksel bellekten
ikincil belleğe atılır. Bellekten atılan bir parçaya hemen ihtiyaç duyulması durumu
yenilgi durumu olarak adlandırılır. Bu çok sık gerçekleşirse İş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ı
kestirmeye çalışır. Proses içi program kodu ve veri erişimleri birbirine yakın
bölgelerde kalma eğilimindedir. Bu yerellik prensibi olarak adlandırılır. 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 bu şekilde mümkün olabilir.
Fiziksel bellekte daha fazla proses bulunabilmesi için prosesin bellek görüntüsü
parçalara ayrılır ve sadece gerekli parçalar fiziksel bellekte bulundurulur. Hatta bir
proses tüm fiziksel bellekten daha büyük olabilir. Bellekte çok sayıda proses
olduğundan en az birinin Hazır durumunda olma olasılığı yüksektir.
Görüntü bellek için donanım sayfalamaya ve segmanı yapıya destek vermelidir. Her
prosesin kendi sayfa tablosu bulunur. Tablonun her satırında sayfanın ana bellekte
yer aldığı çerçeve numarası bulunur (Şekil-9.10). Sayfanın ana bellekte olup
olmadığını gösteren de bir bit yer alır. Buna ek olarak Sayfanın belleğe yüklendikten
sonra değişip değişmediğini gösterir bir bit daha yer alır. Eğer değişiklik yoksa ana
bellekten ikincil belleğe alınırken yeniden yazmaya gerek bulunmaz. Sayfa
tablosunun tamamı çok yer gerektirebilir. Sayfa tabloları da bu nedenle ikincil
Bölüm 9
Bellek Yönetimi
13 | S a y f a
İşletim Sistemleri
bellekte saklanır. Koşan prosesin sayfa tablolarının bir kısmı da ana belleğe alınır. Her
görüntü bellek erişiminde iki fiziksel bellek erişimi gerekebilir:
 sayfa tablosunu getirmek
 veriyi getirmek
Bu problemin çözümünde sayfa tablosu kayıtlarını tutmak için hızlı bir cep bellek
kullanılır: Translation Lookaside Buffer (TLB). En yakın zamanda kullanılmış olan sayfa
tablosu kayıtlarını tutar. Ana bellek için kullanılan cep bellek yapısına benzer bir işlev
görür.
Şekil-9.10 Sayfa tablosu kayıtları
SAYFA BOYU
Sayfa boyu küçük olursa iç parçalanma daha az olur. 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ının daha büyük olmasına neden olur. İkincil belleklerin
fiziksel özellikleri nedeniyle daha büyük bloklar halinde veri aktarımı daha verimli
olur. Sayfa boyunun büyük olması daha iyidir.
Sayfa boyu küçük olunca bellekteki sayfa sayısı artar. Zaman içinde proseslerin yakın
zamanda eriştikleri sayfaların büyük kısmı bellekte olur ve bu nedenle sayfa hatası
düşük olur. Sayfa boyu büyük olunca sayfalarda yakın zamanlı erişimlere uzak
kısımlarda olur ve sayfa hataları artar. 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.
ALMA YÖNTEMİ
Alma yöntemi, sayfanın belleğe ne zaman alınması gerektiğini belirler. İsteğe dayalı
sayfalama yöntemi kullanılıyorsa ancak sayfaya erişim olduğunda sayfa belleğe
getirilir. Sayfa hatası başta daha yüksek olur. Önceden sayfalama yöntemi
kullanıldığında ise gerektiğinden daha fazla sayfa belleğe alınır. Diskte birbirini
izleyen konumlarda yer alan sayfaları birlikte belleğe getirmek daha etkin bir
çözümdür.
YERİNE KOYMA
Yerleştirme yöntemi hangi sayfanın yerine konacak kararını verir. Bellekten atılacak
sayfa yakın zamanda erişilmesi olasılığı düşük olan bir sayfa olmalıdır. Çoğu yöntem
bir prosesin gelecek davranışını eski davranışına dayanarak kestirmeye çalışır. Bazı
çerçeveler kilitlenmiştir. Bir çerçeve kilitliyse yerine başkası yerleştirilemez: İşletim
sistemi çekirdeği, G/Ç tamponları gibi.
Bölüm 9
Bellek Yönetimi
14 | S a y f a
İşletim Sistemleri
YERİNE KOYMA YAKLAŞIMLARI
En Uzun Süredir Kullanılmamış (Least Recently Used (LRU)) Yöntemi
En uzun zamandır erişim olmamış olan sayfayı seçer. Yerellik prensibine göre yakın
zamanda da bu sayfaya erişim olmayacaktır. Her sayfada en son erişim zamanı bilgisi
tutulur bu nedenle ek bir maliyet getirir.
İlk Giren İlk Çıkar (First-in, first-out (FIFO)) Yöntemi
Prosese atanmış sayfa çerçevelerini çevrel bir kuyruk olarak ele alır. Sayfalar sıralı
olarak bellekten atılır. Gerçeklenmesi en basit yöntem budur. Bellekte en uzun kalmış
sayfanın yerine konur. Ancak bu sayfalara yakın zamanda erişim olabilir.
Saat yöntemi
Kullanım biti adını alan ek bit kullanılır. Sayfa belleğe yüklendiğinde kullanım bitine 1
değeri 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.
Bölüm 9
Bellek Yönetimi
15 | S a y f a
Download
Study collections