neprijemna-omezeni-sveta-pocitacoveho
Zábava Článek Nepříjemná omezení světa počítačového

Nepříjemná omezení světa počítačového

Michal Rybka

Michal Rybka

24. 1. 2009 01:00 82

Seznam kapitol

1. Restrikce od počítačového pravěku 2. Vistou proti limitům

Nemám rád limity. Nebo, celou větou - nemám rád omezení žádného druhu, počínající nutností nosit do určité společnosti určitý ohoz a konče jakýmkoliv omezením svobody slova. V počítačovém světě je ale možné vše, co budete jenom chtít, ne-liž pravda? Přesto právě průmysl komputerový, jeden z nejkreativnějších, nejprogresivnějších a nejsvobodomyslnějších, je plný limitů a všech možných typů omezení.

Reklama

Pro mě, svého druhu starou počítačovou strukturu, představovalo první zásadní omezení 64 KB, adresační prostor běžných osmibitových počítačů. Osmibitový počítač disponoval osmibitovou datovou sběrnicí, schopnou operovat s čísly 0 - 255. Adresování bylo na konci sedmdesátých let omezeno šestnáctibitovou sběrnicí adresovou, která dovolovala adresovat přesně 2^16, neboli 65536 osmibitových paměťových buněk. Na konci sedmdesátých let, kde 1 KB paměti představoval masivní paměťový prostor, se zdálo, že šestnáctibitová paměťová sběrnice je více než dosti. Ostatně první opravdu levný domácí počítač, Sinclair ZX-81, byl vybaven v základním provedení právě 1 KB paměti RAM. Překrásný a superkompaktní stroječek sira Sinclaira využíval v základním vybavení překrásných 1024 paměťových buněk o 256ti možných hodnotách pro vše - pro program, data, zásobník i obrazovku. Napsat program, který vylezl z paměti, nebyl žádný problém, stačila na to méně než jedna obrazovka kódu. Protože 1 KB RAM byl nesmírně limitující, ihned byl davům nabídnut rozšiřující modul s omračujícími 16 KB extra paměti, takže po rozšíření (a doplacení peněz, které opticky snižovaly základní cenu počítače) bylo možné se strojem něco doopravdy dělat.


Je libo celých 64KB?

S minimálním odstupem se objevily osmibity, které nabídly "maximum adresovatelné paměti", tedy 64 KB RAM - ale ihned se jasně demonstroval základní problém, který nás pronásleduje dodnes: Protože počítač dovoluje adresovat určitý konečný prostor paměti, jakákoliv pevná paměť či zařízení, které využívá pro ovládání mechanismus mapování do paměťového prostoru, instantně z adresačního prostoru ujídá.

Nepříjemná omezení světa počítačového
i Zdroj: PCTuning.cz
Nepříjemná omezení světa počítačového
i Zdroj: PCTuning.cz

Bylo celkem fér, když další počítač, ZX Spectrum, jasně deklarovalo, že má 48 KB RAM - 16 KB z maximálního adresačního rozsahu totiž zabírala paměť ROM. To takový Commodore 64 se honosil pamětí o krabicově větším rozsahu, plných 64 KB, ale po startu vám radostně oznámil, že je "38911 BYTES FREE". Kus adresačního prostoru si vzala ROM, kus systémové proměnné, buffery a další věci. A pokud jste chtěli využívat celou paměť, museli jste kouzlit. Další osmibity, které se honosily kapacitami paměti od 72 KB do 512 KB, musely využívat všelijaké složité triky, jako přepínání paměťových bank, které byly docela náročné. Obvykle jste museli udělat nějakou instrukci OUT, která donutila hardware vyměnit stránku v paměti (16 nebo 32 KB) za jinou. Pokud se váš kód nacházel zrovna v oblasti přepínané stránky a vy jste si nechali stránky přepnout, mohli jste okamžitě vybourat tím, že jste omylem procesoru podstrčili místo kódu data. Hledání chyb, jako třeba odstránkování si kusu zásobníku, který vám vlezl do rozsahu přehazované paměti, byly docela nechutné - a programování zahrnovalo i plánování, co v které stránce bude, kam dáte kód a co kde naopak být nesmí. Nebylo to příjemné, ale šlo o překročení, abych tak řekl, přirozených schopností procesoru - a tak byl člověk rád za každý byte navíc, byť vyžadoval provádět programátorskou kamasutru.



A co takhle 4GB?

Situace začala být krapet nepochopitelnější s příchodem další generace systémů, kde omezení daná hardwarem ustoupila do pozadí a začala se objevovat jiná, řekl bych spíše "koncepční", omezení. Šlo o to systém nějak zlevnit, čili snížit počet nutných drah na sběrnici, zjednodušit logiku řízení a podobně. 32ti bitová adresová sběrnice by nabídla v tehdejší době zcela omračujících 4 GB, to všem připadalo přehnaně moc, 16 bitů je zase málo, takže co zkusit třeba 20 bitů? Nebo spíš 22 bitů? A nebo ještě kapku přidat na 24 bitů? To dává přece krásný a praktický 1 MB, naddimenzované 4 MB, respektive těžko dosažitelných 16 MB! S postupem času se vždy zjistilo, že "rozumně nastavená mez", oněch pověstných "640 KB by mělo stačit každému", nebyla nastavená nikdy rozumně. Nikdy to nestačilo, vždy uplynuly dva-tři roky a nabourali jste na další limit. Speciálně Microsoft a PC byly pro posměch všech "jiných" počítačových kruhů, které se jen výborně bavily nad různým plácáním se se segmenty a offsety, které dovolovaly za cenu neskutečně krkolomného kódování zpřístupnit 1 MB RAM (mínus pořádný kusanec pro paměťově mapovaná zřízení) a v rámci jednoho segmentu byl programátor obšťastněn celými 64 KB paměti v době, kdy jste si s něčím takovým např. na Amize vůbec nemuseli lámat hlavu. Nejeden začátečník byl nesmírně překvapen, když mu po pokusu o alokaci i poměrně zanedbatelného pole o 70 KB počítač oznámil, že není paměť.

A nebo že vytekl zásobník. A nebo něco podobného, i kdy byl onen prográmek v paměti sám a systém vypisoval, že je více než polovina paměti volná. Napsat program, který operoval s velkými daty, to byla akce pro semestrální práci. Nezbývá než vyjádřit obdiv nad heroismem programátorů, kteří obdrželi od Microsoftu nalomený, napůl nahnilý klacek - a přesto s ním v ruce vyrazili dobýt svět. Člověk by skoro čekal, že se tvůrci hardware a software z těchto nepohodlí a trablů poučí a budou se snažit koderům podkopávat nohy opravdu jenom v nejnutnějších, řekli bychom zcela principiálních případech.


Snadno pochopitelným případem je, když máme datovou sběrnici o šíři "m" a můžeme jí tedy najednou protlačiti údaje o rozsahu maximálně 2^m. A nebo když máme adresovou sběrnici o šíři "n" a systém tak může adresovat 2^n paměti. To je celkem jasné a pochopit se to dá. Budeme-li postupovat po dostatečně velkých krocích, například ze 32ti bitů přejdeme na 64 a později na 128, tak to bude v klidu, paměti bude pro danou dekádu vždy dost. Mínus režie na paměťově mapovaná zařízení, pochopitelně, ale to se taky pochopit dá. Nutno podotknout, že zatímco v době vzniku vypadá každý limit jako "nadbytečný", o pár let později to je "tak akorát" a za deset let už se změní ve svěrací kazajku. Pokud dnes vrazíte do počítače 4 GB RAM a nainstalujete 32bitový operační systém libovolné provenience, systém vám oznámí, že máte k dispozici méně než 4 GB RAM, obvykle z něj vypadne něco mezi 2,8 - 3,6 GB. Mechanismus "mizení paměti" je úplně stejný, jako před třiceti lety: Něco překrývá paměťový rozsah grafiky, zvukovky, řadičů a vůbec všeho, co jste si do komputeru nastrkali. Proto vidíte různé hodnoty osazené paměti, každý jinou hodnotu, ale nikdo ony osazené 4 GB. Akvárium je nám už malé a musíme z něj ven!


Nyní, v době přechodu na 64bitové systémy, bychom čekali skok v limitu dosažitelné paměti vskutku obrovský. Pokud v osmdesátých letech byly nějaké jakž takž smysluplné důvody nepřecházet ze 16ti bitového adresování rovnou na 32bitové (kdo by potřeboval 4 GB RAM v roce 1985, že?), nyní najdeme jenom málo důvodů pro omezení. 32bitové operační systémy zatím stále vzkvétají, je jich většina - a přesto úplně běžně koupíte desku, která podporuje 8 GB RAM a pro i7 dokonce 12 GB. Pokud se krapet plácnete přes kapsu, za nějakých 13 tisíc můžete mít desku pro dva procesory, do které nastrkáte 48 GB paměti. Žádat operační systém, který využije dosti paměti, není tedy nijak nesmyslné.



První
Poslední
Reklama
Reklama

Komentáře naleznete na konci poslední kapitoly.

Reklama
Reklama