linux

linux 

Onderwerp van koen

BEHEERD DOOR:
rdolfijn
Terug naar de lijst
  1. WilM
    Wa?

    Toon alleen de berichten van WilM
    quote:
    Dit schreef rdolfijn
    in principe is het mogelijk b.v. een 64 bit versie op een 32 bit computer te installeren. oudere computers kunnen vaak alleen op 32 bit werken
    installeer je daar een 64 bit versie op is de kans groot dat je letterlijk iets opblaast.

    Er zijn weinig zekerheden in het leven. Een van de zekerheden die je w?l hebt, is dat het niet mogelijk is een 64-bits OS te installeren op een 32-bits (x86) CPU. Punt. En 64-bits software op een 32-bits OS? Vergeet het maar. Gaat ook niet werken. Punt. Je hardware ermee opblazen zal je niet gaan lukken, want de software wordt al niet eens gestart. Ik ben het dan ook met Koen eens dat die hardware toch al wel het loodje zou hebben gelegd.

    Als het je gelukt is een 64-bits OS (welk OS dan ook) te installeren op een 32-bits computer, dan was het dus stiekem toch een 64-bits computer. De laatste 10-12 jaar worden er geen CPU's (voor gebruik in PC's) meer gemaakt die geen 64-bits instructies ondersteunen, dus je computer zou dan wel heel oud moeten zijn. Wel is het zo dat tot een paar jaar geleden heel veel computers nog met een 32-bits besturingssysteem werden geleverd; dit heeft bij veel mensen de indruk gewekt dat ze 'slechts' een 32-bits computer hadden. Er waren destijds ruwweg twee redenen om een 32-bits OS (met name Windows) mee te leveren: ten eerste waren computers met meer dan 4 GB geheugen niet gangbaar (want het geheugen was daar nog te duur voor) en had het geen nut om 64-bits software te gebruiken. Ten tweede was er nog veel 16-bits software in omloop, en die werkt niet meer op een 64-bits Windows (althans, niet zonder kunstgrepen). De gemiddelde gebruiker w?lde dus eigenlijk helemaal geen 64-bits Windows, alleen wist hij dat zelf niet. Smile

    In theorie (!) zou het mogelijk moeten zijn om een emulator te schrijven die 64-bits software uitvoert op een 32-bits machine. In de praktijk is dat echter onhaalbaar. Ten eerste zou de software ontzettend traag worden, doordat alle 64-bits instructies moeten worden afgevangen en afgehandeld door de emulator. Daarnaast moeten alle 64-bits adrespointers worden omgezet naar de 32-bits adresruimte. En als snelheid geen issue is dan gaat het nog niet werken, omdat niet alle 64-bits instructies kunnen worden afgevangen in software. Die komen dus bij de CPU terecht, maar die kan er niet mee omgaan en geeft een 'invalid instruction' of 'invalid opcode' exception (wat zich onder Windows vertaalt naar het welbekende Blue Screen of Death).

    Normaal gesproken zou het andersom (32-bits software op een 64-bits CPU) ook niet werken, ware het niet dat 64-bits CPU's ontworpen zijn om te kunnen omgaan met 32-bits en 16-bits instructies. Die hebben dus eigenlijk al een emulator on-board zitten. Officieel heet de architectuur dan ook x86_64, oftewel de 64-bits versie van de x86-instructieset.

    H?, schreef ik nu net dat de CPU 16-bits instructies ondersteunt, maar dat een 64-bits Windows geen 16-bits software kan uitvoeren? Dat klopt. Eigenlijk kan een 64-bits Windows zelfs geen 32-bits software uitvoeren. Dat komt omdat de CPU weliswaar die instructies ondersteunt, maar niet direct, vanwege andere pointer sizes en dergelijke. Het OS moet dat soort dingen wegabstraheren. Onder Windows gebeurt dat door een softwarelaag die WOW heet (Windows on Windows) en die 32-bits instructies/adressen emuleert naar 64-bits (door middel van 'thunking' en 'shimming' als je het per se wilt weten). Of 16-bits instructies naar 32-bits instructies als je een 32-bits Windows hebt. Echter, met 64-bits Windows-versies wordt alleen maar WOW32 meegeleverd. Wil je 16-bits software draaien, dan moet je met aparte emulators werken, of een 32-bits OS in een virtuele machine draaien (wat in het geval van Windows onvoordelig is, omdat het je een extra Windows-licentie kost).

    Ik heb dit verhaal weliswaar geschreven vanuit een Windows-oogpunt, maar voor Linux geldt eigenlijk hetzelfde: op een 64-bits Linux kun je geen 32-bits software draaien, tenzij je een compatibiliteitslaag (multiarch/multilib) installeert. En, om het nog maar eens te herhalen, 64-bits software op een 32-bits computer/OS kun je gevoeglijk op je buik schrijven.

    quote:

    heb 3 wifi kaartjes liggen met zwarte plekken Smile (door mijn oudste zoon die dacht toch echt dat het 5GHz kaarten waren)

    Dat heeft dan weer niets met 32/64-bits te maken. Gewoon een kwestie van je hardware oversturen met je software. En als die hardware daar niet tegen beveiligd is, heb je kans dat er (letterlijk) rooksignalen uit je computer komen.
Terug naar de lijst