32 bit Windows'unuzun 4 GB bellekten fazlasını kullanamamasının yanında, 4 GB belleğiniz olsa bile bunun da tamamını kullanamadığını görmüşsünüzdür. Bunun nedeninden kısaca bahsetmiştik, şimdi biraz daha ayrıntıyı, yine mümkün olduğunca basitleştirerek anlatıyoruz.

Bunun nedeni bellek eşlemeli giriş/çıkış (memory mapped input/output, MMIO ya da MMI/O) adı verilen erişim yöntemi. İşlemcilerde giriş/çıkış birimlerine erişimin yöntemlerinden biri, bunların belleğe, daha doğrusu bellek adreslerine "eşlenmesidir".  Bellek eşlemeli giriş/çıkışta, işlemci giriş/çıkış birimlerine normal bellek adresleri gibi davranır. Çıkışa göndereceği veriyi, önceden tanımlanmış bir bellek adresine yazar ve geri kalanını ilgili diğer devreler halleder; bu veri belleğe değil, çıkış birimine gider.

32 bit Windows 4 GB belleğin tamamını niye göremez?  mmio01

Şu bizim daha önce de verdiğimiz 99'a kadar adresleyebilen "varsayımsal bellek" örneğimize geri dönelim. :) Eğer sisteminiz yukarıdaki gibi bir adresleme yapıyor olsaydı, örneğin son üç bellek hücresinin adresini görüntü çıkışına ayırmış olacaktı. 0, 1, 2, 3, 4… 95, 96 numaralı bellek adreslerini eğer oralarda fiziksel açıdan varsa gerçekten RAM'iniz için kullanabiliyor olmakla birlikte, 97, 98 ve 99 numaralı adreslerin tanımladığı yere yazdığınız bilgi görüntü birimine gidiyor.

32 bit Windows 4 GB belleğin tamamını niye göremez?  mmio4

Adresleyebildiğiniz tüm alanı bellekle doldurduğunuzu varsayın şimdi. Yani 0'dan 99'a kadar bütün numaraları dolduracak kadar, bir başka deyişle 100 "kutu" bellek koyduğunuzu. 96 numaralı bellek kutusuna kadar, ilgili bellek kutularına numara denkgeldiği için erişebileceksiniz. Ancak 97, 98 ve 99 numaralar görüntü birimine ait. Dolayısıyla bu numaraların karşılık geldiği kutuda fiziksel olarak bir bellek depolama alanı olsa bile bu alanları doldurup, bunlardan veri okuyamayacaksınız. Onlar için kullanabileceğiniz numaralar başka bir yere işaret ediyor çünkü.

Bellek eşlemeli giriş çıkış için kullanılan bellek alanı fiziksel belleğe bağlı değildir. Bilgisayarınıza 2 GB bellek takmışsanız, sisteminiz örneğin 3.5 GB ile 4 GB arasındaki noktalara işaret edecek bellek adreslerini giriş/çıkış birimleriyle iletişim için kullanır. Tabii ki aslında 3.5-4 GB arasındaki bu bellek adreslerinde fiziksel birer bellek "hücresi" yoktur. Sadece o bölgedeki bellek adresleri giriş/çıkış birimleriyle kullanmak için ayrılmıştır. Böylece karmaşıklıktan kaçınmış oluruz; işlemcide giriş/çıkış birimleri için ekstra devre kullanmak gerekmez.

Peki, 3.5 ile 4 GB arasındaki bellek adreslerini giriş/çıkış birimleriyle iletişim için kullanıyoruz. Daha önce 32 bit işletim sisteminde 4 GB üzerinde bellek adresleyemediğimizi, yani elimizdeki bellek adresi sayısının ancak 4 GB için yeterli olduğunu konuşmuştuk. O zaman 4 GB bellek taktığımızda, 32 bit işletim sisteminde hepsini neden kullanamadığımız sorusunun yanıtı kendiliğinden gelmeli: Çünkü zaten adreslerin bir kısmı giriş/çıkış birimleri için kullanılıyor. Yani bu verdiğimiz örnekte 3.5 GB ile 4 GB arasında kalan bellek adresleri, oraları dolduracak kadar fiziksel bellek olsa bile fiziksel bellekteki bir yere denkgelmiyor.

Son örneğimiz de gerçek hayat senaryosundan gelsin. Asgari koşullar altında, bellek eşlemeli giriş/çıkış gerektiren aygıtların gerektirdiği kadar bellek adresiniz bunlarla kullanılır. 512 MB bellekli bir ekran kartınız varsa, işletim sistemi kullanabileceği bellek adreslerinden 512 MB'lık kısmını bu iş için ayırır ve sırf 512 MB ekran kartınız olduğu için, taktığınız 4 GB fiziksel belleğin 512 MB'lık kısmını kullanamaz duruma düşersiniz. Bu iş ekran kartının belleğiyle sınırlı değil tabii, bellek adreslemesinin yapılmasını gerektiren başka bileşenler de var.

Windows Vista'nın 32 bitlik bir sürümünü kullanıyorsanız bellek miktarınız en fazla 3.12 GB olacak şekilde kısıtlanmıştır. Microsoft bunu sürücü uyumsuzluğu olasılığına karşı yapıyor; yani "ola ki 3.12 GB ile 4 GB bellek arasını tanımlayan bu adresler giriç/çıkışa lazım olur, biz peşin peşin ayıralım orasını" diyorlar (iyice özetlenmiş hali bu :) ). Vista SP1'le birlikte sistem özelliklerinde gördüğünüz sistem belleği miktarı taktığınız kadar gözükse de gerçekte kullanılabilen kısmı 3.12 GB.

Bellek "kaybı"nın gerçekleştiği tek durum bu değil. 8 GB bellek adresleyebilen bellek kontrolcülü bir yonga setine de bu sefer 8 GB bellek taktığınızda, üst uçtan bir miktarı kırpılıyor. Yani 8 GB değil, örneğin 7.5 GB görüyorsunuz.

Pratikte bu durumdan kurtulmanın yolu yine 64 bit işletim sistemi kurmak. Böylece işletim sisteminin adresleme için kullanabileceği bol miktarda, hatta biz ölümlü masaüstü kullanıcılarının hayatı boyunca kullanmayacağı kadar adres numarası oluyor. Bu adres numaralarından örneğin 0'dan 4 GB'a kadar adresleyebileceği kesimini fiziksel belleğinizi okuyup yazmakta kullanırken, giriş/çıkış birimleri için belleğe gerekmeyen diğer adres numaralarını kullanıyor.

"32 bit Windows 4 GB belleğin tamamını niye göremez?" ile ilgili kullanıcı mesajları

  1. Pardus'lu günlere

    "örneğin ilk 4 ya da 6 GB'lık bölümünü gerçek, fiziksel belleğinizi adreslemekte kullanırken, fiziksel bellek için kullanması gerekmeyen adres numaralarını giriş/çıkış için kullanmaya devam ediyor ve siz de taktığınız belleğin tamamını kullanabiliyorsunuz" bu açıklamayı şekilli yaparsanız daha anlaşılır olacak gibi böyle birşey anlayamadım. Saygılar.

  2. RayTracer

    "ola ki 3.12 GB ile 4 GB bellek arasını tanımlayan bu adresler giriç/çıkışa lazım olur, biz peşin peşin ayıralım orasını" diyorlar"

    Bu cümleyle bütün olay anlatılmış :)

    Teşekkürler Emirhan

  3. UstaMeeN

    Peki 32bit server işletim sistemleri nasıl 4gb ve üzeri bellekleri görebiliyor? sonuçta bu server işletim sistemleri xp/vista gibi masa üstü işletim sistemlerinden türetilmiyorlar mı?

  4. @Pardus'lu günlere: Elimden geldiği kadar açıklayıcı şekilde tekrar yazdım. Umarım olmuştur.
    @Ray: Ne bileyim, o geldi aklıma. :)
    @UstaMeeN: Tam olarak birinin diğerinden türetilmesi şart değil. Türese bile 4 GB üzerinde bellek kullanmasını sağlayan işlev açılıp kapatılabiliyor işletim sistemi çekirdeğinde.

  5. 35.5

    @ustameen konuyla ilgili bunu buldum.ingilizce bilen arkadaşlar,bir bakıversinler.eğer gerçekten işe yarıyorsa microsoftun herkese 64 bit sistem satma planlarını bozabilir. :)
    http://www.isaytech.com/2008/06/how-to-use-more-then-4gb-of-ram-with.html

  6. kimimben

    http://www.pclabs.com.tr/2009/04/06/32-bit-sistemde-4-gb-ramden-fazlasi-niye-kullanilmaz/

    Görmek dert değil işletim sistemi 32 bit ve uygulamalar 32 bit derlenmiş olduğu için adreslemelerin hepsi 32 bit ve uygulama başına 2GB üstü hayal :)
    32 bit sistemlerdede 4 GB üstüne çıkılabiliyor ama donanımın desteklemesi gerekir.Kaldıki bu tip 32 bit donanımlar sunucu olarak satılıyor(du) :)

  7. ibrahim

    öncelikle kdv'nin ram vb. ürünlerde %8 e düştüğü şu günlerde ram almak isteyenler adına anlatım için teşekkürler.
    ramlerini 4 gb yükseltmek isteyenler 64 bit işetim sisteminimi kurmalılar yoksa 32 bitde devammı etmeliler? Eğer 64 bit işletim sistemi kurmalılarsa kullanılan programlar, uygulamalar vs. 32 bit olduğu için bir sorun çıkartır mı performans kaybı yaratır mı?

  8. Arslan

    RAMlarla ilgili hazırladığınız 3 konuyuda okudum gerçekten çok güzel olmuş Pclabs ekibine ve Emirhan Döngele çok teşekkür ederim ellerinize sağılık.

  9. hakan

    keskın sırke kupune zarar derler edebıyatta deyım herhalde :) fazla bellekte ısletım sıstemıne zarar bellek yonetımı en ıyı her zaman en guzel az bellekte olur ısletım sıstemı sanal bellek yaratabılıyor hdd mesela normal bellek gıbı bırcok yontem var :D neysekı anakart uretıcılerı bu careyı bırsekılde cozuyor bıostan menulerden bır ıkı yerın ayarını degıstırdıgınızde ısletım sıstemınde 4gb olarak goruyor fazla dusunmemek lazım ;)

  10. Ahmet Ozan

    kaynak belirtmek bir şey eksiltir mi pclabsdan?

    mesela şu kaynak bence çok ciddi anlamda yardımcı olmuş arkadaşa. türkçesine de vardır belki microsoft'da.

    http://support.microsoft.com/kb/929605

    emeğe saygı :)

  11. @Ahmet Ozan: Yeni bir okuyucumuz olmalısınız. Doğrudan yararlandığımız kaynakları zaten belirtiyoruz. Ancak siz yazı için kullanılan kaynağı yanlış tahmin(*) etmişsiniz. :) Çok merak ediyorsanız aslında şurası:

    http://www.anadolu.edu.tr/akademik/fak_muh/elkelktrmuhbling/

    MMIO ne Microsoft'a özgü bir "teknoloji", ne de sadece konunun uzmanlarının bildiği spesifik bir alan. Elektronik mühendisliği bölümlerinin, mikroişlemcilere giriş seviyesinde bir dersini almış herhangi bir öğrencisinin bildiği bir konu.

    Dolayısıyla tek kaynak sizin Google'da aradığınızda karşınıza çıkan ilk kaynak değil. Gerçi, tabii ki o dokümanı da okumuştum konuyla ilgili ama ona gelene kadar önce Microprocessors 1 ders notlarımı gösterirdim zaten.

    (*)"weapons free"

  12. DeePBluESeA

    Peki Arkadaşlar Bu Windows Server 2003 ün (2008 i bilmiyorum tam olarak)32 BitlikSürümlerinin 16 Gb bellek Adrsleyebildiğinden bahsediliyor eğer bunu yapabiliyorsa Nasıl Yapıyor Açıklayabilirseniz Sevinirim

  13. kimimben

    13. yoruma
    PAE ile yapılıyor ve uygun donanım varsa.
    7. yoruma
    Uygulamaların 32 bit olması masaüstü kullanım için gözle görülür fark meydana getirmez(ölçülebilir ama kolay kolay fark edilmez)
    64 bit sistem altında 32 bit uygulama o modda çalıştırılır performans kaybı yine gözle görülmez ve program 32 uyumluluk çerçevesinde çalıştığı için yine 32bit in getirdiğini sınırlamalara tabi olur.Yani 2GB dan fazla boyutta belleği işleyemez.

  14. muratcan

    32 bit server enterprise 16 değil 64 gb ram adresleyebilir.şu anda 6 gb ram bulunan makinamda kullanıyorum,windows ilk açıldığında %11 i gösteriyor ram gadget… :)
    bundan sonra bir daha 32 bit server sistem piyasaya çıkmayacak,2008 R2 (windows 7 server) sadece 64 bit olacak.

  15. simetri

    Bu yazının sonunda aklımda 2 adet soru işareti var?

    1) 64 bir işletim sistemlerinin bellek adresleme dışında başka ne avantajları var?

    2) Windowsta performans artışı umarak [Denetim masası/sistem/gelişmiş/performans ayarları/sanal bellek] altında her diske sistem yönetimli boyut olarak ayarlıyordum. Bunun faydası nedir?

  16. MRT_

    @simetri: Cevap 2) Sanal belleğin her iki boyutunuda ayni ayarlayın. (Böyle ayarlamak hdd'deki dosya parçalanmaları en aza indiricektir.) Ben 32bit XP de 4 gb ram kullandıığım için sanal belleğe pek fazla ihtiyacım olmadığı için hiç sanal bellek kullanmıyorum. Sanal bellek HDD den bir bölüm ayarlayıp orayı ram gibi kullanmaya calıştığı için zaten performans düşüşü yarattığına inanıyorum. HDD'lerin okuma ve yazma hızları düşük olduğu için oluyor bu…

  17. simetri

    @MRT_ cevap için teşekkürler.

    Ben de bu yazıdan sanal belleğin performans artışı yerine performansı düşürdüğü sonucunu çıkarmıştım. Emin olmak için sormak istedim.

  18. kimimben

    Sanal bellek faydalıdır.Ama windows ailesi sanal bellek kullanma konusunda çok hevesli.
    Normalde program fazla bir işlemci kullanımına neden olmuyorsa hafızada az eriştiği yerler sanal belleğe kopyalanarak sistem hafızası boşaltılır.
    Boşatılan bellek sistem ayarlarına göre disk önbelleği olarak kullanılabilir.

    Sanal bellek dosyasını çok sık erişim yapılmayan ayrı bir diskte(mümkünse diskin başında ) sanal belleğin sık kullanımı gerektiği yerlerde ciddi performans artışı sağlar.

  19. €m®€

    Kusura bakmayın Bi sorum olacaktı Asus rampage II extreme anakartım var corsair 3gb 1600mhz kit var fakat 2,99GB görüyor bide ramlar 1600 mhz çalışınca standart ayarlarında xpde donmalar tepki sürelerinde geçikmeler donmalar oluyor kısa süreli anlık 1333 çektiğim zaman performans etki tepki herşey düzeliyor ramlarde ağırza olabilirmi acaba

  20. nezihdarcin

    Güzel ve faydalı bir açıklama olmuş ((: Ellerinize sağlık..
    Fakat 32 BIT – 64 BIT karmaşasına yönelik yazılara ve makalelere kolaycak ulaşmak pek mümkün değil gibi… Ancak şans eseri rastladıkça okuyabiliyrum. Acaba tüm bu 32 – 64 teorik -pratik açıklamalar bir köşede yada başlık altında toparlanabilir mi ???

    Saygılar

Mesaj gönder »

PC Labs'da eğer daha önce yayınlanan yorumunuz / mesajınız yoksa, gönderdiğiniz mesaj otomatik olarak kontrol kuyruğuna girer ve onaylandıktan sonra sitede gözükür. Yorumlardan yazarları sorumludur; PC Labs sorumlu tutulamaz.

 

Doğrudan web tabanlı RSS okuyucularınıza ekleme yapmak isterseniz:

Google RSS okuyucusuna ekle

Yahoo RSS okuyucusuna ekle

Netvibes RSS okuyucusuna ekle

Windows Live Messenger ile gelişmeleri al