8, 16, 32, 64-bit OS a max. využitie pamäte
Dobrý deň,
Chcem sa spýtať, že ako to je z maximálnym využitým pamäte u uvedených typov OS (vid nadpis). Napr. prečo taký 32-bit OS vie využiť len 3,25 GB RAM a viac nie? Tých zvyšných 750 MB sa stratilo kde? Lebo podľa mojích výpočtov by to malo byť presne 2^32 = 4 294 967 296 bajtov. Co je presne 4096 MB (:1024) = 4 GB.
U 64-bit OS to je max. 2^64 = 18 446 744 073 709 551 616 bajtov, teda cca. 17,2 miliárd GB, a presne 16 Exbibajtov.
A čo taký napr. 8-bitový OS? Prečo disponovali tieto stroje napr. 64kB pamäťou (Commodore 64), alebo aj 2kB (Nintendo Entertainment System)? Ked podľa mojích výpočtov dokázali využiť len zlomok z toho? 2^8 = 255 bajtov. 255 : 1024 = 0,249 kibiBajtov.
Všetky výpočty vyššie som prepočítaval sám, takže ked je niekde chyba tak ma opravte lebo mne v prvom rade ide o tie matematické výpočty. No a dôvod prečo sa pýtam takú otázku je fakt, že v blízkej budúcnosti budem písať prácu práve na túto tému a nieje mi z nej všetko jasné. A další dovod je aj ten že v minulosti som nainštaloval 32-bit OS na PC zo 6 GB RAM a všetci ma súrili že aký som "blbý", ked ten OS viac ako 3,25 GB nevyužije.
Adresny priestor CPU sa pouziva aj pre prenos dat do/z HW zariadeni, preto je nejaka cast tych 4GB nedostupna u 32bitoveho OS. Velkost zavisi od HW a od BIOSu, ten je zodpovedny za priradenie a zoradenie tych priestorov a robi to casto dost naprd lebo sa to len narychlo lepi lebo kazdych par mesiacov je novy chipset a indocinan to tak rychlo neni schopny polepit poriadne. (teoreticky by sa mohlo dat na vacsine HW pouzit aj 3,5GB ale niekedy je realne pouzitelnych len 3GB apod)
On je to len problem implementacie OS a ovladacov, existuju HW sposoby ako pouzit celu RAM aj v 32bit mode, ale v MS su dementi a vsetky OS su totalny polepeny bordel, tak to moc nefungovalo.
P.S. a neexistuje 8bitovy OS. Aj 8bitove CPU mali 16bytove adresne registre takze vpodstate boli 16bitove a ne 8bitove ako sa nazyvali.
P.S.2. z toho celeho vyplyva ze ak mas viac jak 4GB RAM na domacom PC(neni to jedno ze o com sa bavime) tak pouzi 64bitovy Windows.
Jááj, no tak v tomto prípade 2^16 = 65535 bajtov : 1024 = 64 kB to presne sedí.
Otázka: Prečo? Prečo sa nazývali 8-bitovými ked mali 16-bitové registre?
mali 16bitove ADRESNE registre. Ostatne registre (datove, t.j. tie ktore sluzia na matematicke a logicke operacie s datami) boli len 8bitove. Preto sa volali 8bitove.
On adresny register bol tam vpodstate vacsinou asi len jeden (fyzicky bol zlozeny z dvoch 8bitovych)
Alebo sa na adresovanie pouzivali spojene dva univerzalne 8bitove registre (BC, DE, HL). Uz sa celkom nepamatam je tomu vyse 20rokov. https://cs.wikipedia.org/wiki/Z80
- Vic co znamena [PAE] ? | https://en.wikipedia.org/wiki/Physical_Address_Extension
- Furt nic ? Ted PAE + Microsoft | https://docs.microsoft.com/en-us/windows/desktop/memory/physical-address-extension
.. takze "muze" vyuzit vic.
To ale odpovedas uplny opak ako je otazka :) On to fakt windows pouzit nevie, napriek tomu ze existuje PAE. Dovod je samotny MS, a ciastocne aj vyrobci ovladacov
Takže ak som tomu správne pochopil (z tejto stránky), to PAE sa týka viac procesoru ako pamäte nie? Zvyčajne je to PAE vypnuté, ak sa vo Windows nejako povolí tak hardvérovo rozšíri registre procesoru (ktorý to podporuje) o 4 bity? Teda 2^36 = 64 GB. Tak? A tak by mohol 32-bit OS využívať aj 64 GB naraz...
Ano, kuprikladu pomoci PAE Patch (navod neprovadej na tvém PC co pouzivas) jde za jistych okolnosti (i HW jako CPU ) u x32 bitového systému 'odemknout' zvysit RAM (32 bits na > 36), ale 64Bit (64bitové instrukce) OS bych to nenazval.
To je OK, ja už roky používam 64-bit OS: Windows 10 Pro x64. Ten prípad ktorý som spomenul v pôvodnej otázke že som nainštaloval 32-bit OS na PC zo 6 GB RAM sa stal už dávno ešte s W7...asi niekedy vtedy ked vyšiel 2009/2010...
Záleží na tom jaký OS. Třeba Windows má různá umělá omezení, v závislosti na verzi, takže třeba Starter má pouze 2GB
the-usable-memory-may-be-less-than-the-installed-memory-on-windows-7-b
Studium k tej tvojej praci:
1. co obsadilo tych 700MB adries co ti tam chyba do 4GB: https://en.wikipedia.org/wiki/Memory-mapped_I/O
2. ako sa da adresovat viac fyzickej RAM ako je "pocet bitov" adresneho registra CPU (keby vyrobca OS viac adresovat chcel): https://cs.wikipedia.org/wiki/Str%C3%A1nkov%C3%A1n%C3%AD_pam%C4%9Bti
Strankuje sa dnes vzdy, aj v 32bit OS, ale obycajny neserverovy 32bit windows je naprogramovany tak ze nedovoluje pouzit fyzicke adresy nad 4GB, cistocne lebo to MS tak chce, a ciastocne asi aj kvoli ovladacom ktore s viac jak 4GB neratali a mohli by blbnut apod. A navyse jeden 32bitovy proces (jeden proces programu, aplikacie) tiez nevie pouzit viac jak 4GB (efektivne len 2GB lebo zbytok je pre kernel OS), ptz tenm prosces vidi len svoj 32bitovy priestor. Preto je lepsie pamatovo narocne aplikacie pouzit 64bitove v 64bitovom OS, ked ta aplikacia ma extremne naroky na RAM
Poznamka: samotny CPU musi podporovat pozadovane mnozstvo RAM hardwarovo, to ze je CPU 64bitovy este neznamena ze sa na neho da pripojit trilion GB RAM, dnesne bezne x86 CPU mavaju limit niekde u 64GB fyzicky, viac RAM na neho proste nepripojis na jeho piny (presnejsie povedane jeho adresny dekoder nie je navrhnuty na viac)
OK, vdaka za rady, inac neviem či dačo vyčítam z toho prvého odkazu...lebo to by som musel okrem študovania informatiky a číslicovej techniky študovať aj anglický jazyk...tým nechcem povedať že anglicky neviem nič, no proste radšej mám odborné články v rodnom jazyku, alebo CZ.
Ale ked to mám takto všetko zhrnúť, tak v podstate som mal v pôvodnej otázke pravdu, že? Samotné x86 CPU dokáže adresovať (spracovať v registroch) do operačnej pamäte RAM najviac 4 294 967 296 bajtov, čo je na bajt presne 4 GB. Ale, kedže CPU musí počas chodu OS spracovávať a ukladať aj iné dáta, ktoré priamo nesúvisia s behom OS, tak to BIOS pri štarte proste len tak vyhradí na "bordel". To by vysvetľovalo prečo 32-bit systémy často krát ukazujú vo vlastnostiach systému dostupnú pamäť 3,5 GB (pri 4 GB RAM vložených). A tam (do tej BIOSom vyhradenej oblasti) sa ukladajú nejaké dáta od grafiky, čipsetu, BIOSu a iných periférií. Tak?
žádný "bordel"!
CPU musí být schopen předat data např. grafické kartě a naopak si od ní ta data zase vzít. Tudíž RAM grafiky (v podstatě jakékoli periferie, přímo připojené na datové sběrnice počítače, která přímo komunikuje s procesorem) musí být adresovatelná - proto ti grafika ubírá dostupnou ram, protože se její adresní prostor mapuje přes klasickou RAM. Stejně tak třeba "blbý" COM port má taky adresu, přes kterou si vyměňuje data s procesorem.
edit: představ si místnost, ve které jsou položeny koberce. Plocha té místnosti je řekněme 10x10m, a to odpovídá adresnímu prostoru 32bit CPU. Když tam položíš koberec 10x10m (např. RAM 4GB), pokryje celou plochu. Pokud bys chtěl přidat další, třeba běhoun 5x2m, nebo něco chlupatého pod nohy u gauče, budeš muset tyto menší koberce položit NA ten velký, a tak část z něj neuvidíš, i když fyzicky tam bude.
Všetkému rozumiem len tomuto nie. Prečo pri adresovaní pamäte grafiky - GDDR sa jej adresný priestor mapuje (zdieľa) cez normálnu RAMku? Ved práve nato tám tá grafika tu pamäť má, nie? Aby nezaťažovala svojim "grafickými" dátami hlavnú operačnú pamäť. Iné to je u integrovanej grafiky v CPU, tam chápem, že nemá vlastnú pamäť a tak jej niečo vyhradí OS (alebo BIOS) z operačnej pamäte. Nepomýlili ste sa v tomto náhodou? Lebo logiku to nedáva (aspon mne nie).
Nic sa nezdiela cez RAM. Adresa neni to iste co RAM. Adresa je adresa. RAM je RAM. Su to dve odlisne veci. Vid nizsie som este vysvetloval teraz snad to uz bude pochopitelne.
CPU cez tie adresy komunikuje priamo s HW (napr. priamo s tou grafikou), ne s RAM.
Jasné ale on písal, že:
Takže ked to mám preložiť tak z toho vyplivá, že GDDR pamať tiež adresuje procesor, a preto grafika uberá priestor hlavnej RAM, lebo jej adresný priestor sa mapuje cez hlavnú RAM v sekcií 3,25-4GB ako si písal nižšie....takto som tomu pochopil. A nechápem natom len tomu, že prečo grafika zaberá dáta v hlavnej RAMke ked má nato svoju vlastnú.
On to blbo napisal. Grafika je namapovana na tom adresnom priestore pod 4GB, nema to nic spolocne s hlavnou RAM, hlavna RAM tam neni.
V tom adresnom priestore je okrem ineho aj male okno do RAM grafiky. Tiez to nema nic spolocne so systemovou (hlavnou) RAM.
x86 CPU dokaze adresovat aj viac ako 4GB, na to je prave to strankovanie, a jeho rozsirenie na viac fyzickych bitov nazvane "PAE". Keby to MS neobmedzil tak by vedel aj 32bit OS vyuzit celu fuzicku RAM.
Ten adresny priestor pod 4GB pre komunikaciu s HW z roznych HW dovodov sa nedava nad 4GB, aj keby mohol (u novyeho HW) tak to BIOS dava pod 4GB z dovodu moznosti pouzitia nejakych starych OS apod. ktore by HW nad 4GB nevedeli pouzit.
RAM z tych obsadenych adries pod 4GB je fyzicky (memory controllerom v chipsete resp. CPU) premapovana na adresy nad 4GB, takze 64bit Windows (alebo keby MS chcel tak aj 32bitovy Windows pomocou PAE) moze pouzit celych 4GB fyzickej RAM.
Takze ked mas napr. 4GB fyzickej RAM tak z pohladu SW to vypada zhruba takto:
Adresy 0 - 3,25GB: RAM
Adresy 3,25GB-4GB: rozny HW (konkretne HW na konkretne adresy mapuje BIOS dynamicky pri boote)
Adresy 4GB-4,75GB: RAM (premapovana z adries 3,25GB-4GB). Tuto RAM 32bitovy bezny Windows pouzit nemoze (MS sa tak rozhodol), 64bitovy (alebo serverovy) OS ju pouzit vie.
jinak technická: 8-bity byly osmibity ne kvůli adresní sběrnici, ale kvůli datové. Tedy 8-bity jako C64 měly word dlouhý přesně 8 bitů, z toho taky resultoval počet dostupných instrukcí - 256.
A aby to nebylo ještě málo, tak třeba Motorola MC68000 byl 16/32bitový (16bitový obecně, ale některé registry byly 32bit) procesor s vnější 24bitovou adresní sběrnicí (vnitřní 32bit), takže mohl reálně adresovat max. 16MB RAM, byť samotný CPU dokázal obsáhnout ty 4GB.