Bir i5-2430M işlemci ile bir Asus U31SD Notebook var . Asus sitesi maksimum RAM'in 8 GB olduğunu söylüyor ancak Intel'in CPU'mun 16 GB'ı desteklediğini söylüyor. Ubuntu'da bu sistemde kullanabileceğim maksimum RAM nedir?
Bir i5-2430M işlemci ile bir Asus U31SD Notebook var . Asus sitesi maksimum RAM'in 8 GB olduğunu söylüyor ancak Intel'in CPU'mun 16 GB'ı desteklediğini söylüyor. Ubuntu'da bu sistemde kullanabileceğim maksimum RAM nedir?
Yanıtlar:
Bu sınır aslında donanımınız (Ana kart bellek desteği ve içindeki yuva sayısı) ile Ubuntu sürümü (32 Bit, 32 Bit + PAE, x32ABI, 64 Bit) arasında
Maksimum 4GB destekleyen bir ana kartınız varsa, 4GB donanım sınırına sahip olacağınız için 32 Bit, 32 Bit PAE veya 64 Bit kullanıyor olmanız farketmez.
Ancak daha yüksek miktarda belleği destekleyen bir anakart satın alırsanız, aşağıdaki maksimum desteklenen belleği içeren Ubuntu sürümleriyle oynayabilirsiniz:
Ubuntu 32 Bit - 4GB RAM
Ubuntu 32 Bit + PAE (Fiziksel Adres Uzantısı) - 64GB RAM
Ubuntu x32ABI - 4GB RAM (Bu, 64 Bit donanımında çalışan 64 Bit geliştirmeleri ile değiştirilmiş 32 Bit mimarisi içindir. Henüz mevcut değildir.)
Ubuntu 64 Bit - Bir Çok! (Aslında 2 ^ 64) ancak donanım limitleri ve gerçek dünya bilgisayarları nedeniyle sınır 1 TB civarındadır (1024GB RAM)
Bu nedenle, 4GB'tan fazla RAM kullandığınızda bellek sınırı ile ilgili soru kullanılmalıdır. Bu durumda, gerçekten büyük bellek boyutlarını destekleyen 32 Bit PAE veya 64 BIT'e ihtiyacınız olacaktır.
Ayrıca, şu anda örneğin 4GB'ınız varsa ve 16GB ram satın aldıysanız, Ubuntu'yu yeniden yüklemenize veya herhangi bir değişiklik yapmanıza gerek yoktur. Sadece hatıraları değiştirin; Ubuntu kutunun dışında onlarla birlikte çalışmalı ve çalışmalıdır. Yapılandırma gerekmez. 4 GB RAM'e sahip 32 Bit'iniz varsa ve 16 GB veya RAM taktıysanız, Ubuntu otomatik olarak 32 Bit'ten 32 Bit PAE'ye değişir. Bu yılın başında 4 GB’tan 16 GB’ye geçtiğimden bu yana kefil olabilirim.
Ubuntu'nun 32/64'teki hafıza hakkında çok iyi bir açıklamasına bir link: https://help.ubuntu.com/community/32bit_and_64bit#Memory
GÜNCELLEME - Bazı ana kartların desteklenen maksimum belleği etkinleştiren, düzelten veya geliştiren BIOS güncellemeleri olduğunu eklemeyi unuttum. Örneğin, geçmişteki bazı Intel anakartları, destekledikleri maksimum değerle çalışma konusunda sorun yaşıyordu. Bir BIOS güncellemesi bunu düzeltti. Diğer anakartlarda BIOS sorunu nedeniyle 4 GB destek var, yükselttikten sonra 4 GB'den daha fazla destek alıyorlardı.
Ayrıca CPU ve Anakart için Desteklenen maksimum belleği karşılaştırırken, sahip olabileceğiniz Maksimum değer bunlardan herhangi birinin Minimum'udır. Yani örneğin:
CASE 1
CPU Maksimum Desteklenen Bellek - 16GB
Anakart Maksimum Desteklenen Bellek - 8GB
Maksimum Desteklenen Bellek - 8GB (Çünkü CPU ile Anakart arasındaki en düşük değerdir)
CASE 2
CPU Maksimum Desteklenen Bellek - 16GB
Anakart Maksimum Desteklenen Bellek - 32GB
Maksimum Desteklenen Bellek - 16GB (Çünkü CPU ile Anakart arasındaki en düşük değerdir)
CASE 3
CPU Maksimum Desteklenen Bellek - 16GB
Anakart Maksimum Desteklenen Bellek - 64GB
Maksimum Desteklenen Bellek - 16GB (Çünkü CPU ile Anakart arasındaki en düşük değerdir)
CPU ile olan bu Bellek Limiti ilişkisinin ardındaki sebep, Intel tarafından en son Core CPU'larda yapılan teknik değişikliklerden kaynaklanıyor.
Bu durumda, 8GB destekleyen bir anakart ve 16GB destekleyen bir CPU'nuz var. Bu, sahip olabileceğiniz maksimum 8 GB olduğu ve anakarttaki yuva miktarına bağlı olarak kullanabileceğiniz anlamına gelir. Bu Asus'ta 2 Yuvaya sahipsiniz, bu da Maksimum 8GB'ı tamamlamak için iki adet 4GB RAM'e sahip olabileceğiniz anlamına gelir.
X32abi hakkında daha fazla bilgi:
KernelNewbies - http://kernelnewbies.org/Linux_3.4#head-039c9d273884c9639937c10d68b4a3214869eb4b
LWN - https://lwn.net/Articles/456731/ (Bellek limiti hakkında kolay anlaşılır açıklamalar için yorumları okumanızı tavsiye ederim )
Google - http://sites.google.com/site/x32abi/
Son olarak, Ubuntu 12.04'ten bu yana, Ubuntu'nun tüm 32 Bit sürümleri varsayılan olarak PAE ile birlikte gelir, böylece 32 Bit'in tümü maksimum 64 GB RAM'i destekler. 12.04+ kullanıyorsanız ve hangi mimariyi kullanacağınızı bilmek istiyorsanız, bazı önerileri uyguladığınız sürece bunlardan herhangi birini kullanabileceğinizi biliyorsunuz:
512 MB veya daha az RAM varsa, 32 Bit kullanmanız önerilir.
4 GB'den az RAM varsa ve 512 MB'tan daha fazla RAM kullanıyorsanız, 32 Bit kullanılması önerilir (Ancak yine de 64 Bit kullanabilirsiniz)
4 GB RAM’iniz varsa, 32 Bit kullanmanız önerilir (Ancak yine de 64 Bit kullanabilirsiniz)
4 GB veya RAM ve 64 GB RAM'iniz varsa, 32 Bit veya 64 Bit kullanabilirsiniz, ancak 64 Bit kullanılması önerilir.
64 GB’dan fazla RAM’iniz varsa, 64 Bit kullanmanız gerekir.
32 bit için teorik sınır 2 ^ 32 = 4096 MB'dir, ancak PAE (Fiziksel Adres Uzantısı) üzerindeki Ubuntu 12.04'ten itibaren varsayılan olarak 2 ^ 36 = 64 GB sınırla açılır.
64 bit için 2 ^ 64 = 16 777 216 TB (evet bu Terabayt) theroretically olmalıdır. Gerçekte, RAM miktarı 2 ^ 48 aka 256 TB RAM ile sınırlıdır.
Teorik sınırlara normal bir dizüstü bilgisayarda gerçekten erişilemediğinden gerçek sınırlama, dizüstü bilgisayarınızdaki bellek yuvalarının miktarı (normalde 1-2) ve yonga setinin desteğidir. 8 GB modüller için ciddi para ödemeye istekli iseniz, 8-16 GB gerçekçidir.
U31SD'ime yerleştirmek için toplamda 8GB ekstra bir 8GB daha aldım. Asus spec sayfasına 8GB diyen limit olmasına rağmen, bu iyi çalışıyor. Geçti memtest86 ve 64bit Ubuntu tarafından görülebilir.
En son bios güncellemesini kurdum, bunun herhangi bir fark yaratıp yaratmadığından emin değilim.
FYI, çıktısını sudo dmidecode -t 16
gösterir Maximum Capacity: 16 GB
.
İşlemcide olmayan anakart üzerindeki bir kısıtlamadır. İşlemci 16 GB'a kadar destekleyebilir, ancak anakart yalnızca 8GB alabilirse, sınırınız budur.
Eğer Ubuntu'da 32-bit kullanıyorsanız limitiniz 4GB ve 64-bit kullanıyorsanız çok daha yüksek (kesinlikle hatırlayamıyorum ama 16GB'ın üzerinde bir yol.
Ancak her zaman donanımınız tarafından kısıtlanacaksınız. Her zaman anakart limitini ve CPU limitini karşılaştırmalı ve PC limiti olarak en düşük değeri almalısınız.
bir işaretçinin boyutunu belirleyen birçok soru vardı. Temel olarak, bu kuralın işlemci mimarisi olduğunu söyleyebiliriz.
x86 -> 4 bytes pointer -> can address 4,294,967,296 locations = 4GB (it is the limit)
x64 -> 8 bytes pointer -> can address 1.84467440737e+19 locations (it is the limit, big, eh)
8GB RAM’i adreslemek için 8,589,934,592 eşlemeye ve 4 bayt boyutundaki işaretçiye ihtiyacınız olan tüm değerleri ele alamazsınız. bu yüzden x86 mimarisinde 4GB'tan fazla RAM'e sahip olamıyorum.
Yine de başka olasılıklar da var:
RAM miktarı mimarisi ile sınırlı değildir (32 veya 64 bit). Mimari, işletim sistemi ve üzerinde çalışan programlar tarafından bir seferde ne kadar belleğin ele alınabileceğine karar verir. 32 bit makinede, yani 32 bit genişliğinde bellek veri yolu olan bir makinede, işletim sistemi ve programlar yalnızca 4 GB belleği "görebilir". Ancak bu sadece 4 GB RAM olduğu anlamına gelmez. Üretici bunun için verdiyse, 16 GB veya 4x4 GB RAM’e sahip olabilirsiniz. Bu durumda, 2 tane daha "gizli" adres satırı olacak ve ayrıca bu 2 satırın seviyelerine karar vermek için kodlanmış bir mantık olacaktı, böylece mevcut 4 GB RAM'lerden herhangi birini seçecektik - 00 01 10 11. Bu "gizli" adres bitleri yazılım katmanları tarafından kullanılmaz, bu nedenle bu katmanlar için yalnızca 4 baytlık bir işaretçi kullanabilirler. Bu "gizli" sayısı
Bu sadece bir örnek. Satıcıya, ekstra RAM için nasıl sağlamaya karar verdiklerine bağlıdır.
Ayrıca bakınız:
Her zamanki gibi, bir işaretçi sistemdeki bellek birimlerinden daha fazla adres tutacak kadar büyüktür. Bu, bir programın, herhangi bir hafıza birimine tekabül eden bir adrese erişmeye çalıştığı ihtimalini ortaya koymaktadır, çünkü yeterli hafıza yüklenmemiş (yani mevcut hafıza aralığının ötesinde) veya mimari bu adresleri desteklememektedir. İlk durum, Intel x86 mimarisi gibi bazı platformlarda segmentasyon hatası (segfault) olarak adlandırılabilir. İkinci durum, işaretçilerin 64 bit uzunluğa sahip olduğu ve adreslerin yalnızca 48 bite kadar uzandığı AMD64'ün şu anki uygulamasında mümkündür. Burada, işaretçiler belirli kurallara uymalıdır (kurallı adresler), bu nedenle kuralsız bir işaretçi kullanılmadığında, işlemci genel bir koruma hatası oluşturur.
Öte yandan, bazı sistemlerde adreslerden daha fazla bellek birimi var. Bu durumda, hafızanın farklı kısımlarını farklı zamanlarda kullanmak için hafıza bölümlemesi veya sayfalama gibi daha karmaşık bir şema kullanılır. X86 mimarisinin son enkarnasyonları, PAE sayfalama mekanizması aracılığıyla 32 bit doğrusal adres alanına eşlenen 36 bit fiziksel bellek adresini destekler. Böylece, bir seferde mümkün olan toplam hafızanın sadece 1 / 16'sına erişilebilir. Aynı bilgisayar ailesindeki başka bir örnek, 80286 işlemcinin 16 bitlik korumalı moduydu; ancak 16 MiB fiziksel belleği desteklemesine rağmen, 1 GiB'a kadar sanal belleğe erişebiliyordu, ancak 16 bitlik adres ve segment kombinasyonu Kayıtlar, hantal bir veri yapısında 64'ten fazla KiB'ye erişim sağladı.
Tutarlı bir arabirim sağlamak için, bazı mimariler, bazı adreslerin bellek birimlerine gönderme yaparken, bazıları bilgisayardaki diğer aygıtların aygıt kayıtlarını ifade ederken bellek haritalı I / O sağlar. Dosya ofsetleri, dizi indeksleri ve diğer nesne türleri için adreslerle aynı amaçlara hizmet eden uzak nesne referansları gibi benzer kavramlar vardır.
(daha fazlası burada )