|
Inleiding |
Enige computer historie is onvermijdelijk |
Wie zijn iets wil leren kennen, kan niet buiten de ontstaansgeschiedenis van om. Kennis zonder historisch perspectief is slechts een weetje. Pas als u weet hoe moeizaam en onder welke omstandigheden iets tot stand kwam, kunt u het waarderen. Dat is de reden waarom rechters naar de feiten en de omstandigheden vragen. De computergeschiedenis is er een van hardware en software. Ik concentreer me hier op de hardware. En wel op die van de IBM PC. De IBM PC is in 1981 geboren. Hij had heel goed een volstrekt ander model kunnen zijn. Maar om toen geldende redenen is hij op een bepaalde manier samengesteld. En wel uit goedkope toen op de vrije markt verkrijgbare componenten. En omdat de IBM PC zo'n succes werd moesten zijn opvolgers hier rekening mee houden. Dit is de kern van het backward compatibility of legacy software/apparatuur probleem. Vooruitgang is goed, maar niemand gooit voor een beloofde verbetering zijn redelijk werkende apparatuur en software meteen weg. Omdat bedrijven en particulieren behoefte hebben aan continuïteit, wordt een al te radicale vernieuwingsdrift niet op prijs gesteld. |
Dos, Windows, OS/2 en Wintel |
De eerste PC was een general purpose computer. Eentje die alles kon. Hij kreeg uiteindelijk Microsofts Disk Operating Systeem DOS als besturingssysteem. Maar hij kon ook andere besturingssystemen draaien. Zeker toen de 16 bits IBM AT versie uitkwam met de Intel 286 processor. In de protected modus van de 286 processor konden echte en minder echte multitaskende besturingssystemen draaien. Een daarvan was het vanuit MS DOS opgestarte 16 bits Windows. Maar IBM en Microsoft werkten ook een 16 bits Operating System/2 (OS/2). De laatste werkte niet in een "alles moet kunnen" coöperatieve modus. En had dus veel meer geheugen nodig. En was dus moeilijker te programmeren. OS/2 werd daardoor minder populair dan Windows. Het was chipfabrikant Intel die de behoefte had aan de verkoop van steeds snellere chips. Chips bestaan uit grotendeels uit hardware, maar er is ook een softwarematig aspect aan iedere chip. Want dat is het deel dat met het geheugen (de software drivers van het besturingssysteem) moet praten. Dit variabele deel wordt in het Read Only Memory (ROM) van de hardware opgeslagen. |
Designed for Windows |
De huidige computergebruikers beschouwen hun PC vaak als een interactief televisiescherm dat "het programma Windows" draait. Ze verwachten dat hun nieuwe computer "het" meteen doet (lees: Windows laadt). De hype is nieuw, sneller en beter. Maar omdat Windows alsmaar trager werd, moest de vooruitgang van de hardware komen. Hardwarefabrikanten moesten zich dus steeds meer in het Windows besturingssysteem specialiseren. Ze staken hun energie in de Windows stuurbestanden en foefjes om de gebreken van Windows hardwarematig op te lossen. Het ene "unieke" model volgde op het andere. En om goedkoop te kunnen produceren integreerden ze steeds meer hardware op het moederbord. Hierdoor nam het aantal vrije PCI sloten nam af. Inmiddels valt het kiezen van de juiste hardware (en stuurbestanden) zelfs voor een Windows gebruikers al niet mee. Voor laptops moet u al vaak het serienummer kennen, om te achterhalen welke chipset er in uw laptopmodel zit. En tegen de tijd dat hiervan een testrapport van uitkomt, is het beoordeelde model al niet meer verkrijgbaar. Vanwege die hoge hardware turnover loont het niet om stuurbestanden voor andere besturingssystemen te schrijven. Het kunnen draaien van Windows is de facto standaard. Als Windows loopt worden elementaire assemblage en BIOS fouten getolereerd: "Designed for Windows" heet dat dan. |
Een PC wordt al na twee jaar afgeschreven. |
Inmiddels leven we in een hardware wegwerpmaatschappij waarin alles acceptabel is, dat maar de laatste Microsoft OEM versie draait. In onze ongeduldige Plug and Play maatschappij willen de consumenten onmiddellijk resultaat. De verwachtingen zijn hoog en de frustratietolerantie is laag. Een PC wordt daarom al na twee jaar afgeschreven. Testers beoordelen slechts het eindresultaat onder de actuele versie van Windows. Aandacht voor legacy problemen en standaardisatie is er niet. |
Windows versus old legacy OS/2
|
Voor velen werd de Windows Desktop synoniem met de personal computer. Dan weet je wat je hebt. De aanschaf van een van tevoren geïnstalleerd Windows only OEM systeem is nog steeds de gemakkelijkste weg. Niet alleen voor de gebruikers, maar ook voor de leveranciers. De "designed for Windows" computers zullen het onder Windows altijd doen. Zelfs als er iets met de stuurbestanden misgaat hoeft de gebruiker nog niet onder de motorkap te kijken. Daar zijn OEM setup programma's, Wizards en andere Windows gebruikers voor die u met een schone installatie verder kunnen helpen. Deze hebben geen boodschap aan hardware compatibiliteits problemen. OS/2 gebruikers zitten in een lastiger pakket. Ze hebben prachtige desktop, maar om die op en moderne computer geïnstalleerd te krijgen moeten ze onder de motorkap kijken en niet zelden meerdere installatiepogingen ondernemen. Enige kennis van stuurbestanden en hardware hoort erbij. |
Composed for OS/2 |
Geroutineerde OS/2 gebruikers zullen hun OEM PC daarom met zorg samenstellen. Want niet ieder randapparaat wordt ondersteund. Ook kunnen ze niet voor iedere klus een ander programma installeren. Anderzijds is OS/2 nog supersnel, virusvrij en een uitstekend leermiddel om bewuster met computers en software om te gaan. U moet zelf meer doen, maar u zult het resultaat ook meer waarderen. Want als u alles maar cadeau krijgt is er na een tijdje ook geen klap meer aan. |
Wie doet wat? |
OS/2 is net als Linux, DOS en Windows een "general purpose operating system". Een algemene doeleinden bedoeld besturingssysteem valt of staat bij de hardware die het ondersteunt en de programma's die erop lopen. Om die reden werd Windows populair. Maar het is niet het enige general purpose operating systeem. Zo dankt Windows het grootste deel van haar huidige succes aan de ruime beschikbaarheid van programma's en stuurbestanden voor hardware. Via agressieve marketing wist Microsoft hard- en software fabrikanten aan zich te binden. Eigenlijk komt alleen het blauwe gedeelte van een "Windows PC" van softwaremakelaar Microsoft. De rest wordt door andere partijen gemaakt. Microsoft laat anderen (business partners) voor zich werken. 32 bits Windows programma's (ISV's) en Desktop (MS) WIN32 API en Windows kernel (Microsoft) Windows stuurbestanden (hardwarefabrikant) Randapparaten (hardwarefabrikant) Het produceren van de stuurbestanden van randapparatuur is een taak van de adapterfabrikant. De besturingssysteem fabrikant levert slechts specificaties en software om stuurbestanden mee te maken. De stuurbestanden die u op de Windows diskettes en CD's ziet komen dus vrijwel altijd van de adapterfabrikanten. Zij hebben er het meeste belang bij dat hun hardware onder uw besturingssysteem (lees: Windows) werkt. Hetzelfde geldt voor de softwareproducenten (independent software vendors, ISV's) die voor de Windows API's schrijven. Ze maakten Windows aantrekkelijker door er software voor te schrijven. En omdat er steeds meer software voor Windows kwam, werd het door meer hardwarefabrikanten ondersteund. Er ontstond een vicieuze cirkel waarbij alles om Microsofts monopoliepositie draaide (Zie: Commerciële software en monopolievorming) Ik benoem dit zo expliciet omdat veel consumenten er nog van uit gaan dat hun besturingssysteem hun de stuurbestanden moet leveren. Om aan die wens tegemoet te komen worden de meest basale stuurbestanden met het besturingssysteem gebundeld en in een installatieprogramma geïntegreerd. Maar als een hardwarefabrikant het vertikt om stuurbestanden voor Linux of OS/2 te schijven, dan moet u de fabrikant daarvoor verantwoordelijk stellen en niet de makers van uw besturingssysteem. Laat staan de makers van open source stuurbestanden die hun best doen om hun besturingssysteem levend te houden. |
|
De IBM PC |
|
> Top < |
Microprocessor |
De PC geschiedenis (PC history) begint met bouwpakketten met Intel microprocessors. Die waren betaalbaar. In de jaren 70 bouwden de eerste computerenthousiasten ALTAIR computers. Een met 4 k werkgeheugen uitgeruste ALTAIR kon Bill Gates programmeertaal Basic draaien. Hiermee had de gewone man een general purpose besturingssysteem. De in het bedrijfsleven gebruikte UNIX minicomputers waren voor hem nog onbetaalbaar (Zie: Van UNIX naar Linux). |
Estridge |
De International Business Machines Corporation (IBM) beschouwde de home computer markt als een onbetekenende niche markt, maar je kon nooit weten. IBM had een afdeling "Entry Level Systems - Small system USA" voor zakelijke computerbeginnelingen. IBM stelde Philip Donald Estridge aan als projectleider van de Entry Level Systems - Small system USA ("responsible for the development of small microprocessor-based systems for 'tiny' business and personal use") en vroeg hem pas terug te komen als hij een goedkoop en werkend IBM systeem had (1980). Estridge kreeg een ruim budget en mocht zich in in Boca Raton, Florida, aan de op de specificaties gerichte bureaucultuur van het IBM hoofdkantoor in New York onttrekken. |
De IBM PC (1981) |
Anders dan IBM gewoon was, stelde Estridge de IBM PC niet uit IBM hardware samen, maar uit vrij verkrijgbare componenten. Achteraf zal IBM hier spijt van hebben gehad. Maar IBM nam de Personal Computer markt niet al te serieus. Middels het IBM BIOS en de PC bus (een verzameling van met elkaar verbonden draden op het moederbord) werden de 8 bits componenten aan elkaar gesmeed. Bill Gates mocht het besturingssysteem verzorgen, want Estridges eerste keus, de geniale maar excentrieke ontwerper van het succesvolle besturingssysteem voor Intel 80xx processors (CP/M,Control Program/Microcomputer) Jerry Kildall had er geen oren naar. Bill wel. En als zoon van een bedrijfsjuriste, wist hij er als geen ander profijt van te trekken (Zie: Programmerende schooljongens leggen fundament voor software-imperium). |
De IBM PC systeembus |
De eerste IBM PC (Model 5150) had nog geen diskettedrive, maar gebruikte cassettes om Basic en assembler programma's via de seriële poort in zijn 16 kB (later 64 kB) hoofdgeheugen te laden. Alle elementen waren op een centrale systeembus aangesloten. In de computertechnologie staat het begrip "bus" tegenover het begrip "point to point". Point to point connecties verbinden slechts één apparaat met een ander apparaat. Bijv. het PPP protocol van uw modem met dat van uw internetprovider. Maar in de low-level omnibus technologie gaat het om het verbinden van een veelvoud van apparaten met elkaar. Bus is een verbastering van omnibus connector. Ook uw modem zal op de PC bus processortijd met de andere apparaten delen. Maar als het beeldscherm niet aan bod komt, ziet u er niets van. De IBM PC-bus bevatte 62 parallelle draden (signaallijnen), die al dan niet onder stroom stonden. Hieronder bevonden zich 20 adreslijnen om 1 MB (2^20 bits) geheugen te adresseren, 8 datalijnen voor 1 byte woorden en regellijnen om de in- en output te coördineren. Aan de hand van de voltages op de signaallijnen wist ieder apparaat (component) wat het moest doen. De IBM PC systeembus was dus 8 bits, liep op 4,7 MHz en had een theoretische bandbreedte van 2 MB/s. Maar omdat alle componenten (snel en traag) op dezelfde systeembus waren aangesloten, moesten er mechanismen zijn om de toegang tot de bus (lees de processor) te reguleren. Anders zouden de relatief snelle componenten (processor, werkgeheugen) voortdurend op de langzame componenten (diskette, modem) moeten wachten. Vergelijk het met een autosnelweg waar je liever ook geen fietsen en tractoren ziet. Maar er waren toen nog geen parallelwegen voor langzaam verkeer, zoals op de huidige local bus en PCI systemen. Alles transacties verliepen via dezelfde (systeem)bus. |
De BIOS booststrap routines en het booten. |
Om de PC aan de praat te krijgen, heeft de processor programmacode nodig. Waar moet hij die vinden? In het het altijd aanwezige PC BIOS. De eerste instructies die een Intel processor leest bevinden zich op het adres FFFF:0000 BIOS ROM. Vanaf hier worden de routines van het bootstrapproces uitgevoerd: een systeem en lage geheugentest, een speurtocht naar adapter ROM, het uitvoeren van de code van het gevonden adapter ROM, een inventarisatie van de op de bus aangesloten systeemcomponenten en een test van het hele systeem. Tijdens de Power On Self Test (POST) worden eerst de meest basale PC bestanddelen getest: de processor, het ROM, de DMA en interrupt controllers, het BASIC ROM en de videocontroller . Daarna zoekt de BIOS bootstrap code naar het ROM van de insteekkaarten in het 768-960 K gebied. Ieder adapter ROM begint met hexcode 55AA gevolgd door de grootte van zijn ROM segment gedeeld door 512. Daarna volgt de programmacode van de het ROM in de kaart. Als deze zelftestjes uitgevoerd wordt ziet u meestal leds aan en uit gaan. Na de initialisatie van de adapter wordt de besturing weer aan het PC BIOS doorgegeven dat vervolgens de BIOS routines van de overige adapters afwerkt. Maar als ook maar een adapter disfunctioneert zal het bootstrapproces hier ophouden. Daarna worden weer testen uitgevoerd. Die kunnen bij langzame perifere apparaten als een diskette station lang (minuten) duren. Achtereenvolgens worden de CRT interface, het werkgeheugen, het toetsenbord, de cassette interface (voor tapes), het diskettestation en de seriele en parallele poorten. Als laatste wordt de besturing aan het boot record op het opstartmedium overgedragen. Spoedig daarna zal het besturingssysteem de controle van het BIOS overnemen. |
Werkgheugen en de processor |
Het werkgeheugen (Random Access Memory, RAM) bevat de code en data waar de processor meteen iets mee kan doen. Het is te vergelijken met ons korte termijngeheugen. Zodra iets in ons korte termijngeheugen geladen is ("in het hoofd zit"), is het toegankelijk en kunnen we er wat mee doen. Bijvoorbeeld de rekensom "3 + 4 =" uitvoeren. De processor laadt hiertoe de aan hem gepresenteerde programmacode (optellen) en de gegevens (getallen) in zijn instructie- en dataregisters en voert het resultaat in een uitvoerregister uit. De uitslag wordt meestal weer aan het werkgeheugen teruggegeven en verschijnt daarna bijvoorbeeld op uw scherm. |
Langzaam geheugen |
Het werkgeheugen (primair geheugen) wordt gevoed door en voedt de informatiedragers die niet meteen toegankelijk zijn (secundair geheugen): blokapparaten als diskettes en vaste schijven en seriële apparaten. Ook het ROM hoort hiertoe, maar uw beeldscherm hoort hier niet bij. Dit langzame geheugen is te vergelijken met ons lange termijn geheugen. We moeten onze herinneringen apart naar voren halen. Het verleden staat niet zomaar tot onze beschikking. En zo is het ook met de gegevens op uw vaste schijf gesteld. Vaak moeten we bewust zoeken. Hiervoor gebruikt de PC de via het werkgeheugen "bewust" aangestuurde opvraagmechanismen die uw data en programma's zoeken en vinden. |
Programmacode |
In het "3+4 =" voorbeeld van hierboven heeft de processor de rekensom zo opgelost. Het is zijn specialisme. Ook de programmacode van "3+4 = " stelt niets voor. Het is maar een regel tekst. Het meeste werk zit hem in de in- en uitvoer van de data. Oftewel dat u via processor aan de randapparatuur duidelijk kunt maken wat u wilt en ook het resultaat tot uw beschikking krijgt. Zie hiervoor: A Collection of Assembler Hello World Programs. |
Trage in- en uitvoerapparaten |
Maar de hiervoor benodigde in- en uitvoerapparaten zijn traag. En zij bepalen de meeste instructies. Een processor die aldoor op de randapparatuur moet wachten, besteedt dus de meeste tijd aan het wachten. Om de processortijd beter te kunnen benutten werd de Input/Output hulpprocessor uitgevonden. Deze DMA controller is gespecialiseerd is in de transportperikelen van de processor. Hij nam de I/O taken van processor over. Hij was niet snel, maar kon wel wachten, zodat de processor dat niet meer hoefde te doen. De DMA controller werd de secretaresse van de processor. |
IBM PC architectuur |
|
DMA |
Het Direct Memory Access (DMA) mechanisme maakte het mogelijk dat perifere componenten gedeeltelijk buiten de processor om van en naar het werkgeheugen konden schrijven. Hierdoor hoefde processor niet meer op de trage in- en uitvoeracties van randapparaten te wachten. De processor initieerde de acties en sloot ze af, maar het eigenlijke bustransport werd aan de hardware van de bus (bus en DMA controller) en perifere apparaten (bijv. de diskette controller) overgelaten. De processor (lees: software) bepaalde de specificaties van de I/O transactie (doe dit hier en dat daar), maar liet de feitelijke werk aan de DMA controller (lees: I/O processor) over. Zie ook: Bus Oddessy 2001 : over het gebruik van DMA in IBM computersystemen. |
Interrupts |
De Intel 8259 Interrupt Controller fungeerde als een soort bel voor de processor en het besturingssysteem. Als de bustransactie klaar was gaf het apparaat dat via een Interrupt Request aan de processor en het besturingssysteem door. Tussendoor kon de processor zich met andere zaken bezig houden. Die bestonden vooral uit het afhandelen van het rekenwerk van de in het geheugen geladen programma's, maar ook uit het reageren op de interrupts van andere apparaten zoals het toetsenbord en de software interrupts van het besturingssysteem. In het voorbeeld hiernaast (IRQ load 13%, CPU user load 53%) gaat het om een backup via het netwerk waar in ieder geval de interruptlijnen van de ethernetkaart en de IDE schijf betrokken waren. Maar ook de vga kaart gebruikt een interrupt om de voortgang op het beeldscherm te tonen. Ondertussen kon de auteur probleemloos met andere zaken bezig zijn. Bijv. met het schrijven van teksten, het ontvangen van televisie of het draaien van muziek. En natuurlijk het maken van dit plaatje. Estridge kon het nog niet voorzien, maar met name op het gebied van de multimedia bleek de "interrupt driven" PC architectuur een kanjer te zijn. Snelle 32 bits PC besturingssystemen als OS/2, Windows en BEOS zijn nog steeds "interrupt driven" besturingssystemen. De belangrijkste zaken worden door de hardware (processor, bus en controllers) met behulp van het BIOS geregeld. Het besturingssysteem faciliteert, maar laat al het bulkwerk en een groot deel van de coördinatie aan de hardware over. Vandaar ook het succes van het technisch weinig voorstellende DOS en 16 bits Windows. Door verfijning van deze technologie (pre-emptive multitasking, 32 bits API's, snellere drivers) en een enorme specialisatie van de hardware (snellere bussen, videokaarten, MMX) wisten de 32 bits Windows opvolgers de UNIX minicomputers en werkstations van de markt te verdrijven. |
Het IBM PC BIOS (1981) |
Op de eerste Personal Computer van IBM speelde het in assembler geschreven Basic Input Output Systeem (BIOS) een kardinale rol. De IBM PC was uit vrij op de markt verkrijgbare onderdelen samengesteld. In zekere zin gold dat ook voor het besturingssysteem DOS. Maar het IBM PC BIOS en de IBM PC bus hielden dit zootje ongeregeld bij elkaar. En nog steeds, maar nu wordt het meer als een probleem (legacy probleem) gezien. Bij het starten van de computer werd het BIOS vanaf Read Only Memory geladen, deed wat controles op de hardware en laadde het besturingssysteem. Het Disk Operating System (DOS) regelde de toegang tot het diskette bestandssystem FAT, laadde een shell (command.com) en beheerde het geheugen. Maar de functies van de huidige stuurbestanden zaten in het BIOS. Zo was het mogelijk dat programma's buiten DOS om de BIOS routines gebruikten om de hardware te benaderen. Dat moest ook wel, want de DOS Application Programmers Interface (API) stelde maar weinig voor. En de DOS "kernel" was een noodzakelijk kwaad. Programma's en shell (DOS API) DOS "kernel" (Stuurbestanden) ---------------------------------- IBM PC BIOS (en adapter ROM) Hardware controllers op de PC-bus
|
Intermezzo: hoe hard is hardware? |
Let wel: "Hardware" bevat zowel software (ROM, EPROM) als hardware poorten. Zelfs een "processor", kan geheel en al uit software bestaan. Voorbeelden zijn emulatoren als VPC en de Java "RISC" processor op het Intel platform en de verschillende adapterkaarten met dezelfde chip. Anderzijds kan een compleet besturingssysteem op een insteekkaart zitten (Acorn OS, Java-chip, PCI routers). De grenzen tussen de hard- en software zijn niet zo scherp. Vrijwel alle hardwarecomponenten (inclusief processors) bevatten een- of meermalig programmeerbare software-onderdelen die de lijmfunctie vervullen van het BIOS ROM. De in de hardware controllers aanwezige geïntegreerde circuits (IC's) zijn hard, maar het ROM, EPROM en andere programmeerbare geheugenchips verlenen de hardware hun flexibiliteit. Ze maken het verschil uit tussen verschillende producten van dezelfde chip. De voor de perifere adapterkaarten geschreven stuurbestanden hebben meestal direct contact met de snelle hardware poorten voor het ruige werk en met programmeerbare software poorten voor de configuratie. |
Schaduwgeheugen, BIOS emulatie, BIOS limitaties |
Om de toegang tot het BIOS te versnellen werd het op 1 MB systemen in het hoge geheugen geladen (schaduwgeheugen). Later vervingen de in het werkgeheugen geladen stuurbestanden en kernel API's de BIOS routines volledig. Multitasking PC besturingssystemen zoals het 16 bits OS/2 1.0 moesten het BIOS wel emuleren, om rechtstreekse benadering van de hardware door elkaar beconcurrerende programma's te voorkomen. En op een modern 32 bits besturingssysteem fungeert het BIOS eigenlijk alleen nog maar als startmotor van het besturingssysteem. Maar die startmotorfunctie geeft nog wel BIOS limitaties bij het booten. |
IBM PC/XT (1983) |
In 1983 bracht IBM de EXtended Technology PC reeks uit. Deze XT PC's konden meer geheugen (64-256, resp. 640 kB) aan, bezaten een diskette drive en latere versies kwamen met een 10-20 MB vaste schijf (PC XT - Model 5160). De snelste bezaten een 80286 processor. Maar de bus bleef 8 bits. |
|
De IBM PC/AT en klonen |
|
> Top < |
IBM PC/AT (1984) |
In 1984 introduceerde IBM de 16 bits PC/AT (Advanced Technology) voor de Intel 80286 processor. De PC/AT bus had extra adresseringslijnen om 16 MB RAM te kunnen adresseren. Extra geheugen werd via een insteekkaart bijgeplaatst. Maar de Advanced Technology (AT) bus bleef in veel opzichten een compromis. Want deze bus moest zowel oude 8 bits PC-bus als nieuwe 16 bits AT (later als ISA bekend staande) insteekkaarten bedienen. Om die reden kwam er naast de XT hoofdconnector met 62 contactpunten voor oude PC kaarten een extra randconnector met 36 pinnen voor nieuwe AT compatibele randapparatuur. Maar vanwege de compatibiliteit werd de bussnelheid niet wezenlijk veranderd. Om de 8 bits kaarten niet te verwarren werden de 8 extra IRQ kanalen voor de 16 bits AT bus kaarten, achter IRQ2 verstopt ("cascade"). Hetzelfde gebeurde met DMA kanaal 4 |
DE PC/AT klonen |
Om de adapterfabrikanten aan te moedigen om randapparatuur te maken voor de PC/AT had IBM de specificaties van de AT bus goed gedocumenteerd. IBM's PC-AT Technical Reference was zo gedetailleerd dat die fabrikanten de volledige functionaliteit van de IBM PC/AT in hun klonen wisten na te bootsen. De PC/AT bus kon in licentie worden gebouwd en het IBM PC BIOS werd via reverse engineering door Compaq nagebootst (1982). Tevens ontstonden er alternatieven voor DOS. Dankzij deze concurrentie zakte de prijs van de PC's en daalden de winstmarges van IBM. Vooral Microsoft en Intel profiteerden hiervan. |
Structuur |
Softwarematig zag het er nu zo uit: Programma's en shell DOS besturingssysteem of DOS klonen Stuurbestanden IBM PC compatibel BIOS Hardware controllers van randapparaten op de ISA bus |
Legacy probleem |
Maar hardwarematig bleef veel bij het oude. Dit staat bekend als het legacy probleem: om de compatibiliteit met oude apparaten en programmatuur te waarborgen, bleef de PC architectuur in hoofdlijnen gelijk. Met het BIOS op een centrale plaats. En dat betekent 32 bits besturingssystemen op het gebied van geheugenadressen, interrupt requests, DMA kanalen, COM poorten e.d. aan de oorspronkelijke PC specificaties gebonden waren. Intel volgde die lijn door haar processors steeds compatibel te laten zijn met de 8086 chip (real mode emulatie). |
|
Micro Channel Architecture |
|
> Top < |
MCA (1987) |
IBM realiseerde zich dat het met het vrijgeven van de IBM PC en AT specificaties veel te vrijgevig was geweest. Via de introductie van de PS/2 met een snelle en door vele patenten beschermde Micro Channel Architecture (MCA bus) probeerde IBM zijn monopolie te herstellen. De op 10 MHz lopende MCA bus bevatte belangrijke verbeteringen zoals IRQ sharing, DMA busmaster control en kon datasnelheden van resp. 20 en 40 MB/s in resp. de 16 en 32 bits PS/2 modellen behalen. De hardware kon softwarematig worden geconfigureerd. Maar er waren nieuwe hardware en stuurbestanden nodig om deze bus optimaal te kunnen gebruiken. |
|
De Industry Standard Architecture (ISA) bus |
|
> Top < |
ISA |
Al eerder ontwikkelden de klonenbouwers onder leiding van Compaq een met de IBM PC/AT bus compatibele Industry Standard Architecture (ISA) bus. Deze niet door patenten beschermde ISA bus kon zowel goedkope oude 8 bits PC-bus als nieuwe 16 bits AT-bus hardware aan. IBM's snelle, maar dure PS/2 Micro Channel Architecture flopte. ISA bleef de standaard totdat Windows 98 met USB ondersteuning kwam. Ook de PCI systemen bleven via een PCI-ISA brug de ISA bus ondersteunen. Maar in 1999 besloten Intel en Microsoft ook die ISA ondersteuning te laten vallen ten gunste van USB. Hoewel de legacy ondersteuning voor LPT en COM poorten nog gangbaar is, komen er momenteel nauwelijks nog PCI moederborden op de markt met vrije ISA sloten. |
EISA (1998) |
Voor de 386 PC's werd de 16 bits ISA bus uitgebreid naar 32 bits Extended Industry Standard Architecture (EISA) bus. De EISA bus beschikte over veel eigenschappen van de dure MCA bus: 32 bits datapad, een 32 bits (4 GB) geheugenadressering, veel I/O adressen, busmastering en een software setup zonder DIP switches. Maar om compatibel te zijn met de ISA hardware liep de EISA bus maar op 8,33 MHZ. Hierdoor moest de processor tijdens de benadering van de systeembus steeds zijn werktempo vertragen. Inmiddels beschikte het geheugen over een snelle op kloksnelheid lopende (local) 32 bits geheugenbus, maar voor de videokaart en de netwerkkaarten moesten 25 MHz processors het met een 8,33 MHz transportmiddel doen. De (E)ISA bus werd dus de flessenhals van het systeem. Er zijn dan ook weinig EISA kaarten gemaakt. |
Locale bus (1992) |
Op de eerste PC's liep het op de systeembus aangesloten geheugen op kloksnelheid van de bus. Dus op 4,77 MHz op de XT, op 6 MHz op de eerste AT en op 8,33 MHz op de ISA bus. Hierdoor moesten processors die sneller waren als de systeembus altijd klokcycli wachten om het op de omnibus aangesloten geheugen te kunnen benaderen. Dat was niet efficiënt. Maar in 1985 kwam Compaq met een Deskpro 286/12 uit die op 12 MHz liep, waar wel 8 MHz ISA apparaten op aangesloten waren. De truc was dat Compaq een apart ingebouwde "lokale" 12 MHz bus gebruikte tussen het geheugen en de processor en een ISA bus voor de verbinding met de rest van de apparaten. Andere computerbouwers volgden met hun eigen versie van een lokale (geheugen)bus. Hierdoor konden de 32 bits 386 en 486 processors via een lokale (proprietary, lees dik gepatenteerde) snelle bus data van en naar het geheugen schrijven. |
VESA local bus (1992) |
Ook bij het lokale (nauw op de processor aangesloten) busconcept kwam behoefte aan standaardisatie. Dit omdat de videokaarten door hierin gespecialiseerde derde partijen geleverd werden. Omdat de processors en het door hen benaderde geheugen sneller werden, moest ook de videokaart sneller lopen dan de 8,33 MHz EISA bus. Dat was in een 32 bits grafische omgeving van groot belang omdat de processor het grootste deel van de tijd bezig was met de opbouw van het beeldscherm. Om een op 25 of meer MHz lopende 32 bits processor niet meer op de flessenhals van een 8,33 MHZ lopende 16 bits ISA bus te laten wachten moest het lokale bus concept dus ook op de videokaart worden toegepast. Op 486 en Pentium systemen heeft de processorgebonden Video Electronics Standards Association (VESA) Local Bus (or VL-Bus) tijdelijk stand gehouden. Deze 32 bits locale bus liep op de kloksnelheid van de 486 PC of op de halve kloksnelheid van de eerste Pentiums. Zoals de naam al aangeeft was hij vooral bedoeld om de bandbreedte videosnelheid op te krikken. Maar er is ook enige andere hardware voor gemaakt. |
|
Bandbreedte: the need for speed |
|
> Top < |
Bandbreedte |
Bandbreedte is de hoeveelheid data die een apparaat per tijdseenheid verwerken kan. De capaciteit van een snelweg hangt van het aantal verkeersbanen en gemiddelde snelheid af. Nu vervoert de 16 bits ISA bus maximaal 2 bytes per klokcyclus (een byte=8 bits) over 16 datalijnen. Maar omdat de processor naar een kloksnelheid 8,33 MHz moet overschakelen voor benadering van de bus, is de maximale bandbreedte van de ISA bus maar 16,7 MB/s. De eveneens op 8,33 MHz lopende 32 bits (4 bytes) EISA bus komt op het dubbele uit: 33,3 MB/s. |
Benodigde bandbreedte |
Maar een in 24 bits per pixel kleurdiepte (3 bytes) schermbeeld op een 1024x786 pixels groot beeldscherm (resolutie) bevat al 3 maal 1024 maal 786 is 2,25 megabyte aan data. Als dat met 30 schermen (frames) per seconde getoond moet worden, is de benodigde datasnelheid 256*1024*786*30 bytes/s is 6181355520 bytes/s. Maar in de VESA praktijk zal het om 72 beelden/s of meer moeten gaan. En dan houden we nog niet eens rekening de overdracht van de data van het bronbestand (vaste schijf, CD, DVD) naar het geheugen, waardoor de benodigde bandbreedte moet worden verdubbeld tot 135 MB/s. En dan hebt u nog geen geluid. Ergo: een 16 bits AT bus voldoet niet. |
|
Theoretische bandbreedte van enige gangbare bussen apparaten |
Bandbreedte |
Breedte |
Effectieve* Snelheid |
Auto configuratie |
|
|||||
|
8 bit ISA bus |
8 MB/s |
8 bits |
8 MHz |
Nee |
|
16 bit ISA bus |
16 MB/s |
16 bits |
8 MHz |
Nee |
|
MCA |
40 MB/s |
32 bits |
10 MHz |
Ja |
|
EISA |
32 MB/s |
32 bits |
8 MHz |
Nee (wel software configuratie0 |
|
VLB |
132 MB/s |
32 bits |
33/50 MHz |
Ja |
|
PCI |
132 MB/s |
32 bits |
33 MHz |
Ja |
|
AGP |
264 MB/s |
32 bits |
66 MHz |
Ja |
|
AGP 2x |
528 MB/s |
32 bits |
133 MHz* |
Ja |
|
AGP 4x |
1064 MB/s |
32 bits |
266 MHz |
Ja |
|
AGP 8x |
2133 MB/s |
32 bits |
533 MHz* |
Ja |
|
|
|
|
|
|
|
|
|
|
||
|
8 bit PC bus DMA |
1 MB/s |
8 bits |
8 Mhz |
|
|
PIO-0 |
3,3 MB/s |
|||
|
PIO-4 |
16,6 Mb/s |
|||
|
UltraDMA |
33,3 MB/s |
|||
|
Firewire |
400 MB/s |
Ja |
||
|
USB 2 |
480 MB/s |
Ja |
||
|
|||||
|
|
Intels Peripheral Component Interconnect (PCI) bus |
|
> Top < |
Intels PCI bus (1993) |
Met Intels Peripheral Component Interconnect (PCI) bus werd het bandbreedteproblemen voorlopig opgelost. Intel maakte steeds snellere processors en had dus alle belang bij een sneller bussysteem. En het meest bij een waaraan zij zelf de leiding gaf. Om de PCI bus tot industriestandaard te maken plaatste Intel haar PCI patenten in het publieke domein. Intel richtte de PCI Special Interest Group op om de PCI standaard verder te ontwikkelen. Deze open strategie legde Intel geen windeieren. Intel werd de belangrijkste leverancier van PCI chipsets die natuurlijk uitstekend met haar snelle Pentium processors konden samenwerken. |
|
De eerste 32 bits PCI bus klokte op 33 MHz en had een theoretische bandbreedte van 133 MB/S. In 1993 kwam de PCI 2.0 specificatie uit. Onder de 64 bits PCI 2.1 standaard (1995) liep een met 64 datalijnen uitgevoerde bus op 66 MHz, wat datatransfers van 528 MB/s kon opleveren. Ze werden op 64 bits servers en werkstations (o.a. in SUN's UltraSPARC) ingezet. |
De locale PCI bus op Intel chips |
Een van de belangrijkste verbeteringen van het PCI systeem (lichtblauw) is een op hoge kloksnelheid lopende PCI brug (verkorte verbinding) die geheugen, processor en PCI bus direct met elkaar verbond. Hierdoor hoeven datatranfers tussen de processor en het geheugen niet meer via de met trage perifere componenten gedeelde ISA bus te lopen. In latere Triton systemen regelde deze System Controller (PCI Northbridge) ook het Level 2 cachegeheugen (hier niet afgebeeld). Via een PCI-ISA brug (southbridge) kon een ISA bus met legacy apparaten worden aangesloten, waaronder de verbinding met het klassieke ROM BIOS. De ISA bus was nodig voor communicatie en printerpoorten, maar PCI systemen met vrije ISA sloten zijn tegenwoordig een zeldzaamheid. Andere PCI addities waren aansluitpunten voor de Universal Serial Bus (USB) en IDE schijven (ID brug).
|
AGP (1997) |
Een andere PCI additie is de Accelerated Graphics Port (AGP). Intel noemt AGP een poort omdat het via de PCI NorthBridge een directe verbinding tussen het hoofdgeheugen en videoprocessor vormt. Het voor video gebruikte Dual ported videogeheugen (VRam) is duur omdat het van twee kanten (processor en beeldchip) beschreven moet kunnen worden. Maar via de snelle AGP poort kan de videoprocessor ook van het gewone geheugen gebruik maken. Hier kunnen statische texture maps in worden opgeslagen. De 32 bits AGP bus draait op 66 MHz . Via de hier niet afgebeelde de Front Side Bridge kunnen theoretische videosnelheden tot aan 2.1 GB/s (AGP 8 x) behaald worden. |
PCI Express |
In het bus concept werden uitbreidingskaarten met parallelle verbindingen via de bus met elkaar verbonden. De bandbreedte van de PCI bus (133 MB/s) werd dus de flessenhals. Lokale bus controllers en snelle bruggen maakten snellere communicatie tussen de op bus aangesloten apparaten mogelijk. Ook PCI Express staat directe communicatie tussen randapparatuur toe, maar doet dat via snelle seriële verbindingen. De voor telecommunicatie bestemde seriële verbindingspoorten van de IBM AT waren laag geklokt (4,7 MHz), maar de moderne seriële bustechnologie (denk aan USB en S-ATA) werkt met hogere frequenties zodat er grote hoeveelheden data over de korte seriële lijnen kunnen worden gepompt. Bij PCI Express gaat het bovendien om point-to-point verbindingen: hierdoor hoeft de PCI Express Gigabit ethernetkaart niet van het bandbreedte gebruik van de grafische kaart te lijden hebben. De bandbreedte van PCI Express is met 500 MB/s ongeveer 3,5 keer zo snel als PCI (133 MB/s). OS/2 ondersteuning voor PCI Express videokaarten komt van Scitech. |
|
De Wintel PC's |
|
> Top < |
PC System Design Guide |
Vanwege het Windows monopolie kan geen hardwarefabrikant buiten Microsoft om. Als Windows de hardware nog niet betrouwbaar ondersteunt, zoals het afwezige USB in Windows 95, raken de fabrikanten hun hardware niet kwijt. Omgekeerd is Microsoft van enkele grote hardwareleveranciers afhankelijk. Zij leveren de hardware en stuurbestanden die Windows ogenschijnlijk sneller maken. Om die reden stemmen Microsoft en Intel ("Wintel") hun beleid steeds meer op elkaar af. Dit uitte zich in jaarlijkse PC standaarden waarin lange termijn beleid (in de PC wereld maar 2 jaar) werd afgesproken. Zie: PC System Design Guide Downloads Zonder Intels exponentieel sneller wordende hardware (Moore's wet) zouden Microsofts laatste Windows versies niet vooruit te branden zijn. De wet van Wirth (eigenlijk Martin Reiser) is ook nog steeds actueel: Software gets slower faster than hardware gets faster. Maar juist deze formule bleek een commercieel succes. Het stimuleerde de gebruikers hun hard- en software op te waarderen, wat weer veel geld in Intels en Microsoft laatjes bracht, zodat ze weer in nieuwe snufjes konden investeren. Wie niet aan de Wintel hype meedeed, werd opzij geschoven. |
PC99 (1997-99) |
De PC99 System Guide versies uit 1997-99 bepaalde Wintels voorkeuren voor hardware design voor de periode 1999-2000. Er wordt onderscheid gemaakt tussen consumenten-, zaken- en spel PC's en notebooks en werkstations. Enige opvallende feiten:
De Design Guides worden niet alleen door Microsoft en Intel geschreven, maar het is ook duidelijk dat ze voor elkaar geschreven zijn. Toen de de PC99 PC System Design Guide geschreven werd was Windows 98 al een succes en Windows 2000 in de maak. USB kon dus verplicht gesteld worden. Microsoft was er klaar voor. Maar met OpenGL ondersteuning hadden ze minder haast. |
|
|
Randapparaten doen iets met gegevens. Een modem converteert gegevens voor vervoer over een seriële lijn en een videokaart zet bitmap arrays in videobeelden om. Om die gegevens te kunnen benaderen maken de adapters van grotere of kleinere geheugenblokken gebruik.
Zo communiceren de kaarten met de processor via een uniek Input/Output adres (I/O poort, hardware adres).
Sommige kaarten gebruiken een deel van het werkgeheugen als buffer voor I/O operaties (RAM buffers).
Daarnaast kan een deel van de kaartbesturing in Adapter ROM staan..
Om geheugenconflicten te voorkomen mogen de door adapterkaarten gebruikte I/O, RAM en ROM adressen niet door de geheugenbeheerder voor gebruikersprogramma's beschikbaar worden gesteld en/of door andere kaarten worden benaderd.
De data- en programmageheugengebieden van het langzame ROM BIOS worden tegenwoordig vrijwel altijd door de geheugenbeheerder gebufferd (DOS, QEMM) en/of door de software routines van het besturingssysteem (API) vervangen. In de situatie van een virtuele DOS machine kunnen ze ook worden geëmuleerd.
Oude legacy apparaten en insteekkaarten maken van de DMA en IRQ voorzieningen van het moederbord gebruik.
8 en 16 bits ISA apparaten kunnen van Direct Memory Access (DMA) kanalen op het moederbord gebruik maken. Hiermee kunnen ze buiten de processor om naar het geheugen te schrijven. Moderne PCI apparaten gebruiken 32 bits busmaster DMA.
Met de aan de DMA kanalen verbonden Interrupt Request Level (IRQ) voorziening op het moederbord kunnen de van DMA gebruik makende apparaten de aandacht van de processor te trekken.
Ook bij deze voorzieningen kunnen conflicten optreden. De DMA kanalen van het moederbord zijn schaars en niet deelbaar. De IRQ kanalen van legacy apparaten als de systeemklok, de diskette-controller en het PS/2 toetsenbord zijn niet deelbaar. Ze moeten volgens de ISA standaard "exclusief" worden gebruikt. Voor de overige op het moederbord aangesloten randapparaten blijven er dan nog maar weinig bronnen over.
Er zijn meerdere oplossingen voor dit probleem:
Sommige ISA en PCI apparaten zien af van het moederbord DMA. Hun stuurbestanden bedrijven Programmed Input/Output, waarmee de processor de communicatie met het geheugen verzorgt. Zo ondersteunt Integrated Drive Electronics (IDE) standaard in theorie steeds snellere PIO modes (standaarden). Maar de processor(belasting), de stuurbestanden en het besturingssysteem bepalen de snelheid in de praktijk.
MCA, EISA en PCI insteekkaarten kunnen IRQ's delen en maken soms ook van hoge I/O adressen gebruik. Via het Plug and Play mechanisme worden de benodigde bronnen door de PCI controller verdeeld. Dit op grond avn de door de PCI apparaten (hardware) verstrekte gegevens, De 32 bits PCI apparaten maken meestal gebruik van het snelle in de PCI bus ingebouwd 32 bits Direct Memory Access systeem (busmaster DMA). Hierbij treedt een apparaat op als manager (master) van de IRQ en DMA kanalen en kunnen andere PCI apparaten (slaves) van zijn busmaster dienst gebruik maken. Voo optimale performance laat u de snelste apparaten busmaster zijn.
U kunt op het moederbord aangesloten (standaard)apparaten die u niet gebruikt deactiveren. Dit gaat via pinnen of via het BIOS software zelf. Hun bronnen komen dan voor andere apparaten vrij.
USB apparaten delen de IRQ en I/O poorten van de op de systeembus aangesloten USB roothub. Deze apparaten zijn echt Plug and Play en benaderen de PCI bus via een soort netwerkstructuur.
Het Universele Seriële Bus systeem (1977) is vanwege zijn uitbreidbaarheid en Plug and Play karakter een bijzonder gebruikersvriendelijk systeem. Het USB systeem heeft een hub netwerkstructuur, waarbij USB apparaten op ieder moment online en offline kunnen gaan. Via de USB roothub kunnen 127 "hot-pluggable" USB apparaten en USB expansiehubs aangesloten worden. De communicatie van de op de roothub of expansie-hubs aangesloten USB apparaten (max 127) verloopt via frames. De met de PCI bus verbonden roothub heeft weliswaar een IRQ niveau en geheugenadres nodig, maar binnen het USB systeem zelf verloopt de communicatie met de USB apparaten via frames. USB is daarmee niet zo snel als PCI, maar wel vele malen sneller dan een gewone seriële of parallelle poort, waar slechts een serieel apparaat op aan te sluiten is.
Sinds versie 2.0 is OS/2 32 bits. Maar niet volledig. De meest basale stuurbestanden zijn nog steeds 16 bits. Het gaat vooral om de stuurbestanden waarmee de randapparaten aangestuurd worden.
OS/2 kent drie soorten stuurbestanden: fysieke stuurbestanden, virtuele DOS stuurbestanden en Presentatie Manager stuurbestanden. Ze regelen op verschillende niveaus de in- en uitvoer (Input/Output, I/O) naar perifere apparaten. Als een apparaat het onder OS/2 niet doet, ligt dat meestal aan het ontbreken van een passend fysiek stuurbestand (PDD).
Fysieke stuurbestanden (physical device drivers) zorgen ervoor dat de kernel de op de systeembus aangesloten randapparaten (devices) kan bedienen: vaste en verwisselbare schijven, video, de muis en het toetsenbord, de parallelle en seriële poorten.
Hoe gaan stuurbestanden te werk? Het is moeilijk voor te stellen omdat ze op grens tussen de hardware en software werken. Maar in de praktijk zorgen stuurbestanden ervoor dat de programmeerbare hardware controllers van de perifere apparaten met de hoofdprocessor kunnen praten. Die hoofdprocessor wordt weer door de kernel bestuurd, maar u hebt daar indirect zeggenschap over via uw programma's.
processor |
geheugen |
systeembus |
hardware controller |
hardware internals |
registerinhoud |
kernel en stuurbestand |
dma transport |
registerinhoud |
apparaatacties |
Ieder randapparaat heeft een op de systeembus aangesloten controller. Het is het bedieningspaneel van het apparaat. Hardware controllers bevatten hun eigen microprocessor met door de hoofdprocessor te beschrijven registers, buffergeheugen en poorten naar het geheugen. De hardware controller wordt door de hoofdprocessor bediend door zijn registers te beschrijven. Het stuurbestand helpt de kernel hierbij, door de vertaling naar de machinetaal van de hardware controller voor zijn rekening te nemen. Hiertoe vormt het stuurbestand een voor de kernel herkenbare virtuele (softwarematige) interface naar het apparaat. Zou dit niet gebeuren, dan zou de kernel voor ieder apparaat opnieuw moeten worden geschreven.
De Physical Device Driver (PDD) stuurbestanden zijn in de regel in 16 bits assembler of c geschreven: OS/2 v. 1 was 16 bits. Ook de Installable File System (IFS) stuurbestanden van de intern 32 bits resp. 64 bits werkende bestandssystemen HPFS (OS/2 1.2) en JFS (OS/2 4.5, eCS) zijn 16 bits. Maar de 32 bits OS/2 kernel heeft een snelle (lees: ring 2) interface voor 16 bits fysieke stuurbestanden. Ze zijn er in twee soorten: block device drivers en character device drivers.
De term character device drivers stamt uit het UNIX terminaltijdperk waarin de op de minicomputer aangesloten terminals x bits tekens (characters) achter elkaar ontvingen. De teksten op het beeldscherm werden net als op een typemachine (toen: "teletyper") sequentieel van links naar rechts geschreven. En dat ging via een seriële poortverbinding die het ene na het andere teken doorgaf.
Maar een "teken" is in programmeertaal nog altijd een "word" dat uit meerdere bits (7, 8, 16, 32) zal bestaan (zie: Codetabellen en bijzondere tekens). In het grafische tijdperk lopen deze tekens als reusachtige 16 of 32 bits bitmapfonts serieel door uw grafische presentatie machine. Het verschil tussen een block en een character device is dan ook niet dat de datastromen al dan niet in blokken van bits en bytes verstuurd worden (dat doen ze beide), maar de manier waarop dat gebeurt. Een block device driver kan gegevens actief en willekeurig opvragen (random access), maar voor character device drivers geldt: eerst komt het een en dan komt het andere. Voor geluid en video geldt dat ze alleen maar werken via streaming character devices.
Block Device Drivers kunnen willekeurig blokken van data op een partitie aanspreken. Zo kunnen de IDE drivers ieder gewenste sector van een partitie opvragen en beschrijven. Met het "scatter gather" mechanisme gebeurt dat met één hardwareinterrupt over meerdere locaties tegelijkertijd. De via het IDE stuurbestand bestuurde IDE controller voert de complexe kernelopdracht gewoon uit. Op een roterende vaste schijf (dat zijn nu eenmaal de hardware internals) zullen die gegevens weliswaar sequentieel (een voor een) door de schijfkop worden ingelezen, maar omdat de schijf supersnel draait en de IDE controller er tussenzit, merkt het het willekeurige blokken opvragende stuurbestand daar weinig van. Die wacht gewoon op de interrupt die aangeeft dat de opgevraagde gegevens beschikbaar zijn. De door de kernel opgevraagde gegevensblokken worden daarna stuk voor stuk aan de IDE driver gepresenteerd. Op die manier krijgt het met de OS kernel verbonden IDE stuurbestand de door hem gevraagde sectoren van de vaste schijf te zien. Natuurlijk beschikken block device drivers over passende geheugenbuffers, maar als het puntje bij paaltje komt is de uitvoering van de opdracht door het langzame geheugen wel degelijk sequentieel.
De vaste schijf is dus een uitzondering. Want vrijwel alle andere I/O stuurbestanden en het ROM werken sequentieel: Ze versturen hun bitmap, geluids en tekenstromen in elkaar opvolgende datablokken naar randapparaten als beeldschermen, audio en printers. Het traagste character device is de 8 bits seriële poort. Hij verstuurt een 7 of 8 bits word per buscyclus. De parallelle poorten zijn wat sneller omdat ze de opeenvolgende gegevens parallel kunnen versturen. De grafische en de stuurbestanden voor het geluid zijn de snelste.
Met de 32 bits OS/2 versie 2 werden de 32 bits virtuele stuurbestanden voor DOS en Win-OS/2 ingevoerd. Onder het voor de 286 processor geschreven OS/2 1.x konden DOS en OS/2 nog van dezelfde stuurbestanden gebruik maken. Dit was onder OS/2 weliswaar intelligenter uitgevoerd dan onder het hybride 8 en 16 bits DOS/Windows systeem, maar de volgens Bill Gates "hersenloze" 286 processor had beslist zijn nadelen. Met de uitmuntende DOS emulatie van de 32 bits Intel 386 processor (virtual 8086 mode) konden de 8 en 16 bits Win(DO)w(S) applicaties definitief van de in 32 bits protected mode lopende OS/2 applicaties worden gescheiden.
De DOS emulatie werd via supersnelle (ring 0, kernelmodus) 32 bits virtuele stuurbestanden geregeld, terwijl de snelle hardware van de 386 processor de vertaalslag naar het 8 bits DOS leverde. Hiertoe schakelde de Intel 386 processor op gezette tijden naar de virtual 8086 modus over (met PROTECTONLY=NO). Op snelle systemen werd deze 32 bits DOS emulatie van OS/2 een snellere DOS dan DOS. Maar OS/2's multitasking bleef DOS de baas, omdat alle DOS en Win-OS/2 sessies nog steeds pre-emptief werden onderbroken.
De voor het 8 en 16 bits DOS en 16 bits Windows benodigde stuurbestanden bevinden zich allen in \OS2\MDOS. Ze worden geladen via de CONFIG.SYS. Als u geen DOS of 16 bits Win-OS/2 ondersteuning nodig heeft REMt u ze stuk voor stuk uit en verandert u de instelling PROTECTONLY=NO in PROTECTONLY=YES. OS/2 2.x loopt dan alleen nog in de 32 bits protected mode van de Intel 386 processor.
Het 32 bits OS/2 2.x leverde ook een nieuwe interface voor de 16 en 32 bits OS/2 Presentation Manager programma's. PM programma's moeten immers toegang tot het beeldscherm, printers, toetsenbord en de muis hebben, maar ieder programma denkt daar weer anders over. Dat maakt een PM sessie uniek. Maar als u van het ene naar het ander PM programma overschakelt wordt een andere beeldschermopbouw en muispositie actief. Wie is de ware?
Het antwoord van OS/2 Presentation Manager is: Niemand heeft het laatste woord.
Weliswaar kan alleen het op de voorgrond actieve PM venster de muispositie en de invoer van het toetsenbord ontvangen (input), en krijgt het het bijbehorende recht om de grafische user interface Presentation Manager passend te beschrijven (zijn output); in een multitasking omgeving doen ook de op de achtergrond lopende PM programma's nog volop mee. Ze moeten dus ook over hun (virtuele) uitvoerapparaten kunnen beschikken. Zodat hun beeldscherm in de juiste stand staat als u hun venster activeert.
Vandaar dat ieder PM programma zijn eigen virtuele I/O uitvoerapparaten voorgeschoteld krijgt. Deze nep I/O apparaten zijn net als die van DOS virtueel, in die zin dat ze door de hogere 32 bits stuurbestanden van Presentation Manager gepresenteerd worden. De 32 bits grafische engine van Presentation Manager gebruikt hiervoor 16 en 32 bits Dynamic Link Bibliotheken bestande stuurbestanden (Presentation Driver, PD). De 16 bitters onder hen kregen Input Output Privileges voor het beeldscherm, printers en plotters (Zie: Privilege levels). Hiermee kunnen ze het actuele beeldscherm ook direct beschrijven (Dive.dll). Zie: OS/2 Presentation Drivers in a Nutshell
Onder OS/2 hoeft u zich hier niet druk over te maken. De 64k aan Input/Output adressen (poorten) van de IBM PC worden vrijwel altijd correct door de resource manager verdeeld. Alleen aan de seriële COM(municatie) poorten moet u onder OS/2 soms aandacht besteden. Bijvoorbeeld als het een intern ISA modem op COM3 of 4 installeert. Soms moet u dan COM1 of COM2 op het moederbord uitschakelen. Maar dit is meer vanwege een IRQ probleem. Voor meer informatie: type "help com.sys" op de prompt.
Adapter ROM bevat programmeercode. Adapter RAM bevat data. Zo bevat een VGA kaart code in het ROM om tekens op het scherm te schrijven en adapter (VIDEO)RAM om de pixels in te plaatsen. Opvallend is dat de huidige SuperVGA kaarten veel meer videogeheugen (megabytes) hebben dan er in de IBM PC voor gereserveerd is (64 kB). Via paginering (vergelijk het met het doorbladeren van een boek) en lokale bus technieken komen ze beetje bij beetje in het voor de processor zichtbare deel van het geheugen terecht. Maar dat is niet uw probleem, maar het probleem van de video hardware makers en hun drivers. Die laatsten moeten er onder OS/2 wel zijn. Want SVGA is geen standaard meer. Iedere fabrikant geeft er zijn eigen draai aan. Vandaar dat er geen universele SVGA drivers voor OS/2 zijn (Zie: Videokaarten).
De belangrijkste BIOS ROM en RAM geheugengebieden zijn:
Begin (hex) |
Eind (hex) |
ROM/RAM |
Opmerking |
---|---|---|---|
A0000h |
AFFFFh |
VGA Grafisch Video RAM |
64 kB RAM voor 320x200 pixels in 256 kleuren. |
B0000h |
BFFFFh |
VGA Video RAM (tekstmodus) |
De eerste 32 kB zijn voor monochrome tekst en de tweede 32 kB voor kleuren. |
C0000h |
C7FFFh |
VGA Video BIOS ROM |
|
C8000h |
CBFFFh |
BIOS ROM voor de IDE vaste schijf |
Soms een SCSI adapter default. |
D0000 |
D7FFFh |
SCSI adapter |
Soms op C8000-CBFFFh (IDE ROM) |
? |
? |
Netwerkkaart Boot ROM |
|
E0000h |
EFFFFh |
Systeem BIOS PnP informatie |
Wijzigingen in het PnP BIOS worden in het Extended System Configuration Data (ESCD) gebied van het CMOS ROM opgeslagen. Windows kan de PnP BIOS instellingen automatisch veranderen indien u de BIOS instelling PnP OS op YES heeft staan. Advies: Laat het liever aan het BIOS over en zet PnP OS op NO. |
? |
? |
USB EHCI device driver |
|
F0000h |
FFFFFh |
Systeem BIOS ROM |
|
Onder OS/2 vormt de locatie van het adapter ROM eigenlijk zelden een probleem. Alleen in een gemengd SCSI IDE systeem kunt u bootproblemen verwachten als de IDE schijf en de SCSI adapter dezelfde ROM adressen delen.
DOS programma's profiteren onder DOS van schaduwgeheugen: hierbij worden de ROM routines op de adapters van het trage ROM naar de corresponderende adressen (640-1024 k) in het sneller te benaderen werkgeheugen geplaatst. Maar OS/2 verzorgt voor DOS programma's zelf de BIOS functies. Door via de BIOS SETUP het BIOS ROM naar het schaduwgeheugen te verplaatsen versnelt u DOS onder OS/2 dus niet. Wel ziet OS/2 dan minder geheugen ziet, zodat u onder OS/2 beter van dit schaduwgeheugen kunt afzien.
Op de 8-bits IBM PC bus konden acht 8-bits randapparaten een interrupt request (IRQ) signaal afgeven (IRQ-0 t/m 7). Ze werden door de Intel 8259 Interrupt Controller opgevangen en aan de processor voorgeleid. Hierbij zorgde Intels Interrupt Controller (PIC_0) ervoor dat de interrupts met het laagste nummer als eerste aan bod kwamen. De systeemklok en het toetsenbord (niet vanwege uw typesnelheid, maar vanwege de Ctrl-C en Break voor calamiteiten) kregen de hoogste prioriteit.
De IBM AT uit 1984 bezat een tweede Intel 8259 Interrupt Controller (PIC_1) voor de interrupt kanalen 8 tot en met 15. Deze werd echter niet direct op de 16-bits ISA bus aangesloten, maar ter wille van de compatibiliteit met 8 bits hard- en software achter de eerste Interrupt Controller (PIC_0) gezet.
Hiertoe werd IRQ-2 van PIC_0 met IRQ-9 van PIC_1 doorverbonden (cascade). Als de met IRQ-14 verbonden schijfcontroller een signaal afgaf, werd naast IRQ 14 ook IRQ-9 en dus IRQ-2 geactiveerd. Het AT BIOS was echter zo geprogrammeerd dat het bij een IRQ-2 signaal naar signalen op de tweede interrupt controller zocht.
IRQ 2 is daarom op de AT niet te gebruiken. Als een apparaat IRQ-2 rechtstreeks zou benaderen gebruikt het in werkelijkheid IRQ-9 en veroorzaakt daarmee veel ruis (niet aanbevolen!). Het directe gebruik van IRQ-9 is vaak wel mogelijk op de PCI bus.
In de tabel hieronder van interrupts staan de IRQ's onder elkaar, maar eigenlijk zou je IRQ's 8-15 (paars) achter IRQ-2 (paars) moeten zetten. Ik heb wat gangbare I/O adressen erbij gezet, maar neem die met een korreltje zout.
IRQ |
Device |
Bits |
Gebruik (apparaatnaam) |
I/O adres |
Opmerking |
---|---|---|---|---|---|
SM1 |
|
- |
System/Power Management IRQ |
|
|
NMI |
|
- |
Parity Error of I/O Channel check |
|
Niet maskeerbare interrrupt |
0 |
|
- |
klokfrequentie generator (TIMER_CH_0) |
|
Niet te gebruiken. Zit ook niet op de bus. |
1 |
CON |
- |
Toetsenbord controller (KBD-0) |
060- 067 |
Onder OS/2 wordt IRQ-1 exclusief gebruikt door de toetsenbord controller. |
2 |
PIC |
- |
Tweede interrupt controller (PIC_1) |
|
Onder OS/2 wordt IRQ-2 exclusief gebruikt door de tweede interrupt controller.Op de XT vrij. Doorschakeling via IRQ-9 naar IRQ-8-15 op de AT en ISA bus. De voor IRQ-2 ingestelde hardware zal dan van IRQ-9 gebruik maken. |
3 |
COM2 |
8,16 |
Tweede seriële poort (SERIAL_1, UART1) |
2F8- 2FF |
COM2 of COM4 (maar niet beide), vaak vrij (modem of anders). |
4 |
COM1 |
8,16 |
Eerste seriële poort (SERIAL_0, UART1) |
3F8- 3FF |
COM1 of COM3 (maar niet beide), vaak vrij (modem of anders) |
5 |
LPT2 |
8,16 |
Tweede parallelle poort (LPT_2) |
278- 27A |
Op de XT de vaste schijf controller, nu (met de AT IDE controllers op IRQ 14 en 15) vaak vrij voor de geluidskaart. |
6 |
|
8,16 |
Diskette controller (FLOPPY_0) |
3F0- 3F7 |
Beter niet gebruiken op een PC met diskettestation. |
7 |
LPT1 |
8,16 |
Eerste parallelle poort (LPT_0) |
378- 37A |
LPT staat voor Line printer. Vrij tenzij BASEDEV=PRINT01.SYS /IRQ. |
8 |
RTC |
8,16 |
Real Time systeemklok (RTC) |
|
IRQ-8 wordt exclusief gebruikt door de systeemklok. Zit niet op de bus. |
9 |
|
8,16 |
Cascade naar IRQ-2 |
|
Beter niet gebruiken op de AT, op de PCI bus vrij. Wordt onder eCS door ACPI gebruikt. |
10 |
|
16 |
|
|
Meestal vrij |
11 |
|
16 |
|
|
Meestal vrij (oa SCSI, USB) |
12 |
|
16 |
PS/2 muispoort van moederbord (AUX_0) |
|
Onder OS/2 is IRQ-12 exclusief gereserveerd voor de PS/2 muis (Auxilary device). Als u een seriële of USB muis gebruikt kunt u soms een BIOS instelling PS/2 Mouse op Disabled zetten en krijgt u IRQ 12 vrij. |
13 |
|
16 |
Coprocessor |
|
Niet te gebruiken. Zit niet op de bus. |
14 |
|
16 |
Eerste IDE controller (IDE_0) |
1F0- 1F8 |
IRQ-14 is gereserveerd voor de eerste IDE controller, maar kan beschikbaar zijn op SCSI systemen. |
15 |
|
16 |
Tweede IDE controller (IDE_1) |
170- 178 |
Onder OS/2 wordt IRQ-15 exclusief gebruikt door de tweede IDE controller (CD-ROM of extra vaste schijf). Kan vrij zijn. |
> 15 |
|
|
|
- |
Moderne ACPI moederborden kunnen meer dan 15 IRQ nummers toebedelen. Deze IRQ's worden in de Advanced Programmable Interrupt Controller (APIC) door het PnP OS (Windows 98 en later) ingesteld. Tot voor kort konden de OS/2 stuurbestanden hier niets mee. Om die reden zet u in het BIOS de APIC Mode op Disabled/Off/No voor klassiek OS/2. Voor eComStation met ACPI ondersteuning geldt een ander verhaal. Zie: ACPI Project voor eComStation . |
De IBM AT (ISA) bus beschikt formeel over zestien IRQ signalen voor hardware controllers en chips. Maar omdat veel IRQ's al exclusief door legacy apparaten worden gebruikt, blijven er nog maar weinig interrupts voor ISA en PCI randapparaten (5, 7, 9, 10, 11, en 15) over, tenzij u niet gebruikte legacy apparaten in het BIOS kunt uitschakelen.
Goede kandidaten zijn:
De tweede seriële poort (SERIAL_1) met IRQ-3 wordt zelden gebruikt.
Eventueel de eerste seriële poort (SERIAL_0) met IRQ 4.
De tweede parallelle poort (LPT_2) met IRQ-5 hebt u niet nodig voor een USB of netwerkprinter.
De PS/2 muispoort van moederbord (AUX_0) met IRQ-12 hebt u niet nodig als u een serieel of USB toetsenbord gebruikt.
De eerste (IDE_0) en tweede IDE controllers (IDE_1) bij gebruik van SCSI drives (IRQ-14,15).
Vanwege hun verbinding met IRQ-2 hebben de hardware interrupts 9 t/m 15 een hogere prioriteit dan de IRQ's 3-7. Omdat de IRQ's 3 en 5 in principe trager zijn dan de IRQ's 9-15 zouden mijn televisie kaart (IRQ 3) en geluidskaart (IRQ 5) kunnen gaan haperen bij een druk interrupt verkeer hogerop (USB, IDE schijven en de hier niet afgebeelde netwerkkaart op IRQ 11), maar in de praktijk heb ik dat nog niet gemerkt.
[F:\]rmview /irq RMVIEW: Physical view IRQ Level = 0 PCI Pin = NONE Flg = EXCLUSIVE TIMER_CH_0 IRQ Level = 1 PCI Pin = NONE Flg = EXCLUSIVE KBD_0 Keyboard Controller IRQ Level = 2 PCI Pin = NONE Flg = EXCLUSIVE PIC_1 IRQ Level = 3 PCI Pin = A Flg = SHARED MPEG_0 Hauppauge WinTV PVR 350 IRQ Level = 5 PCI Pin = C Flg = SHARED EHCI Compliant USB Host Controller IRQ Level = 5 PCI Pin = NONE Flg = SHARED Creative Labs SoundBlaster Live! IRQ Level = 6 PCI Pin = NONE Flg = MULTIPLEXED FLOPPY_0 Floppy Controller IRQ Level = 8 PCI Pin = NONE Flg = EXCLUSIVE RTC IRQ Level = 10 PCI Pin = B Flg = SHARED UHCI Compliant USB Host Controller IRQ Level = 10 PCI Pin = B Flg = SHARED UHCI Compliant USB Host Controller IRQ Level = 11 PCI Pin = A Flg = SHARED UHCI Compliant USB Host Controller IRQ Level = 11 PCI Pin = A Flg = SHARED UHCI Compliant USB Host Controller IRQ Level = 12 PCI Pin = NONE Flg = EXCLUSIVE AUX_0 PS/2 Auxiliary Device Controller IRQ Level = 14 PCI Pin = NONE Flg = EXCLUSIVE IDE_0 xATA Controller IRQ Level = 15 PCI Pin = NONE Flg = EXCLUSIVE IDE_1 xATA Controller
Syntax: RMVIEW [switch] /P Display Physical view (default) /P1 Physical view with planar chipset /D Display Driver view /DA Driver view - with snoopers /D1 Driver view with planar chipset /DC Display Detected view - Current boot tree only /DP Display Detected view - Previous boot tree only /L Display Logical view /R Display raw data. Use with P L D switch /IRQ Display claimed Interrupt levels (IRQ) /IO Display claimed IO ports above 100 Hex /IOA Display all claimed IO ports /DMA Display claimed DMA channels /MEM Display claimed Memory regions /SO Sort IO, IOA, IRQ, DMA, MEM by owner /HW Display Hardware Tree /? Help
Met rmview /irq kunt u de IRQs opvragen (met rmview /IO de gebruikte poortadressen). RM staat voor resource manager (resource.sys). Voor opties zie rmview /?.
[H:\]rmview /irq RMVIEW: Physical view<> IRQ Level = 0 PCI Pin = NONE Flg = EXCLUSIVE TIMER_CH_0<> IRQ Level = 1 PCI Pin = NONE Flg = EXCLUSIVE KBD_0 Keyboard Controller<> IRQ Level = 2 PCI Pin = NONE Flg = EXCLUSIVE PIC_1<> IRQ Level = 3 PCI Pin = NONE Flg = MULTIPLEXED SERIAL_1 Serial Controller<> IRQ Level = 4 PCI Pin = NONE Flg = MULTIPLEXED SERIAL_0 Serial Controller<> IRQ Level = 6 PCI Pin = NONE Flg = MULTIPLEXED FLOPPY_0 Floppy Controller<> IRQ Level = 7 PCI Pin = NONE Flg = MULTIPLEXED Pro Audio 16 Sound Card<> IRQ Level = 8 PCI Pin = NONE Flg = EXCLUSIVE RTC<> IRQ Level = 12 PCI Pin = NONE Flg = EXCLUSIVE AUX_0 PS/2 Auxiliary Device Controller<> IRQ Level = 14 PCI Pin = NONE Flg = MULTIPLEXED IDE_0 (E)IDE Controller<> IRQ Level = 15 PCI Pin = NONE Flg = MULTIPLEXED IDE_1 (E)IDE Controller
Op mijn huidige PCI/USB/AGP systeem wordt IRQ-9 door de USB controller gebruikt.
[F:\DESKTOP]rmview /irq RMVIEW: Physical view IRQ Level = 0 PCI Pin = NONE Flg = EXCLUSIVE TIMER_CH_0 IRQ Level = 1 PCI Pin = NONE Flg = EXCLUSIVE KBD_0 Keyboard Controller IRQ Level = 2 PCI Pin = NONE Flg = EXCLUSIVE PIC_1 IRQ Level = 5 PCI Pin = A Flg = SHARED ETHERNET_0 Fast Ethernet Adapter IRQ Level = 6 PCI Pin = NONE Flg = MULTIPLEXED FLOPPY_0 Floppy Controller IRQ Level = 8 PCI Pin = NONE Flg = EXCLUSIVE RTC IRQ Level = 9 PCI Pin = D Flg = SHARED UHCI Compliant USB Host Controller IRQ Level = 10 PCI Pin = C Flg = SHARED EHCI Compliant USB Host Controller IRQ Level = 11 PCI Pin = NONE Flg = SHARED Creative Labs SoundBlaster Live! IRQ Level = 12 PCI Pin = NONE Flg = EXCLUSIVE AUX_0 PS/2 Auxiliary Device Controller IRQ Level = 14 PCI Pin = NONE Flg = EXCLUSIVE IDE_0 (E)IDE Controller IRQ Level = 15 PCI Pin = NONE Flg = EXCLUSIVE IDE_1 (E)IDE Controller
IRQ-7 is vrij omdat BASEDEV=PRINT01.SYS zonder /IRQ optie gegeven werd. Door de printerpoort te laten pollen, kon ik op mijn oude systeem de ISA PAS geluidskaart op IRQ-7 zetten. OS/2's resource manager weet dit wel, maar het PnP BIOS weer niet. Daarvoor zou ik de IRQ7 voor printerpoort LPT1 in het BIOS moeten vrijgeven. Dan pas kan het PnP BIOS hier wat mee. U zo'n verandering pas onder OS/2 na een nieuwe hardwaredetectie (De Alt-F1 methode).
Maar Resource Manager geeft zelden het hele verhaal. Zo steken er twee geluidskaarten, een TV tuner en twee netwerkkaarten in de PCI sloten. Ik heb maar voor een geluidskaart een driver geïnstalleerd (de SBLive! geluidskaart biedt mij veel meer dan de in het moederbord geïntegreerde C-Media 8738 chip), maar er zijn wel twee netwerkkaarten actief.
De door het PnN BIOS voorgestelde IRQ verdeling over de PCI bus is met een PCI (en AGP) bus sniffer te zien.
ROM PCI IRQ routing table Windows 9x Compatibility Tests.... ROM IRQ routing table found at F000h:1D90h Table Version 1.0 - OK Table size 208 bytes - OK Table Checksum 34h - OK IRQ's dedicated to PCI : None The ROM PCI IRQ routing table appears to be OK. IRQ Summary: IRQs 5,9,10,11,14,15 are used by PCI devices Shared IRQs: IRQ 9 is shared by 5 PCI Devices IRQ 10 is shared by 3 PCI Devices IRQ 11 is shared by 3 PCI Devices
Maar RMVIEW /HW geeft een deel van de door de OS/2 stuurbestanden geladen hardware aan.
[F:\DESKTOP]rmview /hw RMVIEW: Physical view PDEV Physical Device Tree CPU_0 686 Local_Bus PIC_0 PIC_1 DMA_CTLR_0 DMA_CTLR_1 VGA TIMER RTC BIOS_ROM KBD_0 Keyboard Controller AUX_0 PS/2 Auxiliary Device Controller ISA_Bus PARALLEL_0 Parallel Port Adapter FLOPPY_0 Floppy Controller UART1 - a part of the SIO2K set of drivers UART2 - a part of the SIO2K set of drivers UART3 - a part of the SIO2K set of drivers UART4 - a part of the SIO2K set of drivers PCI_Bus_0 EHCI Compliant USB Host Controller UHCI Compliant USB Host Controller USB Hub Controller USB HID Class driver IDE_0 (E)IDE Controller IDE_1 (E)IDE Controller USB Mass Storage Device Class driver USB CDROM Device Class driver GPhoto2/2 USB Driver USB Keyboard Client USB Mouse Driver USB Printer Driver USB Resource Manager ETHERNET_0 Fast Ethernet Adapter SoundBlaster Live!
Wat valt hier op?
Om te beginnen is er een verdeling tussen op de Local Bus, op de ISA Bus en op de PCI Bus aangesloten apparaten. Nu bezit ik twee PCI bussen, maar Resource Manager noemt er maar een. Ook wordt de tweede netwerkaart niet genoemd. Evenals de BT videokaart. Hier is de output van de PCI bus sniffer) die naar op de PCI bus aangesloten PCI apparaten zoekt.
Vendor 109Eh Brooktree Corp Device 036Eh Bt878 Mediastream Controller Command 0006h (Memory Access, BusMaster) Status 0290h (Has Capabilities List, Supports Back-To-Back Trans., Medium Timing) Revision 11h, Header Type 80h, Bus Latency 20h Self test 00h (Self test not supported) PCI Class Multimedia, type Video Subsystem ID 13EB0070h WinTV PAL B-G Subsystem Vendor 0070h Hauppauge Computer Works Inc Address 0 is a Memory Address (anywhere in 0-4Gb, Prefetchable) : F5000000h System IRQ 7, INT# A New Capabilities List Present: Vital Product Data Capability Power Management Capability Supports power state D1 Current Power State : D0 (Device operational, no power saving)
De bussnuiver vindt ook PnP apparaten waarvan nog geen stuurbestand is geactiveerd. Vandaar dat hij ingezet kan worden om bijv. drivers voor stuurbestanden te installeren (o.a. bij de installatie van het eCS netwerk).
Het stuurbestand voor de BookTree chip meldt zich niet bij resource manager aan. Zie de output van RMVIEW /D | more:
Driver: F:\MMOS2\WCAST.SYS - Non-Resource manager aware device driver
U ziet hen dus niet in de System Setup /Hardware Manager (is RMVIEW /HW).
Maar RMVIEW /DC (Display Detected view - Current boot tree only) ziet hem wel:
Detected Hardware Function: PCI Device 04-00-00 PCI Device ID: 109E036E IRQ Level = 7 PCI Pin = A Flg = SHARED Memory Base = 0XF5000000 Size = 00001000 Flg = EXCLUSIVE
Hier heb ik in het BIOS LPT1 van IRQ 5 gebruik laten maken zodat IRQ 7 vrij kwam en opnieuw de hardware detectie laten doen (Alt-F1, F5).
NB het PCI Device ID 109E036E bestaat uit het Vendor 109Eh van Brooktree Corp en het Device ID 036Eh van de Bt878 Mediastream Controller.
USB apparaten worden tot de PCI groep gerekend. Maar wat u hier ziet is niet de aanwezigheid van het USB apparaat, maar van het stuurbestand.
Anders dan in en klassieke ISA configuratie zijn de eerste en tweede interrupt controllers op de Local_Bus aangesloten.
PCI randapparaten kunnen IRQ's delen. In het overzicht van RMVIEW verschijnen gedeelde IRQ's als MULTIPLEXED (ISA bus) of SHARED (PCI bus). Zo kunt u meer PCI apparaten aansluiten dan er IRQs voor hen beschikbaar zijn. Of apparaten gebruiken die meerdere IRQs nodig hebben. Maar niet ieder randapparaat (en stuurbestand) is blij met zo'n gedeelde IRQ. Dan kan het de moeite waard zijn om de onwillige PCI kaart in een ander slot te zetten, om zo de verdeling van de IRQs te beïnvloeden.
ISA randapparaten kunnen geen interrupts delen. De Pro Audio Spectrum kaart op IRQ 7 is niet verenigbaar met BASEDEV=PRINT01.SYS met de optie /IRQ. OS/2 zal zonder die optie de eerste parallelle poort pollen naar activiteit van de printer. Overigens levert dat onder OS/2 geen merkbare systeemvertraging op.
Ook USB gebruikt een IRQ. U kunt de USB ondersteuning in het BIOS uitzetten, als u geen USB gebruikt, waardoor er weer een IRQ vrijkomt. Hetzelfde geldt voor de door het BIOS toegewezen IRQs voor niet gebruikte seriële of parallelle communicatiepoorten. Onder OS/2 mogen programma's de systeembronnen natuurlijk niet rechtstreeks aanspreken. Onder DOS (en Windows) krijgen programma's desgewenst directe toegang tot de IRQ, DMA kanalen en geheugenpoorten van het moederbord. Maar onder OS/2, Linux en Windows NT zal het besturingssysteem interveniëren. Een Windows tape backup programma dat de hardware rechtstreeks aanspreekt zal onder Windows NT niet lopen. En evenmin (indien 16 bits) onder Win-OS/2.
Een communicatieprogramma dat onder OS/2 een seriële communicatiepoort volgens de regels aanspreekt krijgt te maken met het virtuele seriële poort stuurbestand COM.SYS. Het stuurbestand vraagt de bronnen op bij OS/2's Resource Manager. Die deelt ze uit.
De eerste IBM PC bus beschikte over vier kanalen voor directe geheugentoegang (0-3). Ze waren voor bustransport van data tussen de trage randapparaten en het geheugen bedoeld. Transport tussen verschillende apparaten vond via geheugenbuffers plaats.
Normaal gesproken regelde de processor het vervoer van data over de systeembus, maar de processor kon moeilijk op trage diskettes wachten. Om de processortijd beter te benutten delegeerde de processor de standaardhandelingen naar de DMA controller op het moederbord. Via controller registers gaf de processor zijn opdrachten door en als de DMA controller klaar was zond hij een interrupt naar de processor.
De diskette-controller maakt nog steeds gebruik van DMA kanaal 2.
Op de XT PC zijn maar twee 8 bits DMA kanalen beschikbaar: 1 en 3. DMA kanaal 0 werd gebruikt om dynamische geheugenchips te verversen. DMA kanaal 1 werd door de vaste schijf gebruikt en de diskette controller gebruikt DMA kanaal 2.
De ISA bus beschikt over een tweede DMA controller voor de 16 bits DMA kanalen 5-7. Die kunt u voor 16 bits ISA insteekkaarten gebruiken. Ze werden via DMA kanaal 4 doorgeschakeld, die daarom niet beschikbaar is.
De vaste schijf gebruikte ooit DMA kanaal 7. Maar op moderne systemen zijn PIO modes en busmaster DMA vele malen sneller dan het DMA van de XT en AT/ISA moederbord controllers. De reden is dat de DMA controller van de ISA bus slechts op 4,77 MHZ tikt om de oude legacy apparatuur niet op te blazen. Ook tegenwoordig komt moederbord DMA niet boven de 8 MHz uit. Om die reden gebruiken 32 bits EISA, MCA en PCI apparaten hun eigen controllers (Busmaster DMA). Ze lopen op de volle bussnelheid (33, 66, 100 MHz of meer). Bovendien zijn ze in staat om buiten het hoofdgeheugen om rechtstreeks van PCI apparaat naar PCI apparaat te schrijven.
DMA kanaal |
Toepassing |
---|---|
0 (8-bit) |
Beschikbaar op AT (geluidskaart). Op de XT voor het verversen van dynamisch RAM gereserveerd. |
1 (8-bit) |
Beschikbaar (geluidskaart, netwerkkaart) |
2 (8-bit) |
Exclusief gereserveerd voor diskette controller. |
3 (8-bit) |
Beschikbaar (geluidskaart, printerpoort- ECP of EPP modus) |
4 (8-bit, 16-bit) |
Exclusief gereserveerd (cascade channel), 16 bits controller voor directe geheugentoegang |
5 (16-bit) |
Beschikbaar (ISA bus) |
6 (16-bit) |
Beschikbaar (ISA bus) |
7 (16-bit) |
Beschikbaar (ISA bus/ 6384 P60/D Hard Disk) |
De Plug en Play standaard stamt uit 1994. Windows 95 was het eerste besturingssysteem dat officieel PnP apparaten ondersteunde. Maar ook Warp 4 (1996) heeft een beperkte PnP detectie (Zie F5 - Automatisch laten vaststellen welke apparatuur u hebt). Dit gebeurt door de PnP Device stuurbestand PNP.SYS tijdens het booten.
Ook Linux en BEOS doet aan apparatuurherkenning (autoprobe). Toch staan OS/2 en Linux niet bekend als PnP besturingssystemen.
Het programma R(esource)M(amager)View (Warp 3 en 4) laat onder de OS/2 prompt de resultaten van Warps apparatuurdetectie (Current Boot Detected view) zien:
RMVIEW /DC > C:\ADAPTER.LOG
RMVIEW /IO > C:\POORT.LOG
RMVIEW /IRQ > C:\IRQ.LOG
Een en ander is mooi grafisch weergegeven in Configuratie /Apparatuurbeheer, hier in Details view. Door op properties te klikken kunt u zien wie het "device" beheert (de kernel of een stuurbestand).
Zo
gebruikt mijn modem via COM.SYS op COM2 (is SERIAL_1) IRQ 3 en het
adres 02F8 en gebruikt de MVPRODD.SYS stuurbestand van de Pro Audio
Spectrum kaart IRQ 7 (IRQ 5 gaf een enorme herrie).
Als OS/2 blijft steken in de installatie - bijv. bij een bepaald snoop bestand (*.snp), kunt u met Alt-F1 de apparatuurdetectie uitzetten.
Maar de PnP van Windows 9x gaat veel verder dan PnP apparatuurdetectie alleen. De Plug and Play van Windows wil zelf de verdeling van de IRQ's voor u oplossen. En daar ontstaan problemen die inmiddels bekend staan als plug and pray.
Problemen zullen zich vooral voordoen als u niet PnP besturingssystemen (DOS, NT, Linux, OS/2) op dezelfde computer installeert als Windows 9x. Waarom?
Bij een PnP PCI modem bijvoorbeeld, kan Windows 9x zelf bepalen welke IRQ's, poorten of geheugenadressen gebruikt mogen worden. De door Windows voorgestelde waarden worden vastgelegd in een niet-vluchtig geheugen in het BIOS (ESCD) dat een reboot overleeft. Windows verandert dus naar eigen inzicht de BIOS instellingen, maar geeft dat niet aan andere besturingssystemen door. Omdat voor OS/2 de IRQ, poort en het geheugenadres van modems en ISA PnP geluidskaarten vaak in de config.sys vermeld staan, zullen ze niet meer kloppen.
Voor DOS, Windows NT, OS/2 en Linux wordt daarom aangeraden om in het BIOS instellingen blok PNP and PCI Setup de vraag PnP OS installed op NO te zetten. De instelling YES geeft Windows de gelegenheid om de door het BIOS ingestelde IRQ instellingen naar eigen goeddunken te veranderen. Bij NO worden de IRQ's van het PCI randapparaten alleen door het BIOS ingesteld. Omdat het BIOS dit al doet voordat het besturingssysteem geladen is, zijn de instellingen voor ieder OS gelijk.
Daarnaast kan het wijs zijn de PnP van de randapparatuur proberen uit te schakelen door met switches vaste IRQ instellingen te kiezen die onder ieder OS hetzelfde zijn. Bij modems en geluidskaarten die ook onder Dos en Windows NT claimen te werken moet dit in principe instelbaar zijn. Jumperloze PCI modems zijn in de praktijk onbruikbaar (tenzij ze met een DOS utility worden geleverd om ze in te stellen). Andere PnP apparaten gebruiken altijd dezelfde instellingen (denk aan een VGA kaart). Hier slaat het PnP label meer op de apparatuurherkenning. Zoals eerder gezegd is daar niets mis mee.
Plug and Play (PnP) is een door Microsoft, Intel en Compaq bedachte standaard waarbij randapparaten hun voorkeursinstellingen aan het BIOS en het besturingssysteem kenbaar kunnen maken. Aan de hand van die informatie stelt de PCI controller de IRQ poorten, DMA kanalen, de I/O poorten en RAM of ROM geheugenadressen van de op de PCI bus aangesloten PNP PCI kaarten elektronisch in. Het moederbord, de randapparaten en het besturingssysteem moeten dit PnP mechanisme ondersteunen.
Vrijwel alle Peripheral Components Interconnect (PCI) en veel 16 bits Industrial Standard Architecture (ISA) adapters zijn Plug and Play randapparaten. OS/2 kan hier mee overweg. De PnP standaard stamt uit 1993 en Warps PnP.sys stuurbestand uit 1994. De bijbehorende BIOS instelling: Resources Controlled by: AUTO(ESCD) zet u dus aan.
Een zogenaamd PnP besturingssysteem (Windows) kan de door de PCI bus ingestelde waarden weer "verbeteren", maar een OS/2 gebruiker zet die BIOS optie liever uit: PnP OS (Plug and Play Aware OS) zet u dus op Disabled/Off/No. De reden is dat Windows bij de herverdeling van de BIOS hardware instellingen alleen met de belangen van Windows rekening houdt. Dat is gemakkelijk voor een Windows OEM leverancier, maar lastig voor u als u met OS/2 stuurbestanden wilt werken.
Bij de niet-PnP (legacy) ISA randapparatuur kunt u de adapterinformatie uit het handboek halen. Waar conflicten optreden moet u de instellingen van het randapparaat handmatig via jumpers en switches veranderen. De ingestelde waarden plaatst u typisch als parameters van de stuurbestanden in de CONFIG.SYS:
DEVICE=H:\MMOS2\MVPRODD.SYS /I:7 /D:5 /N:PAS161$ DEVICE=H:\MMOS2\AUDIOVDD.SYS PAS161$
In dit geval gebruikt het 16 bits ISA device (apparaat) PAS16$ (een ProAudio Spectrum geluidkaart) IRQ-7, DMA 5 en een niet nader vermelde I/O poort.
Maar bij PnP apparaten gaat dit via de electronische weg. Parameters als /I (voor IRQ), /D (voor DMA) zullen daarom ontbreken.
DEVICE=H:\MMOS2\SBLIVE32.SYS DEVICE=H:\MMOS2\SBLIVE16.SYS /V /C
Ook het delen van IRQs wordt via het BIOS door de PCI controller geregeld. In de regel hoeft u daar niets aan te veranderen, tenzij u precies weet wat u doet. Bij conflicten kan het soms helpen een PCI kaart in een ander slot te steken.
Het PnP BIOS en het besturingssysteem vragen de bruikbare IRQ's, DMA kanalen, I/O adressen, RAM en ROM adressen bij het PnP apparaat op. Plug and Play hardware componenten hebben een PCI Vendor ID en een PnP Device ID, dat de hardware identificeert en eventueel een PnP Compatible Device ID, waarmee het compatibel zou moeten zijn. Veel merken gebruiken immers dezelfde chips.
De PCI Vendor IDs worden verdeeld door de PCI Special Interest Group. De PnP Device IDs worden door de fabrikant bepaald. Een ID database staat o.a de The Linux PCI ID Repository. Daarnaast is een PCI Device lijst (pcidevs.txt) te vinden op Craig Hart's PCI Information Pages. Craig Hart is de auteur van het programma PCI info, waarvan OS/2 versies beschikbaar zijn. Verder vindt u de IDs terug in het Windows .INF bestand bij het stuurbestand. Dat laatste is wat merkwaardig omdat het idee achter PnP is dat de adapter zijn IDs en voorkeursconfiguratie zelf aan het OS kan mededelen....
Met die informatie probeert de Configuration Manager (CM) van het het BIOS de op het moederbord beschikbare bronnen optimaal te verdelen. Omdat het BIOS dit al doet voordat het besturingssysteem geladen is, zijn de instellingen voor ieder OS gelijk.
Initialize Plug and Play Cards... PnP init completed
Belangrijk is dat een PnP besturingssysteem nu ook weet hoe ze de hardware met haar stuurbestanden kan aanspreken.
Als u een modem koopt, koop dan een extern of intern niet PnP ISA exemplaar. USB wordt nog onvoldoende door Linux en OS/2 ondersteund. De meeste PCI modems zijn Winmodems. Met een extern, niet USB, en niet RPI modem dat gewoon op de seriele poort aan te sluiten is, zit u onder ieder OS goed.
Een normaal modem heeft geen stuurbestand nodig. Ga er dus niet naar op zoek. Ook de zogenaamde modem stuurbestanden van Windows 9x zijn niet meer dan wat initialisatie- en identificatieinformatie voor comm.drv, een stuurbestand dat de toegang tot de seriële poort bewaakt. Alleen softmodems hebben specifieke stuurbestanden nodig om de processor aan te sturen. Maar als een modem het onder DOS en Windows NT doet, zou hij het ook onder OS/2 of Linux moeten doen. ISA (ook PnP) modems geven in de regel geen problemen. Externe modems ook niet, voorzover ze niet van USB of een Rockwell RPI chip gebruik maken. Dozenschuivers leveren doorgaans goedkope, niet onder DOS, OS/2 of Linux werkende PCI Winmodems (zie: Winkukels). Deze interne modems missen een Digital Signal Processor (DSP) die het analoge signaal van de seriële poort in een digitaal signaal omzet. Die omzetting wordt bij een winmodem door de hoofdprocessor verricht.
OS/2 gebruikt twee algemene seriële poort stuurbestanden voor OS/2 en DOS. Deze seriële poort stuurbestanden emuleren seriële poorten onder OS/2 (com.sys), Dos en Win-OS/2 (vcom.sys). Het zijn geen modemstuurbestanden. Ze beïnvloeden de datastroom niet. Ray Gwinn levert een uitstekende shareware modem stuurbestand SIO als alternatief voor de OS/2 stuurbestanden: Zie zijn SIO Support WWW Server.
Stel u hebt per abuis een intern PCI-modem of (minder erg) ISA PnP modem gekocht. Het mag geen winmodem zijn. Bijna alle PCI modems zijn PnP modems.
Om te beginnen zet u de Setup van een modern PC BIOS PnP OS installed op NO. Hiermee voorkomt u dat Windows stiekem de instellingen in het BIOS zal veranderen.
Om te achterhalen welke parameters u aan de OS/2 seriële poort stuurbestand com.sys moet doorgeven, doet u onder Warp 4 het volgende:
OS/2 afsluiten en rebooten
Direct Alt-F1 toetsen zodra het OS/2 blokje verschijnt.
F5 - Automatisch laten vaststellen welke apparatuur u hebt
Op de OS/2 prompt " rmview /dc >c:\adapter.log " toetsen
Zoek in het zojuist gemaakte adapter.log het IRQ en het adres van de COM-poort en plaats ze in:
DEVICE=C:\OS2\BOOT\COM.SYS (Poort,Adres,IRQ) en
DEVICE=C:\OS2\MDOS\BOOT\VCOM.SYS (Poort,Adres,IRQ) als u het modem ook onder Windows of DOS wilt gebruiken.
Overigens werd ook gemeld dat het alleen noteren van de com poort (COM3), zonder de IRQ te specificeren onder SIO en Warp 4 bij een Pnp modem werkte.
De Plug-and-Play-HOWTO van David S. Lawyer, onderdeel van het Linux Documentation Project, geeft een goed overzicht van de valkuilen van Plug and Play.
The Linux/Modem Compatibility Knowledge Base geeft informatie over modems vanuit een niet-Windows perspectief. Tot voor kort ging er niets boven een extern modem. Die maakt gebruik van de instellingen van de seriële poort (waar Windows wijselijk van afblijft) en heeft zelf geen eigen poort, adres en IRQ nodig. Maar tegenwoordig (met de externe USB modems) is het al weer uitkijken geblazen.
Belangrijk is welke chipset uw PCI kaart heeft. Om dat te achterhalen kunt u een recente OS/2 port van Craig Hart's PCI+AGP bus sniffer gebruiken. Als PCI.exe (of "grafische" interface pci_moz.cmd) het volgende laat zien, dan is de voor de chip unieke PCI Device ID 10EC:8139 (hex:hex).
Bus 0 (PCI), Device Number 12, Device Function 0 Vendor 10ECh Realtek Semiconductor Device 8139h RT8139 (A/B/C/813x) Fast Ethernet Adapter
Het eerste hexidecimale getal (10ECh) is het door de Peripheral Component Interconnect Special Interest Group (PCI-SIG) aan de chipsetfabrikant toegekende unieke Vendor ID en het tweede hexidecimale getal (8139h) is het Device ID dat door de fabrikant aan zijn chipset is toegekend. De combinatie identificeert de Realtek 8139 chip.
Hexadecimale getallen als 10ECh worden ook wel als 0x10ec of 0x10EC geschreven (Zie: wiki). Uit de tabel blijkt dat alleen de 8169 en 8180 chips van Realtek (Rtl) ondersteund worden. De in de tabel vermelde RT2400 is van Ralink Technology. De naamgeving is verwarrend en het wordt nog verwarrender als het ene bedrijf chiptechnologie van het andere bedrijf overneemt. Windows gebruikers zitten er niet mee: ze krijgen de stuurbestanden uit de doos van de fabrikant of via Windows update, maar OS/2 en Linux gebruikers moeten wel hexidecimaal (sic) op hun tellen passen.
Succesvolle chips worden in meerdere producten gebruikt. Chipsets als de 11ab:4320 SK-98xx V2.0 Gigabit Ethernet Adapter worden door de chipfabrikanten aan moederbord fabrikanten (subvendors) verkocht. Ze krijgen dan naast het Vendor ID en het Device ID van de chipmaker een Subsystem Vendor ID van de adapter of moederbord fabrikant en een nieuw Subsystem Device ID. In mijn geval (een Edimax ethernetkaart) ging dit niet op.
PCI Class Network, type Ethernet Subsystem ID 813910ECh RT8139 (A/B/C/810x) Fast Ethernet Adapter (Generic ID) Subsystem Vendor 10ECh Realtek Semiconductor
Maar mijn in een Asus laptop moederbord met een in de SIS chipset(s) ingebouwde SiS900 10/100 Ethernet Adapter gaf:
Device 0900h SiS900 10/100 Ethernet Adapter Bus 0 (PCI), Device Number 4, Device Function 0 Vendor 1039h Silicon Integrated Systems (SiS) ... PCI Class Network, type Ethernet Subsystem ID 17651043h SiS900 10/100 Ethernet Adapter (Guess Only!) Subsystem Vendor 1043h ASUSTeK Computer Inc
U kunt in http://pciids.sourceforge.net/pci.ids (lang tekstbestand!) soms nagaan in welke producten de chipsets voorkomen.
# Syntax: # vendor-id vendor_name # device-id device_name # subvendor-id subdevice-id subsystem_name 11ab Marvell Technology Group Ltd. 4320 88E8001 Gigabit Ethernet Controller 1019 0f38 Marvell 88E8001 Gigabit Ethernet Controller (ECS) 1019 8001 Marvell 88E8001 Gigabit Ethernet Controller (ECS) 1043 173c Marvell 88E8001 Gigabit Ethernet Controller (Asus) 1043 811a Marvell 88E8001 Gigabit Ethernet Controller (Asus) 105b 0c19 Marvell 88E8001 Gigabit Ethernet Controller (Foxconn) 10b8 b452 EZ Card 1000 (SMC9452TXV.2) 11ab 0121 Marvell RDK-8001 11ab 0321 Marvell RDK-8003 11ab 1021 Marvell RDK-8010 11ab 5021 Marvell Yukon Gigabit Ethernet 10/100/1000Base-T Controller (64 bit) 11ab 9521 Marvell Yukon Gigabit Ethernet 10/100/1000Base-T Controller (32 bit) 1458 e000 Marvell 88E8001 Gigabit Ethernet Controller (Gigabyte) 147b 1406 Marvell 88E8001 Gigabit Ethernet Controller (Abit) 15d4 0047 Marvell 88E8001 Gigabit Ethernet Controller (Iwill) 1695 9025 Marvell 88E8001 Gigabit Ethernet Controller (Epox) 17f2 1c03 Marvell 88E8001 Gigabit Ethernet Controller (Albatron) 270f 2803 Marvell 88E8001 Gigabit Ethernet Controller (Chaintech)
Bijvoorbeeld: EPoX Computer Co., Ltd. (Vendor ID 1695) bouwt de Marvell 88E8001 Gigabit Ethernet Controller (device id 11ab:4320) in zijn moederbord in als 1695:9025. Maar omdat het om dezelfde chip gaat zouden ze wel eens met dezelfde drivers kunnen werken.
De eerste Advanced Configuration and Power Interface (ACPI) specificatie werd door Intel, Microsoft en Toshiba geschreven. Bios ontwikkelaar Phoenix en Hewlett-Packard sloten zich hier spoedig bij aan. Trendsetter Microsoft ondersteunde ACPI vanaf Windows 98. Het voordeel voor Microsoft en zijn OEM leveranciers was dat een MS Windows 98 OEM PC met ACPI voor hen wellicht gemakkelijk te configureren was. En daarmee was voor hen de kous af.
Onder het voorwendsel van een beter energiebeheer kon het ACPI consortium zich van oude legacy PCI en PnP standaarden ontdoen. Maar het ging hen niet alleen om energiebesparing. Het ging hen vooral om een marktaandeel.
Microsoft hoopte hiermee de concurrentie van Linux van zich af te schudden. Een citaat uit Bill Gates on Making ACPI Windows-specific uit de Leaked Antitrust Memo verduidelijkt dit:
From: Bill Gates Sent: Sunday, January 24, |999 8:41 AM TO: Jeff Westorinon; Ben Fathi Cc: Carl Stork (Exchange); Nathan Myhrvofd; Eric Rudder Subject: ACPI extensions One thing I find myself wondering about is whether we shouldn't try and make the "ACPI" extensions somehow Windows specific. If seems unfortunate if we do this work and get our partners to do the work and the result is that Linux works great without having to do the work. Maybe there is no way to avoid this problem but it does bother me. Maybe we couid define the APIs so that they work well with NT and not the others even if they are open. Or maybe we could patent something related to this
En eigenlijk hadden Microsoft en de PC leveranciers ook geen behoefte aan energiezuinigere software. Energiebesparing was goed voor het milieu, maar niet voor hun "meer is beter" business. In plaats van energiezuiniger te programmeren, verkozen de leidende Wintel soft- en hardwarefabrikanten er dus altijd voor om dezelfde kerntaken door zwaardere soft- en hardware te laten doen. Ondanks Niklaus Wirth's: A plea for lean software. Windows Vista is het hier het toonbeeld van.
Iedere zogenaamd nog energiezuinigere Windows versie (98, 2000, XP, Vista) verslindt meer geheugen en processortijd. En de hardware leveranciers willen maar al te graag de hiervoor benodigde zware machines verkopen. Energiebesparing en het milieu zijn niet hun probleem. En ook niet de behoeften van bijvoorbeeld de derde wereld kinderen (One Laptop per Child). Ze richten zich op de onwetende, maar goed betalende PC consumenten, die altijd de meeste hard- en software voor het minste geld willen. En dat gaat natuurlijk voor zijn (energie)rekening.
De andere notebook leveranciers waren er als de kippen bij. Ze moesten wel: als ze niet met het Windows 98 van de monopolist Microsoft konden samenwerken dan was hadden ze immers geen afzet. Maar hun in de haast voor de "MS Windows ACPI standaard" ontworpen "energiezuinige" hardware deed het vaak niet onder Windows 98. En vanwege de door de ACPI marktleiders met opzet gebrekkig aangeleverde documentatie werkten ze zeker niet onder Linux of een ander besturingssysteem.
Windows 2000 zou een volledig ACPI compliant besturingssysteem worden, maar het bleek dit in de praktijk ook niet te zijn. Veel hardware liet zich alleen installeren met ACPI disabled en/of met de BIOS instelling PnP OS op NO. De instelling waarmee ook OS/2 en Linux het best uit de voeten konden.
Tegenwoordig wordt ACPI ook op servers gebruikt. Hier zal het ACPI vaak uit te schakelen zijn. Energiebeheer heeft hier geen prioriteit. Door slechte ACPI implementaties in het BIOS uit te schakelen kunnen veel installatieproblemen (bronconflicten) worden voorkomen. Ook onder Windows 2000, 2003 en XP. Maar op notebooks is dat minder vaak het geval. Hier zullen de OEM leveranciers al blij zijn dat hun hardware het onder Windows XP doet. Maar dat hun Designed for Windows XP notebook voor andere besturingssystemen een risicofactor is, wordt zelden vermeld.
Voor Microsoft was dit ACPI debacle geen ramp. Integendeel. Waar gehakt wordt vallen spaanders. Als een hardware leverancier zich niet snel genoeg kon aanpassen aan haar normen (omdat ze misschien eerst wel generieke ACPI drivers wilden ontwikkelen) dan was dat zijn probleem. Daarom zijn er maar weinig PC chipset leveranciers over (Intel, NVIDIA, AMD, VIA Technologies, SiS en Broadcom). Maar het voordeel van deze chipset oligarchie is dat ze minder door Microsoft uitgespeeld kan worden.
De Advanced Configuration and Power Interface specificatie is de opvolger van het in notebooks gebruikte Advanced Power Management (APM) systeem. Kenmerkend voor ACPI is dat ieder op de PCI bus aangesloten apparaat zijn eigen stroombeheer kan voeren.
Met ACPI kan ieder PCI apparaat over zijn eigen power management systeem beschikken. Zo kunnen inactieve computers met het commando WakeOnLan geactiveerd worden. De hardwarefabrikanten schrijven hier de stuurbestanden voor. Maar in de Wintel praktijk werden die alleen voor Windows geschreven. En kwamen andere besturingssystemen in het nauw. Want helaas hield de ACPI standaard zich ook met andere zaken dan energiebeheer bezig.
De ACPI interface regelt ook de Plug en Play toewijzing van IRQ's en geheugenadressen. Het zogeheten PnP besturingssysteem Windows 98 kreeg onbeperkte vrijheid om de IRQ en geheugeninstellingen van het BIOS naar Microsofts goeddunken te herschikken.
Helaas kunt u dat in het ACPI BIOS van veel Designed for Windows XP laptops niet meer handmatig doen. Dit veroorzaakt problemen voor Linux en OS/2 gebruikers. OS/2 kan bijvoorbeeld alleen de IRQ's t/m 16 gebruiken. Maar als het ACPI BIOS slechts naar Windows luistert zal het ook IRQ's boven de 16 aan uw randapparatuur toewijzen. Zodat de legacy besturingssystemen DOS en OS/2 de apparaten niet meer zien. Veel niet ACPI besturingssystemen zullen niet eens meer booten.
c't 0102-99 ACPI-achtergrond: Alles onder controle
Eugene Gorbunoff werkt aan een ACPI-CA driver for eComStation. De beta drivers zijn beschikbaar via de eComStation Betazone.
ACPI subsystem (Power management, PnP, SMP)
* ACPI driver initializes multiprocessor/multicore/HT CPUs.
* It allows catch the Power button click
* The main purpose of the driver is provide ACPI interface to applied developers.
The ACPI driver will allow:
* It will care about power saving (APM functionality)
* it will control IRQ sharing
* it will enable to thirdparty applications control cooler, watch battery status, etc
* etc.
ACPI driver version 2.0.0 has been released (12/5/2005) on the eComStation Betazone. Advanced Configuration and Power Interface (ACPI) is a replacement for APM, PnP, and related hardware features. Apparently a future version of XWorkplace will support shutting down via ACPI. The latest version of the driver features support for multiprocessor systems (SMP, Dual Core, and HyperThreading).
Een belangrijk deel van zijn dromen kwam uit. Maar het blijft uitkijken geblazen op de hardware markt.
Voor wie meer weten wil over de de door OS/2 ondersteunde hardware: http://en.ecomstation.ru/hardware.php.
Het blijkt dat de meeste perifere hardware onder OS/2 niet werkt. Nu zou je zeggen: geen probleem. Er zijn duizenden modellen. Later we ons storten op degenen die wel werken. Maar het vervelende is dat de hardware leveranciers zelden vertellellen welke chips er in hun moederbord, geluids- en netwerkkaarten zitten. Ze vertellen wel de specificaties onder Windows op hun website, maar niet welke chip erop zit, laat staan of die het onder OS/2 en Linux doen. En de resellers (wederverkopers) nemen dit gedrag braaf over.
Door dit na te laten (dus door niet exact te vertellen wat ze verkopen) en doodleuk maar Microsoft Windows te adviseren krijgen de hardware leveranciers en OEM resellers korting van Microsoft. Maar de consument wordt hiermee gedupeerd.
Hoezo zegt de MS Windows gebruiker? Hierdoor wordt Windows toch voor mij goedkoper? Nee, dat is niet zo. Want door deze concurrentievervalsing handhaaft Microsoft haar monopolie positie. En blijft ze dus uw prijs bepalen. Het gaat dan niet meer om een markt van vraag en aanbod.
De dubbel betalende (voor de OEM en voor) OS/2 of Linux consument kan dus niet bij voorbaat weten of een systeem het ook OS/2 of Linux doet. Want daarvoor moet je niet de specificaties onder Windows, maar de chipsets weten. En vervolgens moet je op het internet nagaan of er geschikte stuurbestanden zijn.
En als die er niet zijn, moet je de onboard netwerkaart of geluidskaart vaak vervangen door een goedkoop, maar wel ondersteund PCI apparaat.
Wie wat meer echt zeker wil zijn - laptop hardware vervang je niet zomaar - kijkt daarom uit naar 2e hands gebruikte laptops . En zoekt op het internet uit of ze op uw besturingssysteem werken. Maar dat zou natuurlijk een taak van de fabrikant moeten zijn. Maar dat doen ze niet, omdat Microsoft u liever in het ongewisse laat.
OS/2 Warp 3 kwam in 1994 uit onder de naam OS/2 Warp for Windows. OS/2 Warp 4 werd in september 1996 uitgebracht. De kans is dus groot dat uw randapparatuur niet door de bij OS/2 gebundelde stuurbestanden worden ondersteund.
Nu is dat geen ramp, want u kunt zowel Warp 3 als 4 met door IBM uitgebrachte Fixpacks up-to-date houden (zie: OS/2 Fixpacks). Daarnaast kunt u stuurbestanden voor randapparatuur (audio, video etc.) van de internet site van de fabrikant of van een derde partij (SciTech, open source) downloaden. Ook zijn er CD's met stuurbestanden en fixpacks.
Een goed uitgangspunt is IBM's OS/2 Device stuurbestand Pak On-Line Home Page. Hier ziet u ook welke randapparatuur u voor OS/2 kunt gebruiken. Voor meer links zie Links naar hardware en stuurbestanden.
Wilt u een compleet OS/2 Warp 4 systeem installeren met recente fixes en stuurbestanden, dan kunt u het OS/2 Convenience Pak te kopen. Deze update mogelijkheid bestaat echter alleen voor bestaande OS/2 Warp gebruikers. Voor nieuwe en oude gebruikers levert Serenity Systems met eComStation een actuele OS/2 OEM op een bootable CD.
Maar tijdens de installatie van een originele Warp 3 of 4 moet u zich met de stuurbestanden van het installatiepakket behelpen. Dat vereist op moderne hardware een uitgekiende strategie.
OS/2 ondersteunt de Universal Serial Bus (DD Pak: USB), maar bij Warp 3 en 4 niet uit de doos. U moet dus niet meteen een USB muis en toetsenbord aansluiten. Gelukkig werken de meeste USB muizen met een bijgeleverde adapter ook als PS/2 busmuis.
Een lastig probleem is dat de technologie voor de IDE vaste schijven sinds 1994 drastisch veranderd is. Als u pech hebt wordt een grote vaste schijf niet eens door de IDE stuurbestand van Warp 3 of 4 herkend. Hier bestaan oplossingen voor die al u voor de installatie van Warp 3 of 4 op grote vaste IDE schijven toepassen moet. Voor details zie: Ondersteuning voor IDE harde schijven.
Voor Warp 3 bestaat er een update voor installatiediskette 1 in het pakket warpinst.exe. Deze bevat ook de fix voor de grote IDE schijven.
Nadat u de fix voor grote IDE schijven hebt toegepast kunt u OS/2 op de vaste schijf installeren. Hier gelden de volgende regels.
Stel u in eerste instantie tevreden met een eenvoudige maar werkende configuratie.
Kies als beeldscherm gewoon (S)VGA, kies de juiste muis (bij twijfel altijd Microsoft compatibel, dat zijn namelijk de meeste muizen, ook die van Logitech) en het juiste toetsenbord (meestal VS) en hoop dat de cd-rom wordt herkend.
Maar wacht even met de installatie van de geluidskaart en de snelste videostuurbestanden.
Het gaat er bij de installatie om dat u een opstartbare versie van OS/2 aan de praat krijgt. Pas daarna kunt het systeem updaten.
Zodra u OS/2 stuurbestanden voor de overige hardware gevonden heeft kunt u die installeren. Ook zult u met een recente videostuurbestand uw videokaart vrijwel altijd in hogere resoluties kunnen aanspreken.
Voordat u dat doet moet u zeker het hoofdstuk over de Alternatieve bootmethoden voor OS/2 eens doornemen.
Installeer de nieuwste stuurbestanden één voor één: Want als het mis loopt, zult u willen weten aan welke stuurbestand het ligt.
Zorg er altijd voor dat u de juiste instellingen van uw hardware adapters bij de hand hebt. Het installatieprogramma kan er naar vragen. Dus ken de resoluties en verversingsfrequenties van uw monitor en van uw ISA geluidskaart de gebruikte DMA kanalen, IRQ's en I/O geheugenadressen. U vindt ze in de handleiding. Voor PCI Plug en Play randapparaten speelt dit gelukkig niet.
Deze ontwerper werd ontslagen... |
Laat u vooral niet in de luren leggen door snelle computerjongens die u zelfverzekerd toeroepen dat "alles in de doos" zit, terwijl ze nog nooit in hun leven een stuurbestand voor OS/2 gebruikt, laat staan geïnstalleerd hebben. Controleer dus zelf de inhoud van de doos in de winkel op stuurbestanden voordat u tot de aanschaf van nieuwe hardware overgaat. En vraag om een inruilmogelijkheid als de hardware niet met de OS/2 stuurbestanden mocht werken. Verder is het verstandig om van tevoren zelf na te gaan of er stuurbestanden bestaan. IBM maakt voor veel apparatuur OS/2 stuurbestanden aan, die de hardware fabrikanten zelf vaak niet eens vermelden (Zie Links naar hardware en stuurbestanden). |
Als het goed is vindt u OS/2 stuurbestanden op CD of diskette en een goede handleiding in de doos van uw hardware. Bevat de stuurbestand een Device Driver Profiel (DDP bestand) dan kunt u het met het programma ddinstall.exe (Stuurprogramma's installeren) installeren. Andere hardware (bijv. een Microsoft optische wielmuis) maakt gebruik van bestaande protocollen al vermeldt de fabrikant dat niet.
Maar vanzelfsprekend is het niet, omdat nog teveel hardware fabrikanten er van uit gaan dat u tot de zee van Windows 9x gebruikers behoort die alles aan Setup Wizards en Plug&Play moeten overlaten.
Mocht niemand enig idee hebben of de hardware onder OS/2 werkt, kijk dan op zijn minst of de hardware compatibel is met Microsoft NT of DOS (printers). Op het internet is IBM's OS/2 Device Driver Pak On-Line Home Page een goede bron van informatie.
Pas met name op met het door Intel en Microsoft voor Windows 95 ontwikkelde Plug&Play (PnP), die maar ten dele door Warp 4 (en Warp 3, Linux of Windows NT) wordt ondersteund. De PnP detectie van Warp 4 moet u soms uitschakelen om Warp 4 te kunnen installeren (Zie De Alt-F1 methode en verderop in Plug & Play en PCI apparaten).
Een voordeel van het door Warp gehanteerde systeem is dat wijzigingen van basale zaken (moederbord, harde schijf) in de regel goed worden herkend. Dus als u de harde schijf met OS/2 verplaatst naar een andere computer hoeft alleen maar de stuurbestanden van de gewijzigde adapters ( geluidskaart e.d.) te remmen. U kunt daarna met de Alt-F1 methode in VGA modus opstarten om de videokaart en rest van de apparatuur selectief te installeren. Gebruik wel dezelfde opstartpartitie.
Complexe Linux configuraties laten zich in mijn praktijk eveneens gemakkelijk van PC naar PC verplaatsen (kopiëren mag hier ook). Zolang zaken als geluidskaarten maar als modulen worden geleden. Hier zijn de schijfletters geen probleem (fstab aanpassen). Maar bij de aanschaf van een ander moederbord moet u Windows meestal met de botte bijl "schoon" herinstalleren.
Bij Intel bestaat de tendens om de core business van randapparaten door stuurbestanden te laten doen. De reden is dat goede hardware moeilijk is te maken, terwijl de Intel software drivers zeer flexibel zijn. Voor stuurbestanden (en andere software) maakt het niet uit of ze met in de hardware ingebakken of met sofwarematige digitale logica communiceren. Op die manier praten Java applicaties met een door de Java Runtime Machine geëmuleerde RISC processor op de Intel PC. Het weliswaar trager, maar het werkt.
Bij Microsoft bestaat de tendens om de taken van het besturingssysteem (beveiliging, multitasking) meer aan de hardware leveranciers over te laten. Dus als de Windows API te traag was, moesten de hardware leveranciers maar met goede DirectX apparatuur en drivers komen. Op die manier werd Windows een spelletjesplatform. Tegenwoordig wordt zelf de multithreading aan Intel uitbesteed (een P4 feature).
De Designed for Windows only (rand)apparaten zijn voor Microsoft en Intel een WINdows-(W)INtel situatie: Microsoft en haar vazallen leveren de "intelligente" stuurbestanden en Intel de brute processorkracht. Deze alleen onder hun Windows OEM werkende hersenloze hardware noem ik winkukels (inderdaad naar Marten Toonders minkukels bedacht).
Want met deze exclusieve Windows chips sluiten Microsoft en Intel andere partijen van mededinging uit. Het gaat om gepanteerde Winmodems, Softmodems, Winprinters en zelfs hakkelende MS Speakers. Ze worden typisch geleverd op de goedkope Wintel OEM merksystemen van Compaq en DELL. Bij de aanschaf hiervan kijkt toch iedereen alleen naar de processor.
OS/2 gebruikers hoeden zich voor dergelijke winkukels die het onder DOS, OS/2, Linux en NT niet zullen doen. Deze halfbakken producten missen bepaalde chips, waardoor ze een paar tientjes goedkoper kunnen zijn. In plast hiervan komen ze met gepatenteerde stuurbestanden, die alleen onder hun Windows OEM versie werken. Maar als u op Windows uitgekeken bent, kunt u met dergelijke OEM hardware geen kant meer op.
Dergelijke softmodems en -printers stelen bovendien de processortijd en het geheugen van uw applicaties. De enige die hiermee iets wint is Intel. En Microsoft omdat u met die vreselijke apparatuur aan het Windows platform gebonden bent. Uw OEM en hardware leverancier bespaart een paar tientjes op het randapparaat, maar u hebt wel een veel duurdere Intel processor nodig. En dan nog is de kans op storingen, verbroken connecties groot (bijv. als er een wav bestand afgaat bij "U hebt mail"). Dat komt omdat er in deze eendagsvliegen maar weinig tijd geïnvesteerd wordt. Want na twee jaar is de Wintel hardware al weer verouderd. Want dan komt de lang verwachte en nog meer resources verslindende "veilige en stabiele" Windows versie uit.
OS/2 en Linux gebruikers kiezen niet voor die wet van Niklaus Wirth: Software gets slower faster than hardware gets faster. Bovendien schakelen de marktmechanismen met het inzetten van winkukel hardware andere software a priori uit. Dergelijke OEM deals tussen de monopolist Microsofts en zijn hardware vazallen zijn dodelijk voor de vrije concurrentie tussen de besturingssystemen.
Met een goedkope Winprinter kunt u misschien in lage resolutie GhostScript aanspreken, maar verder valt er weinig plezier aan te beleven. Een normale printer heeft een ingebouwde processor en printergeheugen, maar een Winprinter steelt dat van uw Windows OEM systeem. En alleen onder Windows. Zo'n printer staat zelfs niet toe dat een DOS programma onder Windows iets kan printen. Negeer dus het weinig zeggende Designed for Windows label, maar eis dat uw apparatuur onder ieder besturingssysteem werkt.
Onder DOS beslaat het grafische videogeheugen het 640-704 kB gebied. Maar omdat dit 64 kB (een bekende DOS limiet) EGA gebied te klein is voor de 256 kB van VGA, laat staan voor 2 MB videogeheugen van het Super VGA werden de Video Graphics Array (VGA) gegevens in meerdere etappen opgehaald.
Bij VGA beeldschermopbouw werden achtereenvolgens bit voor bit 64 kB van de RGB kleuren rood, groen en blauw en 64 kB met intensiteitswaarden van de videokaart naar het RAM en vervolgens door de processor naar de monitor geschreven. Dit viervoudige pagineren voor ieder VGA beeld resulteerde in een zeer trage beeldschermopbouw van grafische programma's en belastte de processor enorm.
Vandaar dat Microsoft de aanmaak van grafische versnellerkaarten onder Windows stimuleerde. De overdracht verloopt dan in blokken en het liefst via direct memory acces (DMA) kanalen. Maar de video versnellerkaarten hebben speciale stuurbestanden en een API als DirectX nodig om het besturingssysteem (eigenlijk de processor) te ontlasten. Maar dat doen ze dan ook. Inmiddels gebruiken de snelste grafische chips al meer energie dan de hoofdprocessor.
Sinds 1988 (OS/2 versie 1.10) heeft OS/2 een grafische gebruikersinterface met de naam Presentation Manager. En dus had OS/2 grafische voor de grafische modi videostuurbestanden nodig. De video hardware fabrikanten schreven de hier EGA en VGA stuurbestanden voor. Net zoals ze deden voor Windows versie 1 (1985) en Windows versie 2 (1987) en al veel eerder voor DOS.
Het besturingssysteem bracht een grafische interface uit die vertelde hoe grafische API te benaderd moest worden en het was de taak van de hardwarefabrikanten om hiervoor de juiste stuurbestanden aan te leveren. Want alleen zij konden weten wat hun hardware deed. Wat hen hierbij hielp was dat die grafische interface van het PC BIOS door het IBM helder was gedefinieerd.
De eerste 8 bits IBM Personal Computers met DOS maakten gebruik van een Monochrome Display Adapter (MDA) met 4 KiB videogeheugen uit 1981 die alleen tekst in 80 kolommen en 25 regels in twee kleuren (monochroom) kon weergeven. Voor tekstverwerking, databases en spreadsheets was dat genoeg.
De Color Graphics Adapter (CGA) videointerface uit hetzelfde jaar kende een grafische modus die 320×200 pixels in 4 kleuren of 640×200 pixels in 2 kleuren (16 KiB videogeheugen) kon weergeven.
De Enhanced Graphics Adapter (EGA) van de 16 bits IBM AT uit 1984 ondersteunde een 640×350 pixels beeldscherm in 16 kleuren. Hiervoor was 64 KiB videogeheugen nodig.
De MDA, CGA en EGA videokaarten werden via bus digitaal geadresseerd. Het 8 bits DOS kon 2 tot de macht 8 is 64 KiB geheugen adresseren. De 16 bits met de Intel 286 processor uitgeruste IBM AT kon veel meer adressen aan (4 MiB), maar wachtte nog op een 16 bit besturingssysteem. Hiervoor zou IBM Microsoft inhuren om OS/2 te schrijven. Maar Microsoft schreef ook de code van een 16 bits Windows besturingssysteem dat boven het 8 bits DOS liep.
De Video Graphics Array (VGA) standaard met 640×480 pixels (256 KiB videoram) op de 16 bits IBM PS/2 computers uit 1987 kreeg daarom een analoge videointerface. Want alleen via speciale analoge technieken kon het 8 bits DOS met een adresseringslimiet van 64 KiB het 256 KiB videogeheugen van een VGA videokaart aanspreken. Want het 8 bits DOS zag alleen maar een deel van de 16 bits adresseringsruimte van de IBM AT. Net zo goed als wij mar een deel zien van de adresseringsruimte van God of zo u wilt het Universum.
Zonder een goed stuurbestand voor uw videokaart bent u nergens. Installeer dit stuurbestand voor de printerstuurbestanden. Moderne printerstuurbestanden maken nog wel eens gebruik van de videostuurbestanden. De viewers van Object Desktop 2 doen dit ook. Omgekeerd gebeurt het ook - zoals in Lotus Smartsuite voor OS/2 - waar de printerstuurbestanden voor een WYSIWYG beeld zorgen. Bij onbegrepen problemen met printers en viewers, kan het daarom geen kwaad de stuurbestanden van de videokaart weer eens opnieuw te installeren. Voordat u dat doet kunt u gebruik maken van de Alt-F1 methode. Als een onbegrepen probleem zich niet voordoet op het standaard VGA scherm bent u aan nieuwe stuurbestanden of een andere videokaart toe.
Omdat steeds minder videokaartfabrikanten de moeite namen om beeldschermstuurbestanden voor OS/2 te ontwikkelen werd in 1996 Graphics Adapter Display Device (GRADD) systeem gelanceerd.
Dit is een 32 bits OS/2 videodrivermodel dat basale videofuncties uitvoert. De fabrikant hoeft er slechts wat kaartspecifieke items aan toe te voegen.
2D geacceleerde Gradd stuurbestanden voor ATI Rage II/Mach 64, Chips & Technology 6555X, Cirrus Logic, ATI Rage II, Matrox Millenium/Mystique,* S3 864/TRIO, S3 Virge/Virge VX, VGA en "Generic" SVGA werden door IBM verstrekt.
Mocht een videokaartfabrikant geen interesse hebben om energie te steken in een OS/2 stuurbestand (tegenwoordig de regel), dan zou de Generic VESA Unaccelerated GRADD (GENGRADD) driver het op iedere VESA compatibele SVGA kaart moeten doen. Maar u mist dan wel 2D versnelling. Zaken als de opbouw van het scherm, het scrollen in vensters en het verplaatsen en vergroten van vensters verlopen zonder 2D acceleratie bepaald niet soepel en er is, zeker in de hoge kleurdiepten en resoluties, veel meer CPU kracht mee gemoeid.
Het idee GRADD was goed, maar het kwam te laat. Het idee was: Laat niet iedere hardware fabrikant het OS/2 wiel opniew uitvinden.
Voor het installeren van GRAD drivers (ik gebruik ze in Virtual PC) moet u vaak de SET LANG= taalinstelling van de CONFIG.SYS aanpassen. U moet het bestand uitpakken met de -d optie, zodat de subdirectories worden afgebeeld.
Daarna is de syntaxis (hier voor de VPC S3 chip): setup S3 [gradmap] [bootdrive]. U moet de (gedeeltelijk grafische) installatie onder PMShell uitvoeren (boot met Alt-F1 kies voor VGA).
Een grote verbetering was de door SciTech ontwikkelde platform onafhankelijke techniek. De SciTech Display Doctor (SDD) voor OS/2 maakt gebruik van de GRADD interface. Maar de SciTech Nucleus voegt hier specifieke CPU en videochipset ondersteuning aan toe, zodat de OS/2 gebruiker de acceleratie mogelijkheden van de hardware veel beter kan benutten.
Windows programma's gebruiken Microsofts Direct X bibliotheek om de video- en geluidskaart rechtstreeks te benaderen. Hiermee worden de hoofdprocessor en Windows ontlast. Hardwarefabrikanten beconcurreren elkaar om de snelste Direct-X compatible video- en geluidskaarten en stuurbestanden te maken. Hierdoor kunnen softwarefabrikanten de hardwarevereisten van hun spelletjes opvoeren zonder dat Microsoft iets aan de snelheid van Windows hoeft te doen. De versnelling wordt immers door de hardware en de stuurbestanden van de fabrikant zelf geleverd. De direct X bibliotheek van Windows biedt slechts de interface.
Maar OS/2 heeft zich niet tot zo'n succesvol multimediaplatform kunnen ontwikkelen. Er zijn nauwelijks OS/2 spelletjes, de grafische bibliotheken lopen op de ontwikkelingen in de hardware achter en maar weinig fabrikanten van video- en geluidskaarten hebben de laatste jaren goede stuurbestanden voor OS/2 ontwikkeld. De beste multimedia-ondersteuning komt daarom van een derde partij: de al eerder genoemde firma SciTech.
Voor 2D multimedia programma's beschikt OS/2 van oudsher over de DirectDraw achtige Direct Video Extensions (DIVE). De Digitale Video Editor (met de papegaai uit mcaw.avi) maakt er gebruik van. Helaas kunnen maar weinig videokaarten deze DIVE extensies benutten. Wellicht is dat ook de reden dat er maar weinig dive-enhanced applicaties bestaan. SDD heeft hier verandering in gebracht. Voor bepaalde kaarten kunnen de recent door Valery Gaynullin uitgebrachte HWEnDIVE stuurbestanden SDD weer versnellen. Warp Overlay (10 Euro) van dezelfde auteur vervangt de hele DIVE API. Dit stuurbestand is voor VPC en Warpvision en andere 2D video beslist een aanrader. EmperoarTV draait het videobeeld van mijn Hauppauge WinTV 350 ("videorecorder") kaart zonder haperingen in de hoogste resolutie van de Matrox G400 kaart op een 21" scherm.
Ook de cross platform OpenGL versie 1 grafische bibliotheek van SGI wordt door OS/2 Warp 4 ondersteund. Toch maken maar weinig OS/2 programma's hier direct gebruik: alleen StarOffice 5.1 bij mijn weten. En spelletjesmakers die zich op de cross platform OpenGL API richten waren er maar weinig. Wel zien we de laatste tijd meer programma´s die via de Simple DirectMedia Layer (SDL) van OpenGL gebruik maken.
Via een recentere OpenGL versie (WarpUpdates International: OpenGL) wilde SciTech OS/2 hardwarematige 3D ondersteuning geven. Helaas kwam die slechts voor bepaalde VooDoo kaarten tot stand. Bovendien is OpenGL nog geen Open Source. Recent bleek Microsoft nog OpenGL rechten van SGI opgekocht te hebben.
Voor een overzicht van onder OS/2 gebruikte bibliotheken zie: Multiplatform Game Programming in OS/2.
SDD stelt de MTTR registers van K7 en P4 zelf in. Voor andere GRADD videostuurbestanden kunt u een utility op Hobbes vinden.
IBM heeft een licentie op de SciTtech technologie genomen. Veel VESA compatibele PCI en AGP kaarten kunnen aangesproken worden met de beperkte IBM versie van de SciTech Display Doctor for OS/2 (SDD) die minimaal OS/2 Warp 4 met fixpak 5 of Warp 3 with fixpak 35 nodig heeft. Deze "gratis" versie ondersteunt gangbare resoluties. Meestal levert SDD een duidelijke snelheidswinst onder OS/2's PM Shell op. De resultaten onder Win-OS/2 (seamless en en FS) op de Wintach Benchmark vielen me daarentegen tegen. De eigen Matrox G400 stuurbestand deed het hier 8 keer beter. Ook werden kleinere fonts niet goed weergeven. Dit was met set opdrachten wel instelbaar (lees de README). Ik heb op een OS/2 systeem de laatste regels van de config.sys weer verwijderd:
REM beeldschermkaart
DEVINFO=SCR,VGA,I:\OS2\BOOT\VIOTBL.DCP
SET VIDEO_DEVICES=VIO_SVGA
SET VIO_SVGA=DEVICE(BVHVGA,BVHSVGA)
DEVICE=I:\OS2\MDOS\VSVGA.SYS
SET GRADD_CHAINS=C1
DEVICE=I:\OS2\GRADD.SYS
DEVICE=I:\OS2\MDOS\VMANWIN.SYS
SET VCFG_NO_DDC=TRUE
SET C1=SDDGRADD
DEVICE=I:\OS2\SDDHELP.SYS
Met een Alt-F1 + F3 (Alt-F1 methode) kon ik onder VGA de Matrox stuurbestand weer installeren. Ik wist dat als het misging ik via de onderhoudspartitie de oude config.sys (backup!!) weer zou kunnen herstellen. Matrox maakte er het volgende van.
REM Matrox VGA kaart
DEVINFO=SCR,VGA,I:\OS2\BOOT\VIOTBL.DCP
SET VIDEO_DEVICES=VIO_MGA
SET VIO_VGA=DEVICE(BVHVGA)
DEVICE=I:\MGA\OS2\KMGAX64.SYS
SET MGA=I:\MGA\OS2
SET VIO_MGA=DEVICE(BVHVGA,BMGAX64)
DEVICE=I:\OS2\MDOS\VVGA.SYS
DEVICE=I:\OS2\MDOS\VMGAX64.SYS
De geëigende weg is hier het Uninstall utility in de SDD Folder. Maar die verwijdert meteen ook alle SDD bestanden.
Inmiddels heb ik de Professionele Editie van de OS/2 Scitech DisplayDoctor in gebruik. Deze ondersteunt alle mogelijke beeldschermresoluties en -verversingsfrequenties. Mijn monitor en videokaart werden automatisch gedetecteerd. Onder OS/2 is hij snel en stabiel.
Maar de snelheid van opbouw van Win-OS/2 vensters liep ook hier weer achter op die van de Matrox (G400) kaart. Avi en MPG filmpjes worden overigens prima weergeven. Gaat het te traag, dan moet u een lagere kleurdiepte overwegen. Waarschijnlijk stuurt de originele Matrox stuurbestand het scherm onder Win-OS/2 directer aan, maar de snelheidswinst gaat ten koste van de stabiliteit van PM Shell. Het versterkt weer mijn indruk dat veel onbegrepen problemen onder OS/2 (en Windows) met videostuurbestanden te maken hebben. Al met al ben ik zeer onder de indruk. En wel het meest van de stabiliteit van de stuurbestanden. Ik kan u aanraden eens een probeerversie op te halen: SciTech Download Files: SciTech Display Doctor for OS/2 . Als hij u bevalt kunt u hem registreren via Mensys.
Videoproblemen die zich alleen onder DOS en WIN-OS/2 sessies voordoen kunnen berusten op:
Foutieve videostuurbestanden
Verkeerde Beeldscherminstellingen voor DOS.
Het ontbreken van een DOS TSR in de autoexec.bat die de videomode (refresh rate) van de monitor instelt.
Bij de Beeldscherminstellingen voor DOS gaat het in mijn praktijk vooral om:
VIDEO_8514A_XGA_IOTRAP |
Bij mij toch Aan onder Win-OS/2 i.v.m. modem gebruik, uit is sneller. |
VIDEO_FASTPASTE |
Aan onder Win-OS/2, alleen niet merkbaar sneller |
VIDEO_ONDEMAND_MEMORY |
Aan onder Win-OS/2, verder uit |
VIDEO_MODE_RESTRICTIONNONE |
De meeste DOS applicaties kunnen al niet overweg met 640 KB |
VIDEO_RETRACE_EMULATION |
Standaard uit |
VIDEO_ROM_EMULATION |
Uit. Aan geeft zelden verbetering |
VIDEO_SWITCH_NOTIFICATION |
altijd aan onder Win-OS/2, verder uit |
VIDEO_WINDOW_REFRESH |
Standaard 1 |
Ad 3. Dit wordt gemakkelijk gemist. De DOS emulatie van OS/2 laat gelukkig specifieke instellingen in de autoexec.bat toe.
Nadat SciTech ermee op hield kwam er vanuit Rusland een alternatieve generieke videodriver. IBM GRAD was goed voor 4:3 beeldscheremen, maar na de introductie van Windows Vista en ook door de opkomst van breedbeeld video kwamen de 6:4 schermen in de mode.
OS/2 is een uitstekend muziekplatform, maar het kan lastig zijn om een geschikte geluidskaart voor OS/2 te vinden. Ze zijn verkrijgbaar, maar ze worden zeldzaam. Veel geluidskaartmakers vertikken het om OS/2 stuurbestanden te laten maken. Bovendien kan de mate van ondersteuning tegenvallen. Wees dus kritisch bij de aanschaf bij een PC. Kijk eerst op de OS/2 Device stuurbestand Pak On-Line Home Page en de PCI Soundcard Matrix. En gooi oude geluidskaarten nooit zomaar weg. Op een nieuwe PC kunt u voor een paar tientjes een wel door OS/2 ondersteunde tweede geluidskaart (laten) installeren. Zo heb ik lange tijd van een ISA Pro Audio Spectrum gebruik gemaakt, die naast een op het moederbord ingebouwd PCI geval geprikt stond. Op dit moment gebruik ik een SBLive geluidskaart naast een in het moederbord geïntegreerde chip. Meerdere geluidskaarten op een PC is geen probleem. Want alleen de geluidskaart waarvoor een stuurbestand geinstalleerd is wordt gebruikt.
U moet de Programmatuur voor Multimedia (MMPM/2) installeren. Natuurlijk heeft u stuurbestanden nodig. Bij een recente geluidskaart is de kans groot dat de voor OS/2 benodigde stuurbestanden voor uw geluidskaart niet met Warp meegeleverd wordt. Als uw geluidskaart CD niet over een OS/2 sectie beschikt, installeert u de MMPM/2 zonder geluidskaart en gaat u op het internet op zoek naar een geschikte driver.
Stuurbestanden worden via het programma minstall.exe geinstalleerd. Het programma vraagt naar de map met stuurbestanden en leest hier een configuratiescript (.scr) in. Met die gegevens verzorgt het de installatie van stuurbestanden en bibliotheken. Het programma kan ook gebruikt worden om stuurbestanden te deïnstalleren. Hierbij vult u het aantal 0 in.
Momenteel geniet ik van breedband streaming audio via de uitstekende mp3 speler z!. De geluidskaart is een Soundblaster Live! die door de van Linux geporteerde OS/2 Netlabs: Soundcard Device stuurbestanden ondersteund wordt. Het open source stuurbestand zal maar een fractie van de mogelijkheden van de Windows stuurbestanden benutten (vele MB's op die CD), maar gebruikt ook minder overhead.
Zo wordt Midi niet via dit open source stuurbestand door de MMPM/2 interface ondersteunt. Midi en MOD bestanden speel ik daarom af met TiMidity for OS/2. TiMidity (Tuukka Toivonen e.a.) converteert MIDI bestanden naar de wel ondersteunde WAVE bestanden m.b.v. de Gravis Ultrasound (GUS) patch files. De zo gegenereerde digitale audio kan real-time afgespeeld worden.
Sinds kort is er ook een OS/2 port van het open source ALSA Project die als de Universal Audio Driver bekend staat. Binaries vindt u op Hobbes en op de Uniaud web site.
DEVICE=D:\MMOS2\UNIAUD32.SYS /V /C:CARDNAME - /V Verbose - /C:CARDNAME Where CARDNAME is : - SBLIVE : Sound Blaster Live! - CS4281 : Cirrus Logic CS4281 - ALS4000 : Avance Logic ALS4000 - CMEDIA : C-Media CMI8738, CMI8338 - ICH : Intel ICHx, NFORCE1/2/3 - CS46XX : Cirrus Logic CS4280, CS46XX - VIA82XX : VIA VT82C686A/B/C, VT8233A/C, VT8235 - ESS1938 : ESS Solo-1 (ESS 1938) - MAESTRO : ESS Maestro1/2/2E, TerraTec DMX - MAESTRO3 : ESS Maestro3/Allegro/Canyon3D-2 - YAMAHA : Yamaha YMF 724/724F/740/740C/744/754 - ENSONIQ : Ensoniq AudioPCI ES1371/73, Creative Labs SB PCI64/128 - ALI5451 : ALI 5451 Force detection of specified audio hardware DEVICE=D:\MMOS2\UNIAUD16.SYS /V /C /M /L - /V Verbose - /C Enable CD output - /M Enable Microphone output - /L Enable Line-In output
Het geluid onder Win-OS/2 spreek ik aan met de The generic WIN/OS2 audio device driver van John Gow (genaud-v3.1r02.zip).
Team OS/2 Ruhr e.V. - Service - Broschüren bevat de PCI Soundkarten unter OS/2 (PDF).
Creative Labs' Soundblaster and OS/2
The OS/2 Real-Time MIDI Subsystem
List of device bandwidths - Wikipedia
The PC Guide: Systems and Components Reference Guide : zeer goed overzicht van hardware.
the History of Computing Project
Andrew S. Tannenbaum: Gestructureerde computerarchitectuur (2e herziene druk, Academic Service)
Väter des Computer op Bernd Leitenberger's Computer Seiten
History of IBM : Hier geeft een zoektocht naar OS/2 48,295 resultaten.
Bus Oddessy 2001 : over het gebruik van DMA in IBM systemen.
Design Overview - Windows Hardware and Driver Central
Design Guidelines for PCs : Microsoft en Intel zetten de touwtjes uit via hun jaarlijkse PC Design Guides.
BIOS recommendations for eCS v1.2.x
Mark Minasi: The complete PC upgrade & maintenance guide (9th edition). Sybex,Alameda 1998.