[linux-ileri] Re: Memory Allocation

---------

From: Bora Şahin (borasahin@netone.com.tr)
Date: Sun 04 Jan 2004 - 07:30:10 EST

  • Next message: Bayram Tamer GUNES: "[linux-ileri] Re: Kernel 2.6.0 OK --- Son Sorunlar..."

    SLmLar Emre,

    Friday, January 2, 2004, 5:45:08 PM, you wrote:

    EB> Selamlar
    EB> Memory allocation ile ilgili biraz ayrıntılı bir
    EB> acıklama yapabilirmisiniz orneğin page in ,page out
    EB> page fault gibi olaylar nasıl olusur ? linux virtual
    EB> memory management ını nasıl yapar ne zaman paging
    EB> space kullanılır gibi veya bu konuda bir kaynak
    EB> onerirmisiniz

    Çekirdek kaynak kodları :-)

    "http://www.advancedlinuxprogramming.com/"
    Bu adreste sizin ilgilendiğiniz konulardan bahsetmez. "Device Driver" kitabını bulursanız daha ayrıntlı
    bilgi edinebilirsiniz.

    "Türkçe kaynak isterseniz:
    http://belgeler.org/glibc/glibc-Memory.html"
    Yukarıdaki kaynağa bakmadım ama sizin ilgilendiğiniz konuyla ilgili olduğunu zannetmiyorum.

    Kısaca bildiğim kadarıyla bahsedeyim.

    Page in, page out swapping ile ilgili diye biliyorum. "Linux" listesi arşivlerinden Murat KOÇ'un
    "kısa-çaplı" seminerini bulabilirsin. Büyük ihtimalle page-out sayfanın diske atılması,
    page-in ise tersi olsa gerek. Haa, bunun nasıl yapıldığını, hangi kriterlere göre yapıldığını bulmak
    senin görevin :-)

    Mesela diyelim bir page frame diske atıldı, bu durumda bu pf'ye ulaşılmak istendiğinde, pf bellekte
    olmayacak dolayısıyla da page fault olacaktır, page fault handler'da da bunun sebebi araştırılacak
    ve ilgili sayfa diskten belleğe çekilecektir ya da bir kullanıcı-prosesi diyelim malloc()'la bellek
    isteminde bulunduğunda, ona fiziksel bellekte yer ayrılmasından ziyade doğrusal(linear) bir aralık
    verilir fakat daha sonra bu kullanıcı prosesi bu alana bir şeyler yazmak istediğinde sayfa belekte
    olmadığından page fault olur ve page fault handler'da da sebebi bulunarak gerekli tahsisat yapılır
    gibi... Bunlar sadece örnek, başka sebeplerde var.

    Bütün proseslerin adres alanlarını her biri için farklı, paging database diyelim, kullanarak
    ayırmak suretiyle yapılır. IA-32 için konuşursak, kabaca bütün proseslerin PGDIR ve PTE'leri
    birbirlerinden farklıdır.

    Size eğer İngilizceniz varsa(Yoksa sadece sizin için en yukarıdaki kaynaktan başka kaynak yok) Mel
    Gorman'ın "Understanding The Linux VMM" ve "Code Commentary On The Linux VMM" kitaplarını önerebilirim.
    Birde benim yazdığım ufak bir yazı vardı, "Linux'da Bellek Yönetim Başlngıcı", ileriseviye.org'de
    bulabilirsin. Gerçi senin tam olarak istediğin tarzda bir yazı değil ama yine de belki faydalı
    olabilir. Alt kısmındaki referanslar bölümünde daha fazla kaynak bulabilirsin. Ama bana yukarıdaki
    yorumlarınızdan bazı temel kavramların sanki anlamlarını tam olarak bilmiyormuşsunuz gibime geldi ya
    da ben yanlış anladım. Mesela ne zaman "paging space" kullanır gibi. Bence önce Kaan Aslan'ın "Intel
    İşlemcileri İçin Korumalı Mod Yazılım Mimarisi" kitabını alıp donanım olarak konuya vakıf olsanız
    daha iyi olur gibime geliyor. Gerçi Intel'in sitesindende IA-32 kitaplarını bulabilirisin. Yabancı
    kaynaklarda karıştırmıştım ama Aslan'ın anlatım tarzı, konuya hakimliği ve kitabın kompakt tarzı
    artıları. Şu anda piyasada bu kitap var mı o da ayrı bir mevzu! Eğer yoksa C&SProg. derneğinde sanırım
    bulursun.

    -- 
    Bora Şahin
    borasahin.port5.com
    

  • Next message: Bayram Tamer GUNES: "[linux-ileri] Re: Kernel 2.6.0 OK --- Son Sorunlar..."

    ---------

    Bu arsiv hypermail 2.1.6 tarafindan uretilmistir.