32 bitové PC - limit RAM
Zdravím, nevíte kde se vzal ten limit 4 GB paměti u 32 bitových operačních systémů? Napadlo mě jedno vysvětlení, je to od toho že 2^32 = 4GB?
To je asi blbost, žejo? To by potom 16 bitové počítače musely mít limit 64 kB a 8 bitové 256 bajtů, a to uměly mnohem víc.
Ano je to tak. 2^32 je skutečně 4GB.
Ono také záleží kolikabitovou má procesor adresaci paměti. Třeba takový procesor 8086 byl sice 16-bitový, ale díky 20-bitové adresaci paměti dokázal adresovat (používat) 1MB (2^20).
Je to tak. 16b počítače měly skutečně omezení na 64 KB, jen tam byl fígl. V adrese instrukce byl ještě "segmentový prefix", čímž se to dostalo na 1 MB. Ale jednotlivá proměnná byla omezená na 64 KB.
V TEORII pres PAE => 32Bit na 36Bit=> Kde OS muze pracovat az s :2 (sila)x36 = 68 719 476 736 (s vyjímkou starych CPU typu které vysli kdyz byl semík jeste hríbe )
V zaklade 32 = 4 294 967 296 adres, coz koresponduje 4 Go RAM (4x1024x1024x1024 = 4 294 967 296, jelikoz 1kio = 1024 octets) . Nepocítaje % RAM co si OS rezervuje pro nekteré HW prvky.
aha, tak už je mi to jasné. A ta paměť RAM potřebuje pro každý bajt samostatnou adresu? To není rozdělená do nějakých bloků, jako sektory na harddisku?
ked ma nejaka instrukcia CPU napr. spocitat 2 cisla, tak musis v tej instrukcii registrom adresovat konkretne cislo, ne nejaky blok. 32bitovy register adresuje maximalne 4GB, lebo pocet kombinacii 32 prvkov s hodnotou 1 alebo 0 je 4miliardy.
P.S. "bloky" by bolo to PAE, co existuje uz od pentium1 (ca. rok 199x), len microsoft jaksi to asi moc nevedel pouzit, lebo Win resp. driver model su len take chaoticke polepence a uz sa v tom nevyzna asi ani nikto v MS. PAE by ale bolo riesenie.
MS to použít normálně umí. Omezení desktopových verzí je spíš obchodní než technické.
PAE musi podporovat aj samotna aplikacia. a podporuje to mizive percento aplikacii
Noo, ono to bolo tusim kvoli ovladacom, ale ok to je uz jedno :) Dnes su vsetky CPU 64bitove a nema vyznam riesit PAE.
A ano 16bitove pocitace priamo adresovali max 64kB, stejne tak 8bitove (tam sa zvycajne pouzival specialny 16bit register na adresovanie, ktory sa musel plnit na 2x). Vsetko zavisi od toho jak dany CPU ma riesene adresne registre a adresnu zbernicu.