32 bit işletim sistemi bir makine 8GB RAM + 20GB sayfa dosyasını kullanabilir mi?


98

32 bit işletim sistemi hakkında anladığım kadarıyla, adres 32 bit olarak ifade edilir, bu yüzden çoğu işletim sistemi 2 32 = 4G bellek alanı kullanabilir - ünitenin bayt, yani 4 GB olduğunu varsayıyorum.

Bunun anlamı, 32 bit işletim sistemine sahip herhangi bir makinede (Windows veya Unix olsun), sabit diskte toplam 4 GB'tan fazla RAM + sayfa dosyası varsa, örneğin 8 GB RAM ve 20 GB sayfa dosyası, belleği hiç kullanılmayacak demektir. "?

By "tükenmiş" Ben RAM veya sayfa dosyası artan performansı yardımcı olmaz anlamına; Elbette, bir uygulamanın işletim sisteminden bellek talep etmeye devam etmesi ancak başarısız olması her zaman mümkündür.

Benzer şekilde, bu 32 bit işletim sistemi makinesinde 2 GB RAM ve 2 GB sayfa dosyası varsa, sayfa dosyasının boyutunu artırmak performansa yardımcı olmaz. Bu doğru mu?


2
Yan not olarak, 4GB'tan fazla RAM ve yalnızca 32 bit işletim sistemine sahipseniz, bir RAM Diski yapabilirsiniz. Bu, RAM'inizdeki bir sabit sürücüdür ve kullanılmayan / eklenmemiş RAM'i yerleştirmek için kullanabilirsiniz.
Simon Verbeke

10
Yapamazsın İşletim sistemi üzerinden bir ramdisk oluşturulmalıdır, işletim sistemi belleği kullanamıyorsa orada da bir ramdisk oluşturamazsınız. (Bios'larınız nadirse bir ramdisk oluşturamazsa).
AVee

1
Kısa cevap "evet". Genellikle bir sürece 32 bitlik bir adres alanı verilmesine rağmen, işletim sisteminin kendisi bundan daha fazlasını kullanabilir (ya 80'lerde yaptığımız gibi banka değiştirme yoluyla ya da Intel'in PAE'si olan adres eklemesi hileci okulu tarafından. bir seferde bir program, birden fazla işlemden oluşabilir (Chrome, farklı işlemlerde sekmeler koyar) Ve işletim sisteminin kendisi, yerel sabit disklerden verileri önbelleğe almak gibi şeyler için kullanır; kullanılmış
rbanffy

Yanıtlar:


145

32 bit işletim sistemi hakkında anladığım kadarıyla, adres 32 bit olarak ifade edilir, bu nedenle çoğu işletim sistemi 2 ^ 32 = 4GB bellek alanı kullanabilir

Çoğu süreç olabilir hitap 4GB olduğunu. Potansiyel olarak karıştırıyorsun bellek ile adres alanı . Bir işlem adres alanından daha fazla belleğe sahip olabilir. Bu tamamen yasaldır ve video işleme ve diğer yoğun bellek kullanan uygulamalarda oldukça yaygındır. Bir işlem düzinelerce GB bellek tahsis edilebilir ve istediği zaman adres alanına girip çıkarılabilir. Bir seferde yalnızca 2 GB kullanıcı adres alanına girebilir .

Evinizde dört araçlık bir garajınız varsa, yine de elli aracınız olabilir. Sadece hepsini garajında ​​tutamazsın. En az 46 tanesini depolamak için başka bir yerde yardımcı depoya sahip olmalısınız; garajınızda hangi araçları tutuyorsunuz ve caddede bulunan otoparkta hangilerini tutuyorsunuz size kalmış.

Bu, herhangi bir 32 bit işletim sistemi anlamına geliyor mu, Windows veya unix olsun, makinede sabit diskte RAM + sayfa dosyası 4 GB'den fazla ise, örneğin 8GB RAM ve 20GB sayfa dosyası varsa, asla "kullanılan bellek" olmayacak mı?

Kesinlikle bu demek değil. Tek bir işlem bundan daha fazla bellek kullanabilir! Yine bir işlemin kullandığı bellek miktarı, bir işlemin kullandığı sanal adres alanı miktarıyla neredeyse tamamen ilgilidir. Tıpkı garajınızda tuttuğunuz araç sayısı gibi, sahip olduğunuz araç sayısı ile tamamen ilgili değildir.

Ayrıca, iki işlem özel olmayan bellek sayfalarını paylaşabilir . Yirmi işlemin tümü aynı DLL dosyasını yüklüyse, işlemler hepsi bu kod için bellek sayfalarını paylaşır. Onlar paylaşmayan sanal bellek adres alanını , paylaştıkları hafıza .

Benim açımdan, açık olmasa da , hafızayı düşünmeyi bırakmalı ve mekanı aynı şey olarak ele almalısınız, çünkü onlar aynı şey değildir.

Bu 32 bit işletim sistemi makinesinde 2GB RAM ve 2GB sayfa dosyası varsa, sayfa dosyasının boyutunu artırmak performansa yardımcı olmaz. Bu doğru mu?

Elli araba ve dört araba garaj ve caddede 100 araba park yeri var. Otoparkın büyüklüğünü 200 noktaya yükselttiniz. Artık 50 ekstra park yerine 150 ekstra park yerine sahip olmanızın sonucu olarak araçlarınızdan herhangi biri daha hızlı mı oluyor?


26
Bu cevabı eldeki soruyu ele almamak için buluyorum ve neredeyse noktalarda aldatıcı.
Rig

48
@Rig: Awesome, yapıcı eleştirinizi duyduğuma sevindim. Şimdi daha iyi bir cevap yazma ve bize daha az aldatıcı ve daha uygun olduğunu düşündüğünüz cevap türünü gösterme şansınız .
Eric Lippert

4
@BlueRaja: Ne karıştırıyorsun şüpheli fiziksel bellek ile belleğe . Fiziksel hafıza, hafızaya daha hızlı erişim sağlayan bir optimizasyondur. İşlemci önbelleklerinin hafızaya daha hızlı erişime izin veren bir optimizasyon olduğu gibi. Bellek , sayfa dosyasında saklanan tüm amaç ve amaçlar içindir . Sayfa dosyasındaki belirli bir sayfa (1) sanal bellek adresi veya (2) fiziksel diskten belleğe kopyalanan o olup olmadığı sorusuna alakasız eşleştirilmiş olsun tahsis ya da değil.
Eric Lippert

4
@BlueRaja: Raymond Chen'in konuyla ilgili yazısı yardımcı olabilir. Sayfa dosyasından 4GB'lık pay ayırmayı gösterir; sürecin sahip olduğu hafıza budur . Süreç olamaz hitap kez tabii de her şeyi, ama ele alabilir herhangi bir sayfayı , kullanılmayan bir VM sayfasına bir sayfa eşleme bir süre için kullanmaya ve ardından atarak. blogs.msdn.com/b/oldnewthing/archive/2004/08/10/211890.aspx
Eric Lippert

3
Bu cevap daha net olurdu Eric, eğer Windows (ve diğer işletim sistemlerinde) aslında sanal adres alanınızda bulunmadan hafızayı “rezerve etmenize” izin vermiş olsaydı ve sonra “bariz soruyu“ nasıl yaparsınız? yönlendirmek?". Sanırım bunun cevabı “sanal adres alanına sayfalamak için başvurmak için kullandığınız bir tür Sayfa Kimliği var, sonra o adrese hitap edebilirsiniz”, ancak bilmiyorum ve cevabınız söylemiyor :)
Timwi

67

İşlemcinin yalnızca maksimum 4 Gb RAM'i adresleyebileceği doğrudur. Ancak, mevcut CPU'lar işleme özgü bellek adreslerini fiziksel bellek adreslerine çevirmek için bir MMU ( Bellek yönetim birimi ) kullanır.

Bu MMU, bellek yalıtımından (işlem A, işlem B'nin belleğini değiştiremez) bellek paylaşımına (işlem A, işlem B ile aynı fiziksel bellek bölgesine erişebilir ve bu şekilde veri alışverişi yapabilir), her türlü farklı numara için kullanılır.

Her ne kadar 32-bit CPU'lar işlem başına sadece 4Gb belleği desteklese de, Fiziksel Adres Uzantısı kullanılırken 64Gb'a kadar RAM adresleyebilir . Bu, A işleminin ilk 4 Gb belleği kullanmasına izin verirken, B işlemi bir sonraki 4 Gb'yi kullanır. Toplamda, 4 Gb'den fazla fiziksel bellek kullanılır, ancak tek bir işlemin kullandığı toplam bellek miktarı hala 4 Gb'de sınırlıdır .

PAE, sürüm 2.3.23'ten beri Linux'ta ve Windows Server'ın bazı 32-bit lezzetlerinde Linux'ta desteklenir, ancak 32-bit Windows XP, Vista veya 7'de desteklenmez.

CPU'nuz PAE'yi desteklemiyorsa, 4GB'lık fiziksel hafıza ile sınırlandırılırsınız (veya diğer faktörlere bağlı olarak daha az).

İşletim sisteminizin, PAE'yi destekleyen CPU ne olursa olsun, yine de fiziksel belleğin bazı kısımlarını diske (sayfa dosyası) çıkarabildiğini unutmayın. Bu, birleşik 4 Gb'den fazla kullanan birden çok işlemi başlatabilmenizi sağlar. PAE'nin tek etkisi, işlem A'yı çalıştırırken 4 Gb işlem B'nin fiziksel bellekte saklanıp saklanmayacağıdır.


bu desteklemiyorsa, o zaman yukarıda söylediklerimi doğru mu demek?

10
Windows XP, PAE'yi (SP2'den başlayarak, sanırım) desteklemiyor, ancak makine PAE'yi desteklese bile RAM'i 4GB'nin ötesinde yoksayar; buraya bakınız . Donanım tabanlı Veri Yürütme Engellemesi için kullanılır - NX / XD bit, "normal" sayfa tablosu girişi değil, yalnızca PAE sayfa tablosu girişinde kullanılabilir.
Wyzard

Yonga seti, hangi işletim sistemini veya hangisini seçtiğinize bakılmaksızın ne kadar belleğin desteklenebileceğini / kullanılabileceğini sınırlayan bir faktör olabilir.
Moab

5
32bit pencerelerin tüketici sürümlerinin> 4GB ram'ı desteklememesinin sebebinin, çok sayıda donanım sürücüsünün bu kadar bellekle doğru çalışmadığı tespit edildi; ve o zamandan beri> 4GB'lık bir ram, sunucular / ultra yüksek iş istasyonları dışında, sürücülerin bakımını yapan şirketlerin çoğunun, sadece müşteri tabanının% 0.1'i tarafından kullanılacak sürücüleri güncellemek için para harcamaya ilgi göstermediği için çok nadir görülüyordu.
Dan Neely

6
@DanNeely OS yapar desteğine sahip bellek için, bu sınırlı olması lisans sorunları nedeniyle . Bunun üçüncü taraflara ait bir hack olduğu konusunda hemfikir olmama rağmen, yalnızca Windows'un tüketici değişkenleri için. Sunucu tabanlı Windows dağıtımları, Windows 2000'den başlayarak, 4GB'tan fazla belleği destekledi (ref. İlk bağlantı).
buluş

15

Özellikle 32 bit Windows değişkenleri hakkında konuşan, Windows 2003 değişkenlerinden bu yana 4GB'tan fazla RAM desteği aldılar (ve ayrıca , RAM'inizi 32-bit'te kullanmanıza izin vermek için Windows 7 için bir çekirdek hack alabilirsiniz ). Ancak, sorunuzun ilk bölümünde belirtildiği gibi, bunun bir bedeli vardır.

32 bit işletim sisteminde, imlecin boyutu (bellek adresi) CPU'nun kelime uzunluğu ile aynıdır, 32 bit (bu sizin dediğiniz gibi) 2 ^ 32 = 4GB bellek alanına izin verir. Windows ayrıca uygulamalar için "sanal bellek" yaklaşımı kullanır, bu nedenle her uygulamanın kendi bellek alanı vardır.

Her işaretçi yalnızca 32 bit genişliğinde olduğundan, sistem 4 GB RAM'den daha fazlasını destekleyebilse de , her uygulamanın işaretçileri yalnızca 4 GB'a kadar belleği ele alabilir. Bildiğim kadarıyla, 32 bit işletim sisteminde 4GB'tan fazla RAM kullanan tek uyarı budur. Toplamda, 4GB'tan fazla RAM kullanan birçok uygulamaya sahip olabilirsiniz, ancak belirli bir işlem yalnızca 4GB'a kadar tahsis edebilir / erişebilir.


Sorunuza geri dönelim, diyelim ki 2GB RAM kullanan bir programınız var. Bu programın 10 örneğine sahipseniz, bu 20 GB'dir. RAM'inizin 8 GB’sinin yanı sıra 12 GB’lık bir sayfa dosyası da kullanılacaktır. Bu yüzden evet, 32 bit işletim sistemlerinde, bu belleği kullanmak mümkün olandan daha fazlasıdır.

Bu 32 bit işletim sistemi makinesinde 2GB RAM ve 2GB sayfa dosyası varsa, sayfa dosyasının boyutunu artırmak performansa yardımcı olmaz. bu doğru mu?

Sayfa dosyası boyutunu artırmak genellikle performansı artırmaz (RAM ve sayfa dosyanız mutlak minimum değere ayarlanmadığı veya bilgisayarınızın sürekli olarak bozulmadığı kadar düşük ayarlanmadığı sürece). Ancak, bilgisayarınızın (sanal) belleğin tükenmesini önler. Sayfa dosyasına ne zaman bir şey atılması gerekiyorsa, zaten büyük bir performans etkilemesi alıyorsunuz (sabit sürücü RAM'inizden daha yavaş olan büyük siparişler olduğu için).


Her işlemin aldığı 4 GB adres alanından, programın kullanması için aslında yalnızca 2 GB kullanılabilir; diğer 2GB, çekirdek tarafından kullanılmak üzere ayrılmıştır. / 3 GB önyükleme seçeneği bazı programlar daha fazla RAM kullanmasına izin verebilirsiniz.
Wyzard

1
@Breakthrough: "Sayfa dosyası boyutunu artırmak hiçbir zaman performansı artırmaz" Bunun doğru olduğunu sanmıyorum. Örneğin, daha fazla takas varsa, işletim sistemi kullanılmayan program verilerini daha agresif bir şekilde değiştirebilir ve boş RAM'i örneğin disk önbelleğe almak için kullanabilir. Bazı yapılandırmalarda, bu daha iyi performans verebilir. ServerFault'da, bir sayfa dosyasının neden önemli olduğu ve bu konulara değinen güzel bir cevabı var: serverfault.com/questions/23621/…
sleske

2
"Sayfa dosyasının boyutunun arttırılması asla performansı artırmaz" gibi battaniye açıklamalarına dikkat edin, daha küçük bir sayfa dosyasının daha büyük bir sayfa dosyasına sahip olmaktan daha fazla disk çökmesine neden olması mükemmel bir şekilde mümkündür! Bu sorudaki cevapları ve yorumları görün .
Mark Booth,

1
@sleske İyi nokta, daha "genellikle değil" tür bir şey olarak güncellendi. Bir sunucuda çok büyük bir fark yaratabileceği konusunda hemfikir olmama rağmen, çoğu insan için, geçmeye çalıştığım nokta, daha fazla RAM almaktan daha iyi olacaklarıydı (çağrı yaparken, performans oldukça yavaş olduğu için alabildiği gibi).
buluş

-1

Bir işlemcinin 32 bit olduğu söylendiğinde, tek bir komut kullanarak 32 bit sayılarla çalışabileceği anlamına gelir. Pentium Pro'nun 1995'te piyasaya sürülmesinden bu yana Intel mimarisinde 36-bit olan adres veriyolu genişliği ile ilgisi yok .

Ünlü 4GB sınırlaması, çoğu PC yazılımının, her bir bellek baytının bir işaretçi tarafından ele alınabileceği Düz bellek modelini kullanmasından kaynaklanmaktadır . Bir işaretçi kullanılacak bir sicile sığması gerektiğinden ve siciller 32 bit genişliğinde olduğundan, 4 GB ile sınırlandırılırsınız.


Yukarıdaki diğer cevaplarda da belirtildiği gibi bu yanlış.
ChrisInEdmonton

Yanlış yaptığım belirli bir gerçeği işaret eder misiniz?
Dmitry Grigoryev

1
Tek bir işlem 4 GB'den fazla kullanabilir. Özellikle, önceki cevaplar "Bir işlem adres alanından daha fazla belleğe sahip olabilir" işaretini vermektedir.
ChrisInEdmonton

2
Bkz. Örneğin, blog.superuser.com/2011/04/23/… Şimdi, kesinlikle, aynı anda 4 GB’dan fazlasını kullanamazsınız, ancak tek bir işlem hafızayı eşleştirebilir ve yeniden eşleyebilir, bu nedenle de Tek bir işlemde 4 GB, sadece bir miktar defter tutma var. Bu blog yazısı oldukça Windows’a özgü. 32 bitlik Linux kurulumlarında> 4 GB bellek tahsis edilmiş veritabanı sunucuları çalıştırdım. Bu günlerde elbette 64 bit Linux kullanıyorsunuz.
ChrisInEdmonton

1
Tamam, özür dilerim. mmapEkstra hafıza olasılığı hakkında düşünmedim .
Dmitry Grigoryev
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.