A “NUXI-probléma” eredete – egy kis számítógépes történelem

A napokban felröppent a hír, miszerint a Xorg szerverben megszűnik a byte-swapping.

Ezt egyébként az egyik Red Hat senior fejlesztő, Peter Hutter vetette fel, az erről szóló bejegyzés az alábbi linken olvasható: http://who-t.blogspot.com/2023/01/x-servers-no-longer-allow-byte-swapped.html

A bejegyzés lényege röviden:

Manapság egyre ritkábban lehet egy Big Endian hosttal találkozni, de még ritkábbban fordul elő, hogy egy olyan X-klienst futtasson, amely a helyi little-endian X-kiszolgálóhoz csatlakozik. Azt hiszem, az egyetlen rendszeres valós felhasználási eset erre az s390x-en futtatott X-kliens, amely a helyi inteles (és így little endian) munkaállomásodhoz csatlakozik. Ez nem olyasmi, amit a legtöbb felhasználó rendszeresen csinál. Tehát jelenleg a byte-cserélő kód főként egy szabad támadási felület, amit a felhasználók 99%-a soha nem használ semmi valós célra. Szóval… ne tegyük ezt?

Most nyilván sokan kérdezik teljes joggal, hogy ez mit akar jelenteni.

A bájt-sorrend az informatika egyik sarokköve és ennek ellenére valahogy mégis nagyon ritkán beszélünk róla, pedig ehhez kapcsolódik az operációs rendszerek talán egyik legmulatságosabb legendája, de ehhez először is tisztáznunk kell pár alapfogalmat.

Mi is az a bájt-sorrend?

Azt mindenki sejti, hogy az informatikában az adatok tárolása és továbbítása nem ész nélkül történik, bár ezt hajlamosak vagyunk könnyen elfelejteni és sokan úgy gondolják, hogy mint egy táblás játék esetén, kis golyócskákat teszünk egymás mellé a tálkákba egymás után és ennyi.

A lényeg pedig éppen itt van elrejtve, ugyanis a bájtok tárolása és kiolvasása is szigorúan meghatározott módszer szerint történik. Aki már programozott valaha, annak ismerős lehet az integer kifejezés és az ASCII karakter ami tipikus egész bájtot jelent és sokszor nem is adunk meg semmilyen egyéb paramétert, a számítógépes rendszerünk úgymond magától tudja, hogy meddig tart és hogy  hogyan is kell automatikusan majd kiolvaasni és összerakni a kapott értékeket.
Ezt hívjuk úgy angolul, hogy endianness, vagyis bájtsorrend.

Egy kis érdekesség, az eredeti angol kifejezés az endianness egy utalás arra a háborúra, amely a két szemben álló csoport között zajlik, akik közül az egyik szerint a lágytojás nagyobb végét (big-endian), míg a másik csoport szerint a lágytojás kisebb végét (little-endian) kell feltörni. Erről Jonathan Swift ír a Gulliver utazásai című könyvében.

A témáról bővebben a Wikipédián az alábbi linken olvashatunk: https://hu.wikipedia.org/wiki/B%C3%A1jtsorrendblank

Byte-swapping

A cikk elején említett byte-swapping lényegében egy olyan technikai megoldás, ami lehetővé teszi számunkra, hogy egy teljesen más architektúrára, mondjuk PowerPC -re megírt programunk helyesen működjön az Inteles asztali számítógépünkön, tehát helyes sorrendben olvassa ki az adatokat, a gép endian módjának megfelelően.

A kapcsolódó szócikk: https://en.wikipedia.org/wiki/Endianness#Byte_swapping

A “NUXI-probléma”

A problémának adott elnevezés jóval az internet előtti időkből származik, akkoriban a távközlés lassú volt és az adatátvitel a kor divatja szerint mágnesszalaggal történt, tehát adatátvitelről beszélünk, de nem egy internetes hibára utal a kifejezés.

Arról a hibáról kapta a nevét, amelyet a konzolon észleltek a Unix V6 portjának indításakor az Interdata 7/32 számítógépen.
A portolást két helyen, a Bell Labs-ben és a Woolongongi Egyetemen egymástól függetlenül végezték.

A teljes történetet az UW port veteránjától az alábbi linken olvashatjuk el: http://bitsavers.informatik.uni-stuttgart.de/bits/Interdata/32bit/unix/univWollongong_v6/miller.pdf

A Unix kifejlesztése eredetileg a  PDP/11 számítógépre készült, ami little-endian, a port fordítás célrendszere pedig big-endian metódusú volt, így amikor a Unix V6 elindult, a konzolon a következő üzenetnek kellett volna megjelennie:

UNIX V6…

ami így jött ki:

NUXI…

Nyilvánvaló, hogy a C karakterláncok fordítóprogram által generált kódjában a szavakon belüli bájt-sorrendre kellett egy javítást alkalmazni.

Azt konkrétan nem tudni, melyik csapat találkozott először ezzel a tünettel, de a történetet Piers Laudernek tulajdonítják, aki akkoriban a Sydney-i egyetem Basser Dept. of Computer Science Unix guruja volt.

A PDP/11 számítógépről részletesen:
https://hu.wikipedia.org/wiki/PDP%E2%80%9311

Az Interdata 7/32 számítógépről bővebben:
https://en.wikipedia.org/wiki/Interdata_7/32_and_8/32

 


Továbbra is várunk mindenkit nagy szeretettel csevegő oldalunkon élőben:
https://skamilinux.hu/chat/

Aktív fórum témák:
https://skamilinux.hu/phpBB3/search.php?search_id=active_topics

Legutóbbi PuppySzoftverek:
https://sourceforge.net/p/puppyszoftver/activity

Vélemény, hozzászólás?

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük

Translate »