Boxing Ve Unboxing

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    guru
    guru's avatar
    Kayıt Tarihi: 30/Mart/2007
    Erkek

    Konuya derinden girip, yuzeye cikmayi amacliyorum. Anlattigim konunun rahat anlasilmasi acisindan sayfalama ve sanal bellek ozelligini goz ardi edicem.

    Boxing islemi, stack bellekteki verinin heap alanina tasinmasidir. unboxing ise bunun tam tersidir.

    Stack neresi, heap neresi ? genelde .net uzerinde calisan programcilar, bu ve bunun gibi asagi seviyeli bilgileri bilmezler. Bunu anlatmayi dusunuyorum.

    Bir program calistirilmadan once harddiskte ardisil bir takim sektorler isgal eden veridir. Bu veri bir duzen icinde tutulur. Bir baslik kismi, kod kismi, veri kismi ve yigin kismi..(MZ\PE header, CODE, DATA, STACK)

    Program calistirildiginda ise ismi artik islemdir(process, task). ve bir butun olarak ram'e yuklenir. [MZ baslik formatinda, baslik kismi atilir.PE 'de ise baslik kismiyla birlikte yuklenir.]

    Kod kisminda; program icin yazdigimiz calistirilabilir komutlar bulunur.

    Veri kisminda; programimizda kullandigimiz degiskenler tutulur.[global, static yerel, string veriler]

    Stack kisminda ise yerel degiskenler, parametre degiskenleri tutulur(olusturulur ve silinir).Stack bolgesinin uzunlugu(buyuklugu) baslik kisminda yazan deger ile belirlenir.

     

    ornegin

    void Fonk()

    {

    int a;

    object obj;

    a = 5;

    obj = (object) a; // boxing

    a = (int) obj; //unboxing

    }

    a degiskeni, stack bolgesinde yaratilmistir. obj nesnesinin, gostericisi stack bolgesinde yaratilmistir. Fakat kendisi [yani icerisinde barindiricagi veri] heap bolgesinde yaratilmistir.Heap bolgesi, isletim sisteminin sagladigi bi bolgedir. Heap bolgesine bir veri yuklemek istersek, verinin adresi ancak calisma zamani belli olur.

    Peki hangi sekilde veriye ulasmak daha hizlidir ?

    Elbette ki stack kismindaki veriye ulasmak daha hizlidir. Cunku heap bolgesindeki veriye ulasmak icin gosterici kullanilir.;)

    aklima gelmisken, koleksiyonlardaki 'generic' konusu bu hiz farki yuzunden dusunulmustur. Yoksa zaten her turden veriyi icinde barindiran object tipte nesneler kullanilabilinir(ki kullanilmistir da). Fakat generic'lerle her tur icin ayri bir veri yapisi derleyici tarafindan hazirlanir. Bu sekilde hiz farki ortadan kalkmis olur.


    ..
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SharpShooter
    SharpShooter's avatar
    Banlanmış Üye
    Kayıt Tarihi: 10/Temmuz/2008
    Erkek

    ellerine sağlık , güzel olmuş

    ama referans ve value tiplerden de bahsetsen döküman tamamlanacakmış.


    - xx yerde hata var. - ya aslında kod şöyle sanıyor olabilir bla bla bla - olm kendine gel kodlar düşünmez - ...
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    guru
    guru's avatar
    Kayıt Tarihi: 30/Mart/2007
    Erkek

    evet o konudan da bahsetsek guzel olurdu :) Ama cevremdeki bircok insan boxing olayini tur donusturme olayiyla karistiriyo. Bu yuzden bu konuya deginmek istedim.


    ..
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    renegadealien
    renegadealien's avatar
    Üstün Hizmet Madalyası Savaş Madalyası Başarı Madalyası Üstün Hizmet Madalyası Developer Madalyası
    Kayıt Tarihi: 23/Mart/2003
    Erkek

    Veriyapılarının temellerinden 

    güzel yazı olmuş hocam :)


    Sanıyorum kendi atasözümü yaptım, kaynak belirterek kullanabilirsiniz. 10.05.2013 tarihli google arama sonucu : Aradığınız - "herşeyin hayırlısı rampanın bayırlısı" - ile ilgili hiçbir arama sonucu mevcut değil. Not : Söyleyeni belli olduğu için(Ben) atasözü değil, özlüsöz oluyormuş, dolayısı ile kendi özlüsözümü yapmış oldum :)
Toplam Hit: 2318 Toplam Mesaj: 4