BELLEK YÖNETİMİ

advertisement
• Ana belleğin işlemler
arasında
paylaştırılmasına ana
bellek yönetimi ya da
bellek yönetimi denir.
1. ROM
2. RAM
3. PROM
4. EPROM
5. EEPROM
6. FLASH MEMORY
7. ÖNBELLEK OLARAK SAYILABILIR.
Programların kalıcı olarak durduğu
sadece okunabilen bellek tipidir. Veri
sadece ROM bellekten elde edilebilir.
• Hiçbir bilgi ROM belleğe yazılamaz. ROM
yapımcı veya kullanıcı tarafından bir daha
değiştirilmemek üzere konulan program
komutlarını içerir.
Örneğin BIOS ROM belleğe konulur.
ROM bellek uçucu (non-volatile) değildir.
• Yani bilgisayar sisteminin enerjisi kesildiği
zaman ROM’da depolanan bilgi
kaybedilmez.
Çalışma şekli açısından oku/yaz
belleği olarak da adlandırılır. Yani bu tür
bellekler hem içeriğine bilgi yazmak
hem de içeriğindeki bilgiyi okumak için
tasarlanmıştır.
Rastgele erişimli denmesinin sebebi
belleğin herhangi bir yerinde bulunan
verilere bir sıra takip edilmeksizin yani
rastgele ve aynı sürede erişilmesidir.
RAM’da saklanan bilgiler
değiştirilebilir. RAM’daki bilgilere
erişim, disk ya da disket sürücülerindeki
erişimle karıştırılmayacak kadar hızlıdır.
Bellek sığası (kapasitesi) Byte cinsinden
ölçülür.
Byte; bellek ölçü birimidir, 8 bitten
oluşur. Bit ise 1 ve 0 konumu alabilen en
küçük hafıza birimidir. Bellek ölçüleri
ise büyükten küçüğe doğru:
Kilo Byte; Bellek ölçü birimidir.
1024Byte den oluşur.
Küçük uzantılarda kullanılır.
Mega Byte; Bellek ölçü birimidir.
1024 KiloByte den oluşur.
müzik ve program dosyaları v.b
uzantılarda kullanılır .
Giga Byte;
Bellek ölçü birimidir.
1024 Mega Byte den oluşur.
büyük boyutlu uzantılarda kullanılır .
Tera Byte;
Bellek ölçü birimidir.
1024 Giga Byte den oluşur.
büyük boyutludur yeni yangınlaşmakta
olan bir ölçüdür.
1 BYTE
8 BİT
1 KİLO BYTE(KB)
1024BYTE
1 MAGA BYTE(MB)
1024 KB
1 GİGA BYTE(GB)
1024 MB
1 TERA BYTE
1024 GB
RAM bellekler DRAM (Dynamic
RAM) ve SRAM (Statik RAM) olmak
üzere iki çeşittir.
Kişisel bilgisayarlarında kullanılan
bellektir. Bu tür belleklerde bilgileri
saklamak için elektrik yükleri kullanılır.
Bilgisayarda bellek hücreleri bir
kondansatör ve bir transistör ile temsil
edilir. Tipik bir kondansatör aralarına
yalıtkan madde olan bir çift madde olan
plakadan ibarettir.
Plakanın birine pozitif yük
uygulandığında diğeri negatif olarak
yüklenir.
• Bir kondansatör üzerindeki yük tek bitlik
dijital bilgi saklayabilir. Yani kondansatör
üzerinde yük var ise bit 1 değerini yoksa 0
değerini alır.
Statik RAM elektrik olduğu sürece
içinde veri bitlerini saklayan bir
RAM’dir.
• Hafıza hücrelerini temsil etmek için basit
bir set/reset flip flop kullanılır.
DRAM’lerden farklı olarak bilgilerin
güncellenmesi gerekmemektedir. Bu da
SRAM’leri hızlı yapan en önemli
özelliktir
• Buna karşılık pahalıdırlar. SRAM’ler
genellikle bilgisayarın önbelleğinde
kullanılırlar.
PROM’ UN özellikleri temelde
ROM’la aynıdır. Bir kez programlanır ve
bir daha programı değiştirilemez ya da
silinemez.
Ancak Prom’un üstünlüğü yonganın
fabrikada yapılırken
programlanmak zorunda olmayışıdır.
• Herkes satın alabileceği PROM
programlayıcısı ile amaca göre PROM’a bilgi
yazılabilir.
RAM’ların elektrik kesildiğinde
bilgileri koruyamaması ROM ve
EROM’ların yalnızca bir kez
programlanabilmeleri bazı uygulamalar
için sorun yaratmıştır.
Bu sorunların üstesinden gelmek için
teknoloji devreye girmiş ve EPROM’lar
ortaya çıkmıştır
• EPROM programlayıcı aygıt yardımı ile bir
EPROM defalarca programlanabilir,
silinebilir.
EPROM programlayıcı, EPROM’un
üzerindeki kodlanmış programı mor
ötesi ışınlar göndererek siler.
• Yonganın üzerindeki pencere, parlak güneş
ışığı EPROM’ kolayca silebileceğinden,
programlama işleminden sonra EPROM’
UN üzeri bir bantla kapatılır.
Bu bellek türünde bilgilerin
yazılması için ve silinmesi için normal
elektrik voltajı uygulanır.
• Diğer ROM türlerinde olduğu gibi içerdiği
veriyi elektrik kesilse de saklar.
GeneL bütün ROM türlerinde olduğu
gibi RAM bellek kadar hızlı değildir
• . Bu tür belleklerin bir kullanım sınırı
vardır. Bu tür bellekler üzerine bilgiler
yüzlerce ya da binlerce kere yazılabilir.
EEPROM’un özel bir uygulaması
FLASH MEMORY’dir.
• Aralarındaki en önemli fark ise EEPROM’a
bilgilerin byte byte yazılması FLASH’lara ise
bilgilerin sabit bloklar halinde yazılmasıdır.
• Bu sabit bloklar 512 bytedan 256 KB’a kadar
olan bir aralıkta değişir.
Bu sabit bloklar halinde yazılma
özelliği FLASH MEMORY’i EEPROM’a
daha hızlı yapmıştır.
• EEPROM’larda olduğu gibi FLASH
MEMORY’nin de bir yaşam süresi vardır. Bu
100.000’den 300.000 kez yazmaya kadar
değişebilir.
• Ön Bellek çeşitleri;
1-
Internal (L2) Cache : Bu işlemci üreticisi
tarafından üretilen ve CPU üzerinde bulunan
cache bellek türüdür.
2External (L1)Cache : Anakart üzerinde
bulunan ve anakart üreticisi tarafından üretilen
cache bellek türüdür.
Günümüz bilgisayarlarında hızı belirleyen
en önemli faktörlerden bir tanesi de Ön
bellek kullanımıdır.
• Günümüzde veri okuması yazması ve
işlenmesi yapılan çoğu bilgisayar
elemanında bulunur.
Önbellek aslında SRAMlerden
oluşmuş bellek topluluğudur. Çalışma
şekli ise işlenecek olan bilgiyi alınmak
istendiğinde ilk defa buraya
uğranmasıdır.
Ön belleğin kullanım amacı
işlenecek olan bilgi işlemeden önce
buraya getirilerek bilgilerin işlenmeye
hazır hale getirilmesidir.
• Genellikte Mikro işlemcilerde kullanılır ve
mikro işlemcinin hızını belirleyen en
önemli faktörlerden birisidir.
Normalde işlenecek bilgilerin hepsi
bilgisayarın ANA BELLEĞİN (RAM) ’de
bulunur.
• İşlemci verileri işlemek için yol sistemleri
ile ANA BELLEĞE gidecek ve oradan
işleyeceği bilgiyi alacak ve işleyecektir.
• Ne ANA BELLEĞİN ne de yolların hızı
işlemcinin hızına yetişemez.
Bu yüzden işlemcinin her veri işleme
ihtiyacında ANA BELLEĞE gitmesi
zaman kaybına yol açacaktır ve işlemci
yeteri kadar verimli kullanılmayacaktır.
İşte bu yavaşlığı önlemek için
önbellekler kullanılır.
• İşletim sistemlerinde bellek hiyerarşisini
yöneten parçaya ise bellek yöneticisi
(memory manager) denir.
• Bellekte tutulan bilgiler,
komutlar/operatörler ve komutların
uygulanacağı veriler olmak üzere ikiye
ayrılır.
• Ana bellekte ayrıca iletim sistemi
bulunmakta ve bilgisayar kapanana kadar
sürekli bellekte bulunmaktadır.
Bir işletim sisteminin bellek
yönetiminin yararları şunlardır:
• Bellekteki herhangi bir işlemi başka bir
yere aktarabilmelidir.
• Birden fazla işlem veya kullanıcı
olduğunda bir kullanıcının diğer
kullanıcı alanlarına girmeleri
önlenmelidir.
• Kullanıcılar arası kaynak paylaşımını
sağlamalıdır.
• 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
kullanabilmelidir.
•Bellekte bilgiler ikili düzende saklanmaktadır:
BİT
:
(0-1)
NİBBLE :
Fh(15)
(4 Bit=1 Nibbles)
BYTE
:
FFh (255)
(8 Bit= 2 Nibbles=1 Byte)
WORD
:
FFFFh
(65536)
(16 Bit=4 Nibbles=2 Byte=1
Word)
• Bellek Yönetiminin Gerektirdikleri:
Yeniden yerleştirme (Relocation):
-Programcı çalışan programının bellekte nereye
yerleşeceğini bilmez,
• Bellek Yönetiminin Gerektirdikleri:
-Koşan program ikincil belleğe atılıp, ana bellekte
farklı bir yere tekrar yüklenebilir,
-Bellek referans adresleri fiziksel adres değerlerine
dönüştürülmeli.
► Koruma:
-İzni olmadan bir proses bir başka prosesin bellek
alanlarına erişemez,
-Programın yeri değişebileceğinden kontrol için
programdaki gerçek adresler kullanılamaz
-Çalışma anında kontrol edilmeli.
► Paylaşma:
Birden fazla prosesin aynı bellek bölgesine
erişmesi:
-Program kodu
-Ortak veri alanı
• Bellek Yönetimi Teknikleri:
► 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ölmeleme:
►Bölme boyları eşit:
-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 ⇒
programcı program
parçalarını birbirinin üzerini örtecek
şekilde (overlay) yazar.
►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.
• Dinamik Bölmeleme:
►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:
-(IBM OS/MVT: multi programming with a
variable number of tasks)
• “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 Sistem Örneği:
• Buddy Yönteminin Ağaç ile Temsili Buddy
Yönteminin Ağaç ile Temsili:
• Yeniden Yerleştirme :
►Proses belleğe yüklendiği zaman ancak mutlak
bellek adresleri belirlenebilir,
►Proses çalışması boyunca değişik bölmelere
yerleşebilir (swap) Mutlak adresler değişebilir,
►Sıkıştırma nedeni ile de proses farklı bölmelerde
yerleşebilir farklı mutlak bellek adresleri.
• Adresler :
►Mantıksal
-Belleğe erişimde kullanılan adres gerçek fiziksel
adreslerden bağımsız adres dönüşümü gerekir
►Bağıl
-Adres bilinen bir noktaya göre bağıl verilir,
-Genellikle bu nokta prosesin başıdır.
►Fiziksel
-Ana bellekteki gerçek konum adresi
• Yeniden yerleştirme için gerekli donanım
desteği:
• Saklayıcılar:
►Taban saklayıcısı
-Prosesin başlangıç adresi
►Sınır saklayıcısı
-Prosesin son adresi
►Bu değerler saklayıcılara proses belleğe
yüklendiğinde yazılır.
• Sayfalama:
►Belleği küçük, eşit boylu parçalara böl. Prosesleri
de aynı boyda parçalara ayır.
►Eşit boylu proses parçaları: sayfa
►Eşit boylu bellek parçaları: çerçeve
►İşletim sistemi her proses için sayfa tablosu
tutar
-Prosesin her sayfasının hangi çerçevede
olduğu
-Bellek adresi = sayfa numarası ve sayfa içi
ofset adresi
►İşletim sistemi hangi çerçevelerin boş
olduğunu tutar
►Mantıksal adres sayfa numarası ve sayfa içi
kayıklık değerinden oluşur
• Sayfalama:
►Sabit bölmeleme benzeri
►Bölmeler küçük
►Bir prosese ilişkin birden fazla sayfa olabilir
bellekte
►Sayfa ve çerçeve boylarının ikinin kuvvetleri
şeklinde seçilmesi gerekli dönüşüm
hesaplamalarını basitleştirir
►Mantıksal adres sayfa numarası ve sayfa içi
kayıklık değerinden oluşur
Bellek Yöneticisinin Görevleri:
1) Belleğin hangi kısımlarının kullanılıp
hangilerinin kullanılmayacağını izlemek,
2) İşlemlere gerektiğinde bellek ayırmak,
3) İşlem sonlandığında ise işleme ayrılan
bellek bölgesini boşaltmak,
4) Ana bellekte yer kalmadığında
ikincil belleği kullanmak,
5) Ana bellek alanındaki durum
bilgisini tutmak.
• Bellek Yönetim Yöntemleri
1)Tek Programlama Yöntemi,
2)Çoklu Programlama,
1) Tek Programlama Yöntemi:
Tek ve Bitişken Bellek Yönetimi:
Genellikle tek işlemli işletim sistemleri tarafından
kullanılır. İşlem ana bellekte yok ise ikincil
bellekten ana belleğe yüklenir ve işlem bitimine
kadar orada kalır.
Ana belekte çalışma esnasında yalnızca
bir tek işlem/program bulunur.
Ana
Bellek
İŞLETİM SİTEMİ
İŞLEM
BOŞ
2-Çoklu Programlama,
a) Değişmez Bölümlü Bellek
Yönetimi,
b) Değişken Bölümlü Bellek
Yönetimi,
c) Yeri Değiştir Bölümlü Bellek
Yönetimi,
d) Sayfalı Bellek Yönetimi,
e) Kesimli Bellek
Yönetimi,
f) Sayfalı Sanal Bellek
Yönetimi,
g) Kesimli Sanal Bellek
Yönetimi,
h) Kesimli-Sayfalı Sanal Bellek
Yönetimi.
a) Değişmez Bölümlü Bellek Yönetimi:
Bu yöntemde bellek, işletim sistemi alan ve
kullanıcı alanı olarak ikiye bölünür.
• Daha sonra kullanıcı alanı da kendi
içerisinde farklı boyutlarda bölümlere
ayrılır
İşletime alınacak işlem kendine en uygun
büyüklüğe sahip bölüme alınır ve sonlanana
kadar orada kalır.
Bu yerleşme de işlem boyutu ile bölüm boyutu
arasında fark olduğu için boşluklar olumaktadır.
ANA BELLEK
İşletim Sistemi
İşlem 1
1. Bölüm
Boşluk
İşlem 2
2. Bölüm
Boşluk
İşlem 3
3. Bölüm
Boşluk
2) b) Değişken Bölümlü Bellek Yönetimi:
Bir önceki yönteme benzer ama ana bellekteki
bölümler önceden sabit olarak belirlenmez,
işlemler aktifleştiğinde işlemin boyutuna göre
belirlenir
Burada kullanılan alanların ve boş alanların
yerleri ve boyutlar çizelgeler yardım ile takip
edilir.
İşletim Sistemi
İşletim Sistemi
Boş Alan
Görev 1
Görev 1
Görev 2
Boş Alan
Bitiştirme
Görev 3
Görev 2
Boş Alan
Görev 2
Boş Alan
İkincil Bellek Yönetimi :
Bilgisayar sistemi ana belleğin yanında
bilgilerin kalıcı olarak saklanmasına olanak veren
ikinci bir saklama aygıtına sahiptir.
• İlk saklama aygıtları manyetik tape’ler
olmuştur. Manyetik tape’lerden veriyi
okumak için, ilgili verinin olduğu noktaya
kadar tüm kayıtlar teyp sürücü tarafından
okunmalıdır.
• Buna sıralı erişim (sequential access)
denir ve bu durum teyp sürücülerini
oldukça yavaş kılmaktadır.
Sabit disklerde ise direkt erişim (direct access)
denilen metot kullanılır ki, verinin bulunduğu
kısımdan önceki kayıtların okunmasına gerek yoktur
Bu nedenle okuma/yazma hızı manyetik teyp’lere
göre çok daha hızlıdır.
Disk Yapısı
Bilgisayarda kullanılan diskler fiziksel olarak
basit yapıdadırlar. Bilgi, her iki yüzü manyetik bir
materyalle kaplı olan diskler üzerine kaydedilir.
• Yüksek hızlı bir motor diskleri okuma/yazma
kafası önünde döndürür. Okuma/yazma
kafaları da bu diskler üzerinde bir kol
yardımıyla hareket ederek istenilen bilgiye
ulaşılır.
• Disk Yapısı
• Disk Yapısı
• Geleneksel Bellek (Conventional Memory):
DOS’un ana belleğidir (base memory olarak da
bilinir). 0 – 640 KB arası hafıza bölgesidir. MSDOS uygulamaları burada çalışır. Bütün PC’
lerde 640K sınırı söz konusudur.
1024 KB - 4 GB
Uzatılmışbellek alanı
Yüksek bellek alanı
640- 1024 KB
0-640 KB
Üst bellek alanı
Geleneksel bellek
(Temel bellek)
*Temel Bellek
*Hafızanın İlk 640
KB’lık bölümü
*DOS programları
• Üst Bellek ve Genişletilmiş Bellek:
Ayrılmış bellek olarak da bilinen bu alan 640 KB ile 1
MB arasındaki hafıza bölgesidir
Üst bellek blokları halindedir. Takçalıştır elemanların sürücüleri, video sürücüleri
bu alanda tutulur. EMM386.exe dosyası
tarafından yönetilir.
1024 KB - 4 GB
Uzatılmış bellek alanı
Yüksek bellek alanı
640- 1024 KB
Üst bellek alanı
0-640 KB
Geleneksel bellek
(Temel bellek)
*Ayrılmışbellek
*384 KB
*UMB ler halinde
* Sistem BIOS
* Tak-çalıştır
sürücüler
* Video sürücüler
• Uzatılmış Bellek (Extended Memory):
286 veya yukarısı bilgisayarlarda 1Mb’ın
yukarısındaki bellek alanına verilen isimdir.
• Windows gibi özel programlar, DOS’ ta
RAM sürücüler ve SMARTDRIVE
tarafından kullanılır. HIMEM.SYS ile
kullanılabilir hale getirilir.
• Yani programların çalıştırılması için değil
verilerin saklanması için kullanılır.
Uzatılmış bellek
1024 KB alanı
- 4 GB Yüksek bellek
alanı
640Üst bellek alanı
1024 KB
0-640
Geleneksel bellek
KB
(Temel bellek)
*XMS (extended memory
specification)
*1 MB üzeri bellek
*Windows kullanır.
*HIMEM.SYS kontrol
eder.
• Genişletilmiş Bellek (Expanded Memory ):
Genişletilmiş bellek olarak tercüme edilen
expanded memory, 640K’ dan daha fazla belleğe
ihtiyacı olan programların kullanması içindir.
• 8086 veya 80286 bilgisayarlara özel kartlar
yardımı ile eklenmiştir. EMS yazılımları ile
kullanılabilir hale getirilir.
• Genişletilmiş bellek sisteminde eskiden
kullanılmakta olan yığın - aktarma adlı bir
yöntem kullanılmaktadır. Bu belleğin
çalışması3 parçadan oluşur
• . Birincisi, yığın aktarmalı bellek kartıdır ve
gerekli olan ekstra belleği üzerinde taşır. Bu
ekstra bellek 16 Kb’lık parçalara
bölünmüştür.
• İkincisi, genişletilmiş bellek yöneticisi
(Expanded Memory Manager - EMM)
denilen bir yazılımdır.
Üçüncüsü, genişletilmiş belleği kullanacak
uygulama programıdır.
• Yüksek Bellek (High Memory Area-HMA):
HMA, ya da “Yüksek Bellek Alanı”, uzatılmış
belleğin ilk 64K’lık kısmıdır ve DOS tarafından
özel olarak kullanılır. Windows da kullanabilir.
Uzatılmış bellek alanı
1024 KB - 4 GB
Yüksek bellek alanı
640- 1024 KB
0-640 KB
Üst bellek alanı
Geleneksel bellek
(Temel bellek)
*Uzatılmış belleğin ilk 64
KB’lık bölümü
*Windows’un kullandığı
DOS çekirdeği burada çalışır.
Disk Çizelgelemeleri
İkincil bellek üzerinde çok sayıda
okuma/yazma işlemi yapılmaktadır. Bu
nedenle okuma/yazma işlemlerinin çok hızlı
gerçekleştirilmesi gerekir. Disk hızını
belirleyen 3 etken vardır :
1. Sistem öncelikle kafayı uygun iz ya da silindir
üzerine hareket ettirir. Bu harekete ”Arama”,
geçen süreye de ”Arama Süresi” denir.
• 2. Kafa uygun track(iz) üzerindeyken, doğru
sektöre gelene kadar geçen süreye de ”Rotasyon
el Gecikme (Rotational Delay)” denir.
3. Son olarak bilgi diskten okunarak ana belleğe
transfer edilinceye kadar geçen süreye de ”Transfer
Süresi” denir.
Disk Çizelgelemeleri
Bir diskin okuma/yazma isteğine cevap
vermesi bu üç sürenin toplamıyla bulunur. Arama
süresinin kısa olması ve kafanın istenilen bloğa hızlı
ulaşabilmesi için, çeşitli disk çizelgeleme
algoritmaları geliştirilmiştir. Bunlardan bazıları :
1. FIFO (İlk gelen ilk hizmet) disk
çizelgeleme algoritması
2. SCAN disk çizelgeleme algoritması
3. C-SCAN disk çizelgeleme algoritması
4. SSTF (Shortest Seek Time First) disk
çizelgeleme algoritması
1. FIFO (İlk gelen ilk hizmet) Disk
Çizelgeleme Algoritması
En basit disk tarifleme algoritmasıdır. Disk
kuyruğundaki sıraya göre okuma/yazma kafası
hareket ettirilir.
1. FIFO (İlk gelen ilk hizmet) Disk Çizelgeleme
Algoritması
2. SCAN Disk Çizelgeleme Algoritması
(Elevator Algorithm)
Okuma/yazma kafası tek yönde ilerliyor, o
yöndeki isteklere cevap verdikten sonra geri
yönde en yakın isteğe cevap veriyor.
2. SCAN Disk Çizelgeleme Algoritması (Elevator
Algorithm)
3. C-SCAN Disk Çizelgeleme Algoritması
SCAN algoritmasına benzer, fakat disk kolu
sona ulaştığı zaman bir sonraki işlemde en
başa geliyor.
3. C-SCAN Disk Çizelgeleme Algoritması
4. SSTF (En kısa arama zamanlı ilk önce)
Algoritması
Okuma yazma kafası bulunduğu konumdan
(başlama konumu), arama zamanının en düşük
olduğu iz üzerine hareket eder.
4. SSTF (En kısa arama zamanlı ilk önce)
Algoritması
Sanal Bellek
(Virtual Memory):
Sanal Bellek (Virtual Memory):
•
Bilindiği gibi “işlem”, öncelikle belleğe
yüklenir. Ancak işlemin hacmi, belleğin
fiziksel hacminden fazla ise sanal bellek
tekniği kullanılır.
•
Sanal bellek tekniğinde, işlemin tamamı
değil, onun yerine yalnızca o anda
çalıştırılacak bölüm belleğe alınır ve ana
belleğin kapasitesi artırılır.
• Günümüzde genel amaçlı bilgisayarların
işletim sistemleri çoklu ortam uygulamaları,
sözcük işlemcileri, tablolama izlenceleri
gibi sıradan uygulamalar için sanal bellek
yöntemi kullanılmaktadır
• Sanal bellek yönetimi
Tarihçesi;
• Sanal belleğin geliştirilmesinden önceki
dönemlerde (1940 ve 50’ler) büyükçe
izlenceler (program), iki seviyeli saklamayı
gerçekleştirebilmek için üst yazım
(overlaying) yöntemleri gibi mantıksal
çıkarımlara ihtiyaç duymaktaydı.
• Birçok sistem sanal bellek kullanımından
önce de belleğin birden çok izlence arasında
paylaşımını sağlayabilecek yeteneğe sahipti.
• PDP-10 ‘un ilk modellerinde görülen taban ve
sınır yazmaçlarını ( base and bounds
registers) bu duruma örnek olarak
gösterebiliriz.
• Bu yöntem her bir uygulamaya 0’dan başlayan
özel bir adres uzantıyı ve bunun yanında
adresin bellekte uygulama için ayrılan
kısmında olup olmadığını denetleyen bir sınır
yazmacının kullanımını içerir.
• Eğer yazmaç adresin ilgili kısma ait
olduğunu onaylarsa, karşılık gelen taban
yazmacı içeriğini de ana bellekteki adresi
göstermek üzere işleme dâhil eder.
• Bu sanal bellek kullanılmadan bölümlere
ayırmanın (segmentation) basit bir
biçimidir.
• Sanal bellek 1952-1962 yılları arasında
Manchester Üniversitesi’nde Atlas
Bilgisayar için geliştirilmiş ve 1962 yılında
tamamlanmıştır.
• 1961’de Burroughs, sanal belleğe sahip ilk
ticari bilgisayarı olan B5000’i piyasaya
sürdü.
• Anabilgisayarların işletim sistemlerinde
uygulanmasından önce karşılaşılan birçok
sorunla baş etmek için çeşitli modeller,
deneyler ve kuramların geliştirilmesi
gerekti.
• Devingen adres dönüşümleri özelleştirilmiş,
pahalı ve kurulumu zor donanımı ve belleğe
erişimi kısmen yavaşlatması en büyük
sorunlarıydı.
• Ayrıca tüm sistemi kapsayan uygulama ve
algoritmaların ikincil belleği
kullanmasındaki etkinliği düşüreceğine dair
endişeler bulunmaktaydı.
• İlk olarak kullanıldığı işlemci
• Sanal bellek X86 mimarisine Intel’in I286
(80286) işlemcisinin güvenli biçimi
(protected mode) ile tanıtıldı
• . Önceleri bölüm takası (segment swapping)
ile gerçekleştirildi ancak büyük bölümlerde
(segment) sorun yaratıyordu.
• Intel 80386 mevcut bölmelere ayırma
katmanının altında işleyen
sayfalama(paging) yöntemini tanıttı.
• Artık sayfa hatası (page fault) diğer kural
dışı durumlarla (exception) birlikte
değerlendirilebilmekteydi.
• Sanal bellek kullanımının iki temel
gerekçesi vardır:
• Programların konumlandırılması, belleğin
programlar arasında etkin ve güvenli bir
şekilde paylaşılması.
• Sınırlı boyuta sahip ana belleğin
programlama ve kullanım açısından
meydana gelecek güçlükleri aşmak.
Adres Dönüştürme Önbelleği
(ADÖ), diğer sıradan önbellekler gibi
tam ilişkili, kümeli ilişkili ya da
doğrudan eşlemeli olarak tasarlanabilir.
Adres Dönüştürme Önbellekleri
çoğunlukla küçüktür, satır sayısı çok
hızlı bilgisayarlarda bile 128-256’yı
geçmediğinden bu önbelleklerde
karmaşık olan tam ilişkili aramanın
masrafı fazla değildir.
Çoğu orta düzey işlemcide küçük n
yollu kümeli ilişkili düzen kullanılır.
ADÖ kullanan bilgisayarlar önbellek
erişimi için gereken çevrim sayısını azaltmak
için önbellek erişimini ADÖ erişimi ile koşut
olarak (aynı anda, eşzamanlı) yapar.
Bu yöntem ile sanal adreslerin sayfa
numaraları ADÖ’ de arama işlemi için
kullanılırken sayfa eklemesi kısmı
önbellek erişiminde dizin olarak görev
yapar.
Adres Dönüştürme Önbelleği (ADÖ)
sayfa tablosunda gerçek adreslere
eşlenen kayıtları tutan bir önbellek
işlevi görür.
Eş zamanlı erişim ancak önbelleğe dizin
olarak gönderilen bitler sanal adres
dönüştürmesi sırasında değişmezse işe
yarar.
Bu durum küçük önbellekler, büyük sayfa
boyutları ya da yüksek n yollu kümeli
ilişkili önbellekler kullanma gereksinimini
doğurur.
Eşzamanlı Önbellek ve ADÖ Erişimi
En iyi koşullarda bir sanal adres ADÖ
tarafından dönüştürülerek önbelleğe
yollanır ve ilgili veri bulunur, getirilir ve
daha sonra işlemciye geri gönderilir.
• En kötü durumda ise başvuru (reference)
sıradüzendeki bu üç yapıda da; yani ADÖ,
sayfa tablosu ve önbellekte bulunamaz.
DECStation 3100’de kullanılan MIPS
R2000 her ne kadar basit bir
uygulamaya sahip olsa da özyapısı
günümüz adres dönüştürme
belleklerininkine çok benzerdir.
• Bellek sistemi 4-KB sayfalar ve 32-bitlik
adres uzayına sahiptir.
Dolayısıyla, sanal sayfa numaraları 20 bit
uzunluktadır. Sanal adres ile gerçek
adres aynı boyutlara sahiptir.
• Adres dönüştürme önbelleği (ADÖ) 64
kayıt tutabilir ve tam eşlemelidir.
ADÖ buyruk ve veri başvuruları
tarafından paylaşılır. Her kayıt 64 bit
genişliğindedir ve 20 bitlik etikete
sahiptir ki bu etiket kaydın ADÖ’ de
tutulan sanal sayfa numarasıdır.
Sanal sayfa numarasına karşılık gelen
gerçek sayfa numarası da 20 bit
uzunluğundadır ve geçerli bit, kirli bit
gibi sayman bitlerine yer verir.
Bir ADÖ sayma bulamama durumu
meydana geldiğinde, MIPS donanımı
başvurunun sayfa numarasını özel bir
yazmaca kaydeder ve kural dışı durum
(exception) üretir
•
Kural dışı durum işletim sistemini
uyararak sorunun yazılım katmanında
halledilmesini sağlar.
Bulunamayan sayfanın gerçek adresini
bulmak için ADÖ sayfa tablosunu sanal
adres numarası ve yürürlükte olan sayfa
tablosunun başlangıç adresini tutan
yazmaç yardımıyla dizinler.
Bir takım buyruk kümesi ile adres
dönüştürme önbelleği güncellenir.
• İşletim sistemi sayfa tablosundaki eşlenen
gerçek adresleri adres dönüştürme
önbelleğine yerleştirir. Eğer geçersiz bir
gerçek adresle karşılaşılmışsa hata oluşur.
Bir ADÖ’ de sayfa bulamama durumu en
az 10, ortalama olarak da 16 çevrimlik bir
gecikmeye neden olur.
• Donanım değiştirilmek sayfa için bir
önerme dizini tutar ve bu dizinden rasgele
bir kayıt seçilir.
ADÖ’ de koruma (protection) sağlanması
için yazma erişiminin denetimini
sağlayan bir bit mevcuttur.
• Bu özellik, salt okunur sayfaların üzerine
yazmayı engeller böyle bir istekle
karşılaşıldığında da bir hata üretir.
• Bellek Çakışmaları;
• Kalabalık ek donanıma sahip bir sistemde,
bazı donanımların "çalışma adresleri",
kullandığınız işletim sistemi tarafından aynı
atanınca, çakışma dediğimiz olay ortaya
çıkar.
• Genelde bellek çakışmaları olduğu zaman
“bu program cevap vermiyor –this
programis not responding-“ mesajı alırız.
• Sayfalama (Paging);
• Sayfalama (Paging)
• Ana bellek ve işlem sırası ile sayfalara
bölünür. Bir diğer ifade ile eşit bölümlere
bölünürler.
• İşlemlere ilişkin sayfalar, işlemcinin o
esnada ihtiyaç duyduğu işlem sayfası,
sanal bellekten ana bellek sayfalarına
aktarılır. işletim sistemi, gerçek ve sanal
sayfa bilgilerini bir çizelge de tutar
. Çizelgenin her bir eleman , bir
sayfaya ilişkin bilgileri tutar.
İşlem Sayfa Numarası: işlemin sayfasın belirtmek
için kullanılan numaradır.
Değişti Biti: Sayfada bir değişiklik yapılmış ise 1,
yapılmamış ise 0’dr.
Yüklü Biti: Sayfa ana ana bellekte ise 1, sanal
bellekte ise 0 değerini alır.
• Referans Biti: Sayfa daha önce kullanıldı
ise 1, kullanılmadı ise 0 değeri alır.
• Bellek Sayfa Numarası: Eğer sayfa bellekte
ise ana bellekteki adresi içerecek türden
bellekteki sayfa numarasını verir.
Sayfa ofseti (d): Taban adresi ile
birleştirilerek fiziksel bellekte sayfanın
içerisindeki yerin belirlenmesinde kullanılır.
• Sayfa tablosunda hem sayfa hem de ofset adresi
bulunmaktadır.
Sayfalamalı bir sistemde adres dönüşümü
Bölümleme; mantıksal adres alanı
bölümlerden oluşmaktadır. Adres hem
bölüm numarası hem de bölüm içerisindeki
adresi belirten ofset numarasından
meydana gelmektedir (<bölüm numarası,
ofset>).
• Bellek Yönetim Birimi;
Sanal bellek, sayfalama ve sayfa bilgilerinin
tutulmasının yanı sıra ana bellek ile sanal
bellek arasındaki sayfaların değişimi ile de
yükümlüdür.
• Bu değişimler ise bir takım algoritmalara
dayalı olarak yapılmaktadır.
• Bu algoritmalardan bazları aşağıdadır:
1) FIFO (First In First Out-) (ilk ilk: Çıkar)
• Ana belleğe il k giren sayfanin işlemcideki işlem
hacminin azaldığı varsayımı altında;
Ana belleğe yüklenecek bir sayfa
olduğunda öncelikle ana bellekte en uzun
kalan sayfa sanal belleğe, sanal bellekteki
sayfa ise ana belleğe aktarılır.
• 2) LIFO (Last In First Out-Son Giren İlk
Çıkar):
• Sanal bellekteki bir sayfa, işlemci tarafından
ihtiyaç duyulup çağrılıp ana belleğe
yüklendiği için bir sonraki çağrılacak sayfa
ana belleğe yüklenirken en son sayfaya
ilişkin uygulama “eskimi”kabul edilir.
• 3) LFU (Least Frequently Used-En Az
Kullanilan):
• Ana bellekteki en az kullan lan sayfa ile
değiştirme ilkesine dayanır.
4) NRU (Not Recently Used-Son Zamanlarda
Kullanılmayan):
İşleme alınacak ve diskte bulunan sayfalar,
ana bellekte bulunan ve son zamanlarda
kullanılmayan sayfalar ile değiştirilme ilkesiyle
hareket eden bir algoritmadır.
Eğer başvurulan veri o anda ana
bellekte bulunamıyorsa sayfa ana
bellekte mevcut değil demektir ve “sayfa
hatası (page fault)” oluşur.
Sayfa hatası çok yüksek bulamama
gecikmesine neden olur.
Sanal bellek sistemleri tasarlanırken
bu durumun yaratacağı yükü
engellemek için bazı önlemler alınabilir.
• Sayfalar yüksek erişim zamanını
karşılayacak kadar büyük olmalıdır.
• Sayfa hatası denetimi sağlanmalıdır.
• Oluşan hatalar donanım yerine
yazılımla çözülebilir.
Tümüne yazma (write-through) yöntemi
çok masraflı olduğu için geri yazma(writeback) metodu kullanılır.
Sayfa hatası meydana geldiğinde,
yönetim işletim sistemine bırakılır. Bu
devir kural dışı durum (hata) işleyişi
(exception mechanism) ile
gerçekleştirilir.
Yönetim işletim sistemine
geçtiğinde, sayfayı bir sonraki
sıradüzende (genelde teker) bulmalı ve
istenen sayfayı ana bellekte nereye
koyacağına karar vermelidir.
Sanal adres tek başına sayfanın
tekerin neresinde olduğunu belirtmek
için yeterli olmadığından, sanal adres
uzayında bulunan her sayfanın tekerde
izini sürmek gerekir.
İşletim sistemi bu işlem için her sanal
sayfanın tekerde nerede saklandığını
kaydeden veri yapıları yaratır
• Bu veri yapısı sayfa tablosunda veya ayrı bir
tabloda tutulabilir.
İşletim sistemi aynı zamanda her
gerçek sayfanın hangi uygulamalar ve
hangi sanal sayfalar tarafından
kullanıldığını takip etmek üzere ayrı bir
veri yapısı daha oluşturur.
Ana bellekteki tüm sayfalar
kullanımdayken sayfa hatası oluşması
durumunda, işletim sistemi bir sayfayı
değiştirmek(takas yapmak) üzere
seçmelidir.
Sayfa hatalarının en aza indirilmesi
amaçlandığından çoğu işletim sistemi
yakın bir zamanda kullanılmayacağını
varsaydığı bir sayfayı seçer.
• İşletim sistemlerin bu varsayımları geçmiş
durum değerlendirmelerine dayanarak
gelecek durumun tahmin edilmesine
dayanır.
Bu tahminlerde kullanılan
algoritmaların başında en uzun
zamandır kullanılmayanla değiştirme
(least recently used (LRU)) gelir.
İşletim sistemi uzun zamandır
kullanılmayan sayfanın daha yakın bir
zamanda kullanılan sayfadan daha az
gerekli olduğu varsayımı yaparak uzun
zamandır kullanılmayan sayfayı istenen
sayfayla değiştirmek üzere seçer.
En uzun zamandır kullanılmayan
yönteminin kusursuz ve eksiksiz olarak
uygulanması veri yapısının her bellek
başvurusunda güncellenmesini
gerektireceğinden oldukça masraflıdır.
Bunun yerine birçok işletim
sisteminde hangi sayfaların yakın
zamanda kullanılıp hangilerinin
kullanılmadığına dair iz sürülür.
• İşletim sisteminin yükünü hafifletmek için
donanımda başvuru biti (reference/use bit)
tutulabilir.
Bu bit sayfanın her kullanımında
kurulur. İşletim sistemi belirli aralıklarla
bu bitleri temizler ve hangi sayfaların
kullanılıp kullanılmadığı bilgisinin
kaydını tutar.
Bu bilgi ışığında, işletim sistemi bir
sayfa değiştireceği zaman en uzun
zamandır kullanılmayan; yani başvuru
bitleri mantıksal sıfıra eşit olan sayfalar
arasından bir seçim yapar.
• Burada bir konuya değinmekte yarar vardır:
Ana belleğin büyük hacimli olması, işlemin
hepsinin ana belleğe yüklenmesi demek
olacağından, düşük hacimli ana belleğe göre
yüksek hacimli ana bellekte iletim daha
hızlı olacaktır.
• Boş Alan Yönetimi:
Disk üzerinde bulunan dosyal
silindiğinde silinen dosyaların boşalttığı
alanların tekrar kullanılması gerekir.
• İşletim sistemi bu alanların listesini tutar ve
yeni dosya kaydedileceğinde bu kısıma
kaydedilir.
• İşletim sistemlerinde boş kayıt listesi
ile ilgili çeşitli yöntemler ardır.
Bunlar ;
1.
2.
3.
4.
Bit vektör yönetimi
Bağlantılı liste yönetimi
Gruplama yönetimi
Sayma yönetimi
Bit vektör yönetimi;
Bu yöntemde boş alanların listesi bir bit
listesinde tutulur.
Bilgi bulunan yerler” 1” boş alanlar ise”0”
İle gösterilir.
• Bazı işletim sistemlerinde terside olabilir.
• Bağlantılı liste yönetimi
Boş alanların tutulması ile ilgili diğer bir
sistemde bağlantı liste yöntemidir.
• Bu yöntemde boş bir alan kendisinden
sonra gelen boş alanı gösteren bir
işaretleyici “pointer” tutar.
• Gruplama yönetimi
Bu yöntemde birbirini takip eden boş
alanlar gruplanır e grubun ilk elemanının
adresi bir önceki boş alan grubunun son
elemanında tutulur. Grubun ilk elemanı
kendisinden sonraki boş alanları tutar.
• Sayma yönetimi
ikinci bellek üzerinde bulunan ilk
boşluk alanda tüm boş alanların ve bunları
takibindeki boşlukların adres e sayıları
tutulur.
• Yan yana yerleşim metodu;
• Bu metoda dosya disk üzerinde bir birini
takip eden adreslerde bulunur
Yan yana yerleşim metodu;
• Bağlantılı Yerleşim;
• Bu yerleşim biçimin de dosyalar parçalar
halinde dağıtılarak ayrı ayrı bölgelerde
tutulur
• Dizinler bir işaretçinin bulunduğu “pointer”
eklenir.
Bağlantılı Yerleşim;
• İndeksli Yerleşim;
• Her dosya için bir indeks oluşturulur.
Dizinler dosyaların indeks blog adresini
tutar. Böylece her bloğa direkt olarak
ulaşılabilir.
İndeksli Yerleşim;
. Korumalı Modda Bellek Adresleme
Gerçek mod bellek adreslemede uygulamalar yani
programlar sadece 1024 KB lık
hafıza bölümünde çalışabilir.
• Yani bütün uygulamalar geleneksel bellek
ve üst bellek alanında çalışır. DOS işletim
sistemi bu şekilde çalışan bir işletim
sistemidir. Yani gerçek moda çalışır.
• Gerçek mod;
İşlemci, CPU hafızanın 1024 KB lık
bölümünü adresler DOS gibi text tabanlı
işletim sistemleri sadece bu moda çalışırlar.
• Korumalı mod;
• Bu moda her uygulama kendi adresleme
bilgilerini taşır. Böylece bir program bütün
sistem adresleme bilgileri kapatılmadan
sonlandırılabilir.
• Yani bir hafızadaki bir bellek alanı diğer bir
bellek alanını etkilemez. Her program
kendi bellek alanı ile sınırlıdır ve de 1 MB
üzeri bellek alanına ulaşabilir.
Translation Lokalside Bufer;
• 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
TLB kullanımı
• Sayfa boyu küçük 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.
Örnek Sayfa Boyları
 Alma yöntemi
– “Sayfanın belleğe ne zaman alınması
gerektiğini belirler
• – “İsteğe dayalı sayfalama” kullanılıyorsa
ancak sayfaya erişim olduğunda belleğe
getirir sayfa hatası başta daha yüksek
 Alma yöntemi
– “Önceden sayfalama yöntemi
kullanıldığında gerektiğinden daha fazla
sayfa belleğe alınır.
• Diskte birbirini izleyen konumlarda yer alan
sayfaları birlikte belleğe getirmek daha
etkin
Yerleştirme yöntemi
– Hangi sayfanın yerine konacak?
– Bellekten atılacak sayfa yakın zamanda
erişilmesi olasılığı düşük olan bir sayfa
olmalı.
– Çoğu yöntem bir prosesin gelecek
davranışını eski davranışına dayanarak
kestirmeye çalışır.
Çerçeve kilitleme
– Bir çerçeve kilitliyse yerine başkası
yerleştirilemez
– İşletim sistemi çekirdeği
– Kontrol yapıları
– G/Ç tamponları
– Her çerçeveye bir kilit biti atanması
Temel Yerine Koyma Algoritmaları
Optimal yöntem
– Bir sonraki erişimin olacağı zamanın en
uzak olduğu sayfanın seçilmesi
– Gelecek olaylar hakkında kesin bilgi olması
imkansız
• 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. Ek yük getirir.
• LRU ALGORİTMASI;
İlk gelen ilk gider algoritmsı ile optimal
algoritması arasında yer alır. En uzun
kullanılmayan sayfa seçilir ve yeni gelen
buraya kaydedilir.
Bir sanal bellek sisteminde, bir
sonraki sıradüzene tümüne
yazmanın(write-through) yaratacağı
gecikme çok büyük olur.
• Bunu karşılamak bir ara bellekle
sağlanamaz. Bunun yerine, geri yazma
(write-back) yöntemi kullanılır.
Bellekte sadece bir sayfa yenisiyle
değiştirildiğinde sadece o sayfa kopyalanır.
• Burada kullanılan teknik bir alt seviyedeki
sıradüzene yazma tekniğine geri
kopyalama(copy back) benzerdir.
İkincil bellekten (teker) aktarma
zamanı, ikincil belleğe ulaşım zamanına
göre çok daha kısa olduğundan
kopyalamanın tek bir öbek yerine tüm
bir sayfa için yapılması daha etkin bir
çözüm oluşturmaktadır.
Geri yazma yöntemi bu konu göz
önünde bulundurularak tasarlanmalıdır.
• Değiştirmek üzere seçilen sayfanın geri
kopyalanması gerekip gerekmediği
denetlenerek yazmanın bu bilgiye göre
yapılması verimliliği daha da arttıracaktır.
Bir sayfanın bellekte okunduktan sonra
değiştirilip değiştirilmediğinin izi sayfa
tablosuna eklenen bir bit sayesinde
sürülebilir. Bu bite kirli bit (dirty bit) adı
verilir.
Sayfa ilk yazıldığında bu bit kurulur.
İşletim sistemi sayfayı değiştirmek üzere
seçtiğinde kirli bit sayfanın yerine yenisi
getirilmeden önce yazılması gerekip
gerekmediğini gösterir.
LINUX’’ta Bellek Yöntemi
Görüntü Bellek Adresleme
– 3 seviyeli sayfa tablosu yapısı şu tablolardan
oluşur:(her tablo bir sayfa boyunda)
1- sayfa kataloğu
2- orta aşama sayfa kataloğu
3-sayfa tablosu
1- sayfa kataloğu
– her aktif prosesin bir sayfa kataloğu var.
– boyu bir sayfa
– her kayıt orta aşama sayfa kataloğunun bir
sayfasına işaret
– her aktif proses için bellekte yer almalı
2- orta aşama sayfa kataloğu
– birden fazla sayfadan oluşabilir
– her kayıt sayfa tablosunda bir sayfaya işaret
eder
3-sayfa tablosu
– birden faz-la sayfadan oluşabilir
– her kayıt prosesin bir sanal sayfasına işaret
eder
– görüntü adres 4 alandan oluşur
1. en yüksek anlamlı alan sayfa katalogundaki
bir kayda indis
2. alan orta aşama sayfa kataloğundaki bir
kayda indis
• 3 . alan sayfa tablosundaki bir kayda indis
• 4 . alan seçilen sayfadaki offset adresi
Platformdan bağımsız olarak 64 bitlik adresler
Sayfa atama
– buddy sistemi kullanılır
• Sayfa yerine koyma
– 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
Download