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.

Yorumlar

  1. Volkan

    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.

  2. yücel gemici

    turkce kaynak konusunda beli konularda buyuk eksiklik var..
    bu acidan faydali bir dokuman olmus elinize saglik sadi bey..

    @ygemici

  3. Nuri Yılmaz

    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

  4. viensdans

    birinci resimle ikinci resime baktigimda ordaki düzene göre 2. islemin limiti 100 olmali gibi. 75 neden olmus anlayamadim.

  5. Şadi Evren ŞEKER Article Author

    evet haklısınız, ikinci resimde 100 olmalı. Hatayı düzelttim.

    Teşekkürler

  6. viensdans

    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.

  7. Şadi Evren ŞEKER Article Author

    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

  8. hilal

    Ö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...

  9. Şadi Evren ŞEKER Article Author

    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

  10. Şadi Evren ŞEKER Article Author

    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

  11. Orhan YILMAZ

    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

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir


üç × = 9