Kıtalamak (Bölütlemek, Segmentation)

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.

Bu yazıyı beğendiyseniz, başkalarının da ilgisini çekebilirsiniz:


284 views

10 responses to “Kıtalamak (Bölütlemek, Segmentation)”
  1. Volkan says:

    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. Şadi Evren ŞEKER says:

    düzelttim teşekkürler

  3. yücel gemici says:

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

    @ygemici

  4. Nuri Yılmaz says:

    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

  5. viensdans says:

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

  6. Şadi Evren ŞEKER says:

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

    Teşekkürler

  7. viensdans says:

    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.

  8. Şadi Evren ŞEKER says:

    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

  9. hilal says:

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

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

Leave a Reply


6 - üç =

Benzer Yazılar:

Bilgisayar Kavramları üzerinde şu anda okumakta olduğunuz 'Kıtalamak (Bölütlemek, Segmentation)' isimli yazı 03 Dec 2008 tarihinde, saat: 13:24 'de Şadi Evren ŞEKER tarafından gönderilmiş, toplam284 defa okunmuştur.

Benzer yazıları Bilgisayar Kavramları, işletim sistemleri kategorilerinden okuyabilirsiniz. Yazar ile irtibat kurmak için email gönderebilirsiniz. Yazıya yorum yapabilir ya da yapılan yorumları RSS 2.0 ile takibe alabilirsiniz.


Category: Bilgisayar Kavramları, işletim sistemleri