Yazan : Şadi Evren ŞEKER
İşletim sistemlerinin temel görevlerinden birisi olan hafıza yönetimi (memory management) için kullandıkları çözüm yöntemlerinden birisidir. Bilindiği üzere bir işletim sistemi birden fazla işlem (multi process) çalıştırıyorsa bu durumda işletim sisteminin hafızayı bu işlemler arasında ihtiyaçlarına uygun bir şekilde dağıtması gerekir.
Bu dağıtımda bir işleme tam olarak ihtiyacı olduğu kadar yer ayırma yaklaşımına kıtalama (bölütlemek , segmantasyon , segmentation) ismi verilir.
yaklaşım basitçe aşağıdaki şekilde gösterildiği gibidir:
Yukarıda, hafızada (RAM) çalışmakta olan 3 ayrı işlem ve bu işlemlerin hafıza adresleri görülmektedir. Dolayısıyla bir işlemin fiziksel adresi kendi içerisindeki matıksal adresten farklı olmaktadır.
Yani her işlem kendi adresleme sistemini kullanır ve hafızada nerede çalıştığından habersizdir. 1. İşlem için 50 numaralı adres, 2. işlem için 50 numaralı adres ve 3. işlem için 50 numaralı adres hep kendi 50 numaralı adresleridir. Basit bir hesaplama ile bu adresler 1. işlem için 150, 2. işlem için 450 ve 3. işlem için 550 numaralı gerçek adreslerken, işlemler bundan habersiz olarak kendi 50 numaralı adreslerine erişmeye çalışırlar.
İşlemlerin talep ettiği adresler (demanding addresses) kendi adresleridir ve bu adreslere mantıksal adres (logical addresses) ismi verilir. Gerçekte bilginin bulunduğu adresler ise fiziksel adreslerdir (physical addresses). Bu iki bilgi arasında dönüşüm aşağıdaki formülle yapılabilir:
fiziksel adres = kıtanın başlangıcı + mantıksal adres
mantıksal adres = fiziksel adres – kıtanın başlangıcı
Yukarıdaki bu formüllere göre iki adres arasındaki dönüşüm kıtanın (segment) hafızadaki adesi kadardır. Bu adresler kıta tablosu (segment table) ismi verilen bir tabloda aşağıdaki şekilde tutulur:
Yukarıdaki sistemde 3 kıta (segment) olan bir sistem söz konusudur. Burada kıta numaraları verilmemiştir bunun sebebi yukarıdaki sıra ile birer kıta numarası olmasıdır. Örneğin 2 numaralı segment 300 limit ve 500 başlangıç değerine sahiptir.
Bu tabloda yer alan başlangıç değeri kıtamızın hafızaya yüklendiği adres olurken limit değeri de hafızada ne kadar yer kapladığını göstermektedir.
Limit değerinin tutulmasının sebebi bir işlemin başka işlemlerin adreslerine erişmesini engellemektir. Dolayısıyla her erişim aşağıdaki kontrolden geçer:
başlangıç + mantıksal adres < başlangıç + limit
şayet bu sorunun cevabı hayır ise bu durumda ilgili kıtanın (segment) dışında bir alana erişilmeye çalışılıyor demektir ve hata verilir.
kıtalama işlemi sırasında adresleme kıta numarası ve mantıksal adres ikilisinden oluşmaktadır.
(s,d) ikilisi (segment, offset) (kıta, mantıksal adres) ikilisi anlamındadır.
Örneğin yukarıdaki kıta tablosunda (1,40) gerçek adres olarak (Fiziksel adres, physical address) 440 olmaktayken (1,120) bir hatadır.
Yukarıda bir yazıda “Yukada” yazmışsınız. Lafazanlık olsun diye değil, google bazında yazının kalitesi düşmesin diye belirtmek istedim. Teşekkürler.
düzelttim teşekkürler
turkce kaynak konusunda beli konularda buyuk eksiklik var..
bu acidan faydali bir dokuman olmus elinize saglik sadi bey..
@ygemici
Her ne kadar Türkçe kaynak konusunda büyük eksiklik olduğunu söylerken Türkçe karakterleri kullanmayıp açıdan yazmak yerine acidan yazdığımız sürece Türkçe kaynağın Türkçe kaynak olmayacağının bilinmesi iyi olacaktır.
http://www.adversitement.nl
birinci resimle ikinci resime baktigimda ordaki düzene göre 2. islemin limiti 100 olmali gibi. 75 neden olmus anlayamadim.
evet haklısınız, ikinci resimde 100 olmalı. Hatayı düzelttim.
Teşekkürler
sayfalama paging sayfasinda
7. çerçeve 600. adresten başlamaktadır bu durumda fiziksel adres:
600 + 27 = 627
yani kitanin baslangici+offset= fiziksel adres ise
bu sayfadaki
fiziksel adres = kıtanın başlangıcı + mantıksal adres
formulu yanlis mi, yoksa mantiksal adres ile offset ayni anlama mi geliyor.
evet mantıksal adres (logical address) ve offset ile anlatılan şeyler aynıdır. Bu terim, işlemin (process) içerisinde kendi address uzayındaki (own address space) erişilen adrestir. Buna mantıksal adres ismi verilir.
Örneğin işlem (process) kendi 70. adresine erişmek istiyor. İşlem, bu erişim sırasında RAM’in neresine yerleştiğini ve fiziksel adresi bilmiyor. Sadece kendi adreslerinden haberdar. İşletim sistemi, kıtalama veya sayfalama algoritmasına göre, bu mantıksal adresi, gerçek RAM’deki fiziksel adrese dönüştürerek hafızaya erişiyor.
Kıtalama işlemi sırasında erişilen bu mantıksal adres doğrudan işleme alınırken, sayfalama işleminde özel bir hesaplamadan daha geçer. Sayfalama işleminde, örneğin sayfa boyutu 200 iken, mantıksal adres 572’ye erişim için öncelikle mantıksal adresin erişilmek istenen hangi sayfa olduğunu bulmak gerekir. her sayfa 200 bilgi aldığına göre, bizim erişmek istediğimiz 572, 3. sayfadadır (1den saymaya başlarsak ilk sayfa 0-200, ikinci sayfa 200-400 ve 3. sayfa 400-600 arası sayfaları alacaktır. 572 bu durumda 3. sayfadadır.)
İştu bu işlem sırasında sayfa numarası bulunduktan sonra bu sayfadaki kaçıncı adres bulunması ayrıca bir işlem gerektirir. Örneğimizde 572 % 200 = 172 ile bulunan bu değer de offset olur.
Kısaca, mantıksal adres kıtalamada doğrudan kullanılır. Sayfalamada ise önce mantıksal adresin hangi sayfada olduğu bulunur sonra bu sayfadaki offset bulunarak erişim gerçekleşir.
Başarılar
Örneğin yukarıdaki kıta tablosunda (1,40) gerçek adres olarak (Fiziksel adres, physical address) 440 olmaktayken (1,120) bir hatadır.
burada 100 baslangıc 40 logical adress toplarsam 140 eder
100 baslangıc 300 lımıt toplarsam 400 eder
140 ın 400 den kucuk olması bana sorun yaratmaz ama 440 ı nasıl buldugunuzu anlamadım
acıklarsanız memnun olurum
ve sayfa ıcın sonsuz tesekkurler…
Aslında bu yorum faydalı oldu, yazıda açıkça belirtilmeyen bir durum bulunuyor. yazıda segment numaraları 0’dan başlamıştır ancak sizin yorumunuzdan anladığım kadarıyla siz ilk segmente 1 diyorsunuz. Yazıdan alıntıladığınız cümle doğru. 1 numaralı segment 400’den başlayıp 100 limitindedir (yani 400-500 aralığı) bu durumda 1. segment’in 40. offset’i, fiziksel olarak 440’a karşılık gelir.
başarılar
http://disi.unitn.it/~ilya/Download/os_course/memory_management_lab.pdf hocam şurda 23.sayfadaki örneği açıklamanız mümkün mü?c ve e şıkları neden illlegal referans anlamadım.
Soruyu buraya alıntılayarak çözüyorum:
Soruda verilen segmentation (kıtalama) tablosuna bağlı olarak 5 farklı durumdaki erişimlerin fiziksel karşılıkları sorulmuş.
a şıkkında 0. segmentin 430. adresine erişilmek istenmiş. Bu durumda 0. segmentin başlangıç adresine bakıyoruz (base) ve 219 değerini buluyoruz. Ayrıca boyutuna baktığımızda (length) 600 görüyoruz bu durumda 430 erişimi mümkün bir adrestir ( 430 < 600 ) ve fiziksel karşılığı 219 + 430 = 649 olarak bulunur. Yani kritik nokta hafızada bu bölütün (segment) nereden başlayarak yerleştiğini bulmak. Yerleştiği adres 219'dan başlıyorsa mantıksal olarak (logical address) 0 , fiziksel olarak 219 karşılığında demektir. Mantıksal olarak 430 'da fiziksel olarak 219 + 430 = 649 olarak bulunur. b şıkkında 1. segmentin 10. adresi sorulmuş, benzer mantıkla tablodaki 1. segmentin 2300'den başladığı okunursa 2300 + 10 = 2310 olarak bulunur. c şıkkında ise bir poblem var çünkü 2. segmentin 500. adresine erişilmek istenmiş oysa 2. segmentin boyu 100 (length) ve dolayısıyla 500 < 100 olmadığı için hata verilir d şıkkında 3. segmentin 400. adresini bulmak için 1327 + 400 işlemi yapılır ve 1727 bulunur. e şıkkında ise 4. segmentin boyutu 96 olduğu ve erişilmek istenen adres 112 olduğu için hata verilir. Başarılar
Merhaba Hocam,
Bir yüksek lisans öğrencisi olarak yazılarınızdan ve youtube videolarınızdan inanılmaz şekilde istifade ediyorum. Türkçe kaynağın az olduğu ortamda sizin dersleriniz bize kocaman bir ışık tutuyor. Sizin verdiğiniz dersler sayesinde işletim sistemleri tasarımı ve bilg. müh. özel konular dersinden iyi notlar aldım. Bu yüzden teşekkürü size borç bilir ve çok çok teşekkür ederim.
Saygılarımla,
Orhan YILMAZ