4 Computer- en besturingssystemen 4.1 Inleiding Tegenwoordig is de Personal Computer bijna niet meer weg te denken uit het dagelijkse leven van iedereen. Je vindt ze op het werk, op school, in de bioscoop, tot in de huiskamer van de meeste gezinnen van tegenwoordig. Ook het internet draagt bij tot de enorme populariteit van de PC voor de gewone consument, immers een schat van informatie ligt binnen handbereik met een paar eenvoudige muisklikken. Bankieren, concerttickets bestellen, aankopen doen, het kan tegenwoordig allemaal vrij eenvoudig met behulp van de PC. Net zoals auto's vind je computers in alle maten en gewichten, afhankelijk van het budget, de functies die het toestel moet uitvoeren en de smaak van de consument. Je hebt eenvoudige computersystemen die kunnen dienen voor de doorsnee huis- tuin- en keukentoepassingen, net zoals je eenvoudige auto's hebt die met niet al te veel comfort de bestuurder brengt waar hij moet zijn. Natuurlijk zijn er bestuurders die zich graag in een klassewagen van een van de duurdere merken verplaatsen, net zoals je computers hebt met meer stijl, design en rekenkracht. Zoals bij wagens is een computersysteem opgebouwd uit een aantal basiscomponenten die bijna voor alle systemen hetzelfde zijn. Elke auto heeft een chassis, 4 wielen en een motor, net zoals elke PC een moederbord, geheugen en een processor bevat. En toch is elke auto, en elk computersysteem weer net iets anders dan een ander... Het doel van deze sessie is om dieper in te gaan op de verschillende basiscomponenten waaruit een PC bestaat, en hoe die met elkaar samenwerken. Verder zullen we enkele basisprincipes van besturingssystemen kort toelichten. Ook krijg je een aantal tips bij de verschillende componenten om naar fouten te zoeken of om ze op een bepaalde manier te behandelen.
4.2 Anatomie van een computersysteem 4.2.1 Werken aan je PC Voor je aan een computersysteem gaat werken zijn er een aantal voorzorgsmaatregels die je in acht moet nemen. Eerst en vooral is het best dat je voor je begint de computer uitschakelt, en de stroomkabel verwijdert. Op die manier kan je niet per ongeluk het moederbord beschadigen omdat het nog onder spanning staat. Immers een schroef of schroevendraaier die op een moederbord onder spanning valt kan door kortsluiting onherstelbare schade veroorzaken. En verder beperk je voor jezelf ook het risico op een elektrische schok door aanraking van componenten die onder spanning staan. Soms hoor je wel eens het advies om de computer wel uit te schakelen, maar de stekker niet van het toestel te verwijderen. Op die manier verminder je de kans op schade door statische elektriciteit, omdat je jezelf ontlaadt wanneer je de kast aanraakt. Statische elektriciteit ontstaat door wrijving van je lichaam met je kleren. We hebben allemaal wel eens het geknetter gehoord wanneer we een warme trui uitdoen in de winter. Dat geknetter is afkomstig van statische elektriciteit. Om het risico van beschadiging door statische elektriciteit te verminderen kan je jezelf aarden met behulp van een anti-statisch armbandje. Verder is het nog belangrijk dat je het computersysteem op een stabiele en stevige ondergrond Module C3, Sessie 2
Computer- en besturingssystemen
Pagina 1/17
plaatst, zodat hij niet per ongeluk op de grond zou kunnen vallen. Bepaalde onderdelen in het systeem zouden een dergelijke val waarschijnlijk niet overleven. En tenslotte moet je ook bedenken dat het systeem na de werkzaamheden ook terug in elkaar gezet moet worden, liefst zonder schroeven of andere onderdelen over te houden wanneer alles (ogenschijnlijk) terug op zijn plaats zit. Je zou foto's kunnen nemen van elke stap die je onderneemt bij het uit elkaar halen, maar een eenvoudige pen en een blad papier kan ook al wonderen verrichten. Misschien kan je zelfs een doos of iets dergelijks met verschillende opbergvakjes voorzien om alles netjes op te bergen.
4.2.2 De kast (behuizing) Wat de carrosserie is voor de auto is de computerkast voor het computersysteem. Het gaat hier over een metalen kast, meestal met een plastieken omhulsel, waarin de verschillende componenten van een computersysteem gemonteerd kunnen worden. Meestal is minstens een ruimte voorzien voor een floppy disk drive (FDD), en zijn er een aantal status-LEDs aanwezig om aan te duiden of het systeem onder spanning staat, en of er schijfactiviteit is. Aan de achterkant is ruimte voorzien om uitbreidingskaarten in het systeem te kunnen steken, en voor de aansluiting van een muis en toetsenbord. De kast is van metaal om ongewenste stoorsignalen weg te houden van de gevoelige elektronische componenten binnenin, en om er voor te zorgen dat de signalen die de computer genereert geen andere apparaten in de buurt kunnen storen. De kast doet dus dienst als een kooi van Faraday. Alle onderdelen die zich in de metalen kooi van Faraday bevinden zullen niet beïnvloed worden door signalen buiten de kooi, omdat die via het metaal afgeleid worden, maar het omgekeerde is ook waar. Processoren genereren bijvoorbeeld ook elektrische signalen die andere apparaten kunnen storen, maar dankzij de metalen kast wordt die storing tot een minimum beperkt. Een andere functie van de behuizing is het onderhouden van een gekoelde en min of meer propere toestand van de onderdelen die er in gemonteerd zijn. Je zou een computersysteem ook zonder behuizing kunnen laten werken, maar dan verloopt de koeling van de verschillende onderdelen niet optimaal en zullen de onderdelen binnen de kortste keren met een dikke stoflaag bedekt worden.
Desktop behuizing (mini-)tower
Er bestaan 2 verschillende uitvoeringen voor computerbehuizingen. Is het model van de kast zodanig dat hij best tot zijn recht komt in horizontale houding, dan spreekt men van een desktop behuizing. Staat de kast rechtop, dan noemt men dit een (mini-)tower behuizing. In een tower behuizing zal je in het algemeen meer componenten (harde schijven, cd-roms, ...) kwijt kunnen dan in een desktop systeem.
Module C3, Sessie 2
Computer- en besturingssystemen
Pagina 2/17
4.2.3 De voeding Een tweede belangrijk onderdeel van het totale systeem is de voeding, te vergelijken met de brandstoftank van een wagen. Een voeding zet de wisselstroom die uit het stopcontact komt om naar gelijkspanning voor de elektronische componenten die gebruikt worden in het computersysteem. Er worden in een computersysteem voltages van 3,3, 5 en 12 volt gebruikt voor het aansturen van de verschillende componenten. Een belangrijke parameter van de voeding is het vermogen dat ze kan leveren, uitgedrukt in Watt. Moderne voedingen bestaan in verschillende uitvoeringen, gaande van 200 Watt tot 400 Watt voor de veeleisende computergebruiker. De snelle processors in de huidige systemen verbruiken heel wat energie. Als je ook nog verschillenden andere apparaten op het systeem wil aansluiten moet je er voor zorgen dat de voeding van het systeem voldoende vermogen kan leveren om alle apparaten tegelijkertijd van energie te voorzien. Je kan beter de voeding wat overdimensioneren (d.i. Een zwaardere voeding gebruiken dan nodig) om later problemen te vermijden wanneer je bijvoorbeeld een extra harde schijf in je systeem wil bijvoegen. TIP!
Wanneer je PC na verloop van tijd, of na het toevoegen van extra hardware (harde schijven, ...) om onverklaarbare reden op een willekeurig tijdstip uitvalt of herstart, dan kan je best eens controleren of de voeding nog wel krachtig genoeg is.
Een computer die constant aanstaat verbruikt constant energie, en daar moet je voor betalen. Hou er rekening mee dat dit een aardig bedrag aan energiekosten kan opleveren! We spreken dan bijvoorbeeld over bedragen van 500 euro of meer op jaarbasis. Er zijn natuurlijk mogelijkheden aanwezig om energie te besparen, zoals het automatisch uitschakelen van een monitor wanneer er een bepaalde tijd geen activiteit is geweest, of je kan de PC in standby toestand schakelen wanneer je hem een bepaalde tijd niet gebruikt. TIP!
Het scherm van een computer is een van de grootste stroomverbruikers. Het is dan ook aangeraden om de stekker van het scherm niet aan te sluiten op de voeding van de PC, maar rechtstreeks op het elektriciteitsnet.
4.2.4 Het moederbord (system board, mainboard) Alle componenten van een computersysteem worden samengebracht op het moederbord, het hart van elk computersysteem, zoals het chassis van een wagen. Het moederbord bepaalt welk soort van processor, en welk type geheugen je kan gebruiken om je computersysteem te laten werken. De moderne moederborden hebben reeds heel wat hardware aan boord, zoals een geïntegreerde videokaart, USB poorten, Firewire (IEEE 1394), geluid, ... Dat maakt het totaalpakket van hardware een stuk goedkoper, Module C3, Sessie 2
Computer- en besturingssystemen
Pagina 3/17
maar komt de performantie van het systeem niet altijd ten goede.
TIP!
Een moederbord is een printplaat met een hele hoop elektronische componenten. Deze componenten zijn zeer gevoelig voor (hoge) spanningen. Als je aan het moederbord moet werken, zorg er dan voor dat je lichaam geaard is zodat een elektrostatische spanning geen componenten kan beschadigen.
TIP!
Wanneer je aan een moederbord moet werken, zorg er dan steeds voor dat de spanning NIET is aangesloten. Door het aanraken van bepaalde componenten als er spanning op het moederbord staat kan je kortsluiting veroorzaken, en je moederbord onherstelbaar beschadigen.
4.2.5 BIOS (Basic Input Output System) De BIOS is een chip die zich op het moederbord bevindt, en die een reeks elementaire instructies bevat van de computer. Het zorgt voor de afhandeling van een aantal kritische processen van het computersysteem. Een van deze taken is het controleren van de hardware bij het opstarten van het computersysteem. Dit noemt men de Power On Self Test, of kortweg POST. Sommige onderdelen van de BIOS moeten immers bij het opstarten reeds aanwezig zijn, zoals bijvoorbeeld de mogelijkheid om het beeldscherm aan te sturen. Wanneer de BIOS via zijn POST ontdekt dat met een van deze onderdelen iets mis is, dan weigert hij verder op te starten, en zal er een waarschuwing gegeven worden, meestal in de vorm van een geluidssignaal. De BIOS vormt eigenlijk een laag tussen de hardware en het besturingssysteem, zodat het besturingssysteem zich eigenlijk weinig of niets hoeft aan te trekken van de hardware, en zich op andere taken kan concentreren. Hier komen we in het gedeelte besturingssystemen nog op terug.
4.2.6 De Centrale Verwerkingseenheid (CPU) De Centrale Verwerkingseenheid (de Central Processing Unit of CPU) zorgt voor de rekenkracht van het computersysteem. Het is de motor die de auto doet bewegen. Moderne CPU's voor desktop systemen zijn bijvoorbeeld de Pentium IV van Intel, en de Athlon processors van AMD. Voor server systemen zijn momenteel de Xeon en Itanium processors van Intel, en de Opteron van AMD het meest bekend.
4.2.6.1 Prestaties van een CPU De snelheid en het vermogen van een processor worden bepaald door 3 factoren:
Module C3, Sessie 2
Computer- en besturingssystemen
Pagina 4/17
1. gegevensbus 2. adresbus 3. kloksnelheid De taak van de processor bestaat voornamelijk uit het verwerken van gegevens. Wanneer er meer gegevens tegelijkertijd naar de processor gebracht kunnen worden zal dat een gunstige invloed hebben op de verwerkingssnelheid. De gegevensbus kan 8, 16, 32, 64, en in de toekomst waarschijnlijk nog meer bits breed zijn. Je zou het kunnen vergelijken met een buizensysteem waardoor water getransporteerd wordt. Bij een dunne buis (8 bits) kan slechts weinig water per tijdseenheid getransporteerd worden. Bij een dikke pijp (64 bits) zal er veel meer water vervoerd kunnen worden. Via de adresbus worden gegevens van en naar het geheugen van de computer geschreven. Hoe groter de adresbus is, hoe meer geheugen aangesproken kan worden. De eerste 8086 processoren werkten met een 20 bits adresbus, en konden dus 2^20 = 1.048.576 geheugenbytes aangesproken worden. Dat komt overeen met 1 MB maximaal geheugen. Later werd deze bus uitgebreid tot een 64 bits adresbus, waardoor een enorme hoeveelheid geheugen aangesproken kan worden. Een andere belangrijke parameter bij een CPU is de kloksnelheid waarmee deze instructies kan uitvoeren. De klok van een processor bepaalt het tempo waarop instructies uitgevoerd kunnen worden. Momenteel liggen de hoogste kloksnelheden van een processor in de buurt van 3 gigahertz (GHz), wat overeenkomt met om en bij de 3.000.000.000 instructies per seconde. Al deze 3 factoren worden aangestuurd door de chipset van het moederbord. De chipset vormt de interface tussen de processor, de BIOS, de gegevensbus en de databus. De chipsets van processorfabrikanten geven meestal de beste prestaties, maar de clonesystemen vinden ook vaak hun weg naar verschillende moederborden door de prijs die vaak toch een factor lager is dan de merk-chipsets. Gordon Moore maakte in 1965 een voorspelling die tot op de dag vandaag behoorlijk accuraat gebleken is. Hij beweerde toen al dat het aantal transistoren per chip per jaar ongeveer zou verdubbelen, en daarmee ook de snelheid van de processoren. Deze stelling gaat door het leven als de Wet van Moore. Op http://www.intel.com/research/silicon/mooreslaw.htm vind je een overzicht van de evolutie van de processoren, en daar zie je duidelijk dat hij gelijk heeft. 4.2.6.2 Sockets Verschillende processors bestaan in verschillende uitvoeringen. De foto op deze pagina toont een AMD Socket A processor. Een socket is een 'voet' waarop de processor op het moederbord wordt aangesloten. Als je een socket A processor koopt moet je natuurlijk ook een moederbord hebben met een socket A processorvoet. Naast de sockets waar je de processor horizontaal in vastklemt, bestaan er ook processoren die op een soort uitbreidingskaart zijn gemonteerd, en die zoals een PCI kaart op het moederbord geplugd moeten worden. 4.2.6.3 CPU Instructieset De allereerste processors werden specifiek ontworpen om bepaalde functies uit te voeren. Deze functies waren specifiek voor elke processor, en een programma dat geschreven was met functies voor een bepaalde processor kon dus niet gebruikt worden op een ander type van processor. En Module C3, Sessie 2
Computer- en besturingssystemen
Pagina 5/17
zelfs wanneer een nieuwe versie van diezelfde processor werd ontwikkeld bestond de kans dat je je programma volledig moest herschrijven omdat er andere instructies in de instructieset van de processor geïmplementeerd waren. Om het programmeurs makkelijker te maken werd daarom de x86-instructiesets ontwikkeld en als standaard aangenomen. Deze standaard is tot op heden niet meer gewijzigd, maar werd wel aangevuld door de verschillende processorfabrikanten met extra instructies. De instructieset bestaat uit een aantal basiscommando's die op elke x86-compatibele processor hetzelfde zijn. De x86 standaard legt op welke commando's door de processor uitgevoerd moeten kunnen worden, maar geeft geen info over hoe deze commando's geïmplementeerd moeten worden. Hierdoor kan de instructieset door verschillende processors op verschillende manieren uitgevoerd worden. De meeste processors delen de instructies op in kleineren delen, die men micro-opts noemt. Deze micro-opts zijn meestal zeer kleine, heel snel uit te voeren programma's. Reduced Instruction Set Computing (RISC) en Complex Instruction Set Computing (CISC) zijn technieken om de snelheid van processors te verhogen. CISC maakt gebruik van instructies die meerdere klokpulsen van de processor gebruik maken. RISC daarentegen gebruikt enkel instructies die slechts 1 klokpuls in beslag nemen. Over het algemeen zijn RISC processors sneller dan CISC processors. De huidige processors zijn noch RISC, noch CISC. 4.2.6.4 Koeling De moderne processors kunnen instructies verwerken tegen zeer grote snelheden. Hierbij wordt behoorlijk wat warmte geproduceerd in de processor. Om deze warmte af te laten vloeien maakt men gebruik van een koeler die op de processor gemonteerd wordt. Zonder koeling zal een recente processor het maximum een paar minuten uithouden. Er zijn verschillende koelers mogelijk. De meest gebruikte is een koellichaam van metaal (koper, aluminium, ...) met op dit koellichaam een ventilator (zie foto). Verder zijn er nog andere koelsystemen verkrijgbaar zoals waterkoeling en dergelijke, maar die kosten meestal toch een fractie meer dan de standaard ventilatiekoeling..
TIP!
Om een goede koeling te krijgen van de processor moet het contactoppervlak met de processor zo groot mogelijk zijn, zodat de warmte beter afgevoerd kan worden. Om het contact tussen de processor en de koeler te verbeteren kan je best koelpasta gebruiken. Koelpasta met zilver geeft over het algemeen de beste resultaten.
TIP!
Plaats een computersysteem in een goed geventileerde ruimte. Je PC in een (afgesloten) kast steken is zeker af te raden omdat de warmte dan moeilijk afgevoerd kan worden.
4.2.6.5 Overclocking Sommige processors kan je op een hogere snelheid laten werken door bijvoorbeeld in de BIOS een aantal wijzigingen door te voeren (hogere spanning aanleggen aan de processor, kloksnelheid aanpassen, ...). Soms moet je op de processor zelf wijzigingen uitvoeren om tot een hogere Module C3, Sessie 2
Computer- en besturingssystemen
Pagina 6/17
snelheid te komen (brug leggen tussen 2 contactpunten). Dit proces noemt men overclocking, en wordt door de fabrikanten afgeraden (garantie vervalt). Bij overclocking speelt koeling een zeer belangrijke rol!
4.2.7 RAM Geheugen Een computersysteem heeft intern geheugen (Random Access Memory of RAM) nodig om gegevens en programma's in op te slaan. Het RAM geheugen bestaat uit een aantal chips die een aantal cellen bevatten die 1 bit groot zijn. Deze cellen zijn gestructureerd in 2 dimensies, zodat elke cel toegankelijk is via een x (rij) en y (kolom) coördinaat. Nemen we als voorbeeld een chip met 256 rijen en 256 kolommen. Deze chip bevat dan 65.536 cellen of bits. 1 byte is 8 bits groot, dus deze chip bevat 8192 bytes. Een kilobyte (kb) is 1024 bytes, en dus die chip heeft een opslagcapaciteit van 8 kb. Een geheugenmodule is een verzameling van geheugenchips op een latje. Bij de eerste computersystemen werd het geheugen rechtstreeks op het moederbord gesoldeerd, maar dat maakte een upgrade bijna onmogelijk. Daarom maakt men nu gebruik van zogenaamde geheugenmodules. Een dergelijke module bevat een aantal chips met een aantal pinnen (30, 72, 168) en heeft een bepaalde bandbreedte (16 bit, 32 bit, 64 bit). Een geheugencel op een geheugenmodule is verantwoordelijk voor 1 bit aan informatie. Omdat de CPU meerder bits tegelijkertijd nodig heeft worden meerdere chips gebruikt om meerdere bits in op te slaan. Het aantal gebruikte geheugenchips hangt dus af van de bandbreedte van de geheugenbus. Als we een 8 bit brede databus hebben, dan zal een geheugenmodule gebruikt worden met 8 geheugenchips. Er zijn echter ook geheugenchips die (intern) meer kunnen opslaan dan 1 bit, om minder chips te moeten gebruiken. 4.2.7.1 SIMM De eerste 'moderne' geheugenchips waren de Single Inline Memory Modules of SIMMs. Ze bestaan in verschillende uitvoeringen. De eerste SIMM had 30 pinnen en een databus van 8 bit. Om in een 32 bit systeem te gebruiken moest je dus 4 van deze modules gebruiken in het systeem. Een volgende stap in de ontwikkeling waren de 72 pin SIMMs. Je had hierbij maar 1 module nodig om op een 32 bit bus te gebruiken. Ze maakten gebruik van geheugenchips die meer dan 1 bit tegelijkertijd kunnen opslaan. 4.2.7.2 DIMM De meeste moderne computers maken gebruik van Dual Inline Memory Modules of DIMMs. Die worden zo genoemd omdat ze dubbelzijdig gebruikt worden. In plaats van slechts 1 kant van de geheugenmodule op te vullen met chips worden nu beide kanten gebruikt, alsof je 2 SIMMs tegen elkaar plakt. Je kan hiermee dus 64 bit bussystemen bedienen. DIMMs kunnen verschillende types geheugen bevatten: DRAM, EDO, SDRAM en DDR. Statische en Dynamische RAM Dynamische RAM is geheugen dat wegens zijn eenvoudige structuur regelmatig (om de 64ms) ververst moet worden, of de inhoud zal verloren gaan. Dit in tegenstelling met Statische RAM, waarbij dit niet nodig is. Het voordeel van dynamische RAM is dat het een stuk goedkoper geproduceerd kan worden dan statisch RAM, maar statische RAM is een stuk sneller. Daarom wordt deze laatste gebruikt voor de kleinere geheugens dicht bij de processor, en DRAM wordt Module C3, Sessie 2
Computer- en besturingssystemen
Pagina 7/17
gebruikt als 'normaal' geheugen in de PC. Volgende geheugensoorten zijn allen DRAM: • • • • • • • •
Page Mode DRAM Fast Page Mode DRAM Extended Data Out DRAM (EDO) Burst Extended Data Out DRAM (BEDO) Synchronous DRAM (SDRAM) Double Data Rate Synchronous DRAM (DDR SDRAM) RAMBUS DRAM Video DRAM
4.2.7.3 RIMM RIMM (Rambus Inline Memory Modules) maken gebruik van een speciale techniek waarbij het mogelijk is om verschillende apparaten gelijktijdig aan te spreken samen met het geheugen. De modules zien er hetzelfde uit als DIMM modules, maar de elektrische eigenschappen zijn anders.
4.2.8 BUS Alle onderdelen in de kast van je computer zijn verbonden door een bus. De bus is hetgeen waarop je de uitbreidingskaarten aansluit op het moederbord, en vormt dus als het ware een digitale supersnelweg tussen de processor, het geheugen en alle andere componenten van het computersysteem. Je hebt waarschijnlijk al een van volgende termen gehoord in verband met computers: ISA, PCI, AGP, PCMCIA, SCSI, ... Dit zijn allemaal verschillende types van bussen zoals die bestaan binnen verschillende computersystemen. De processor van een computersysteem kan de andere componenten zoals harde schijven, floppies, etc. niet rechtstreeks zien, maar communiceert ermee via de bus van het systeem.
ISA (zwart) en PCI (wit) aansluiting
PCMCIA aansluiting (laptop)
AGP aansluiting
De ISA bus is het oudste systeem, en werd gebruikt in de eerste personal computers van begin jaren 80. In een modern computersysteem vindt je tegenwoordig nog zelden een ISA bus Module C3, Sessie 2
Computer- en besturingssystemen
Pagina 8/17
interface. De PCI bus (Peripheral Component Interconnection) vindt je tegenwoordig wel terug op alle moderne moederborden van desktop systemen. Bij draagbare computersystemen is de PCMCIA bus het meest gebruikt. De PCMCIA bus is afgeleid van de ISA bus. De SCSI bus vindt je meestal terug bij server systemen wegens de snellere performantie ten opzichte van de andere systemen. Nadeel van SCSI is de hogere kostprijs, waardoor het voor de doorsnee computergebruiker niet binnen het budget ligt. Gaan we kijken bij de meest moderne server systemen, dan zien we dat bus-systemen op basis van glasvezel (fiber optics) ook meer en meer hun intrede doen. De AGP (Accelerated Graphics Port) bus is een bus die specifiek voor communicatie met grafische kaarten is ontstaan. Wanneer de computer data nodig heeft die opgeslagen is op de harde schijf, dan zal de processor een disk read request sturen naar de controller van de harde schijf over het bus systeem. Enige tijd later zal de controller van de harde schijf via de bus melden aan de processor dat de data van de schijf is gehaald en is opgeslagen op een bepaalde plaats in het geheugen. De processor kan daar dan de nodige data gaan bekijken en bewerken.
4.2.9 Invoer- en uitvoerapparaten De meeste computersystemen hebben verder ook nog een monitor, een of meerdere harde schijven, een diskettestation, en verschillende andere apparaten die zowel intern als extern aangesloten kunnen worden. Veel van deze apparaten worden met het computersysteem verbonden door middel van zogenaamde controller-kaarten die je op het moederbord aansluit. Andere systemen worden rechtstreeks aangestuurd door chips die al op het moederbord aanwezig zijn. En tenslotte is er het toetsenbord dat eigenlijk zo eenvoudig is dat de controller mee in het toetsenbord zelf wordt ingebakken, en dat dus geen controller-kaart of chip op het moederbord nodig heeft.
TIP!
Wanneer je computersysteem niet (goed) werkt, en je vermoedt dat het aan de hardware ligt, koppel dan alle apparaten (harde schijven, floppy, PCI kaarten, ...) een keer los van het systeem en controleer of het systeem dan wel goed opstart. Als dat lukt, koppel dan een voor een de verschillende apparaten terug aan en kijk wanneer het systeem niet meer werkt.
4.3 Het besturingssysteem 4.3.1 Opstarten van een computersysteem Een computer zonder programma's is eigenlijk alleen maar een bak vol met elektronica. Het eerste wat een computer dus moet doen wanneer hij opgestart wordt is het laden van een speciaal computerprogramma wat men een besturingssysteem noemt. Dit besturingssysteem heeft als taak om andere programma's te helpen door de controle over de hardware in het computersysteem op zich te nemen, en er voor te zorgen dat de andere programma's zich hier niets van hoeven aan te trekken. Wanneer een computer een besturingssysteem laadt, dan noemt men dit het booten of opstarten van het systeem. Oorspronkelijk gebruikte men de Engelse term bootstrapping om dit proces te benoemen. Een computer weet hoe hij moet booten of opstarten omdat de informatie over het opstarten van een systeem opgeslagen is in een van de chips op het moederbord, namelijk de BIOS (Basic Input/Output System) chip. Module C3, Sessie 2
Computer- en besturingssystemen
Pagina 9/17
De BIOS vertelt aan het systeem om te gaan zoeken naar een speciaal programma dat men de boot loader noemt. Dit programma bevindt zich meestal op de eerste harde schijf (de boot-disk) van het systeem. De taak van dit boot loader programma is om het echte besturingssysteem te laden. Je kan de boot loader aan het werk zien als je op een computer bijvoorbeeld Microsoft Windows 98 en Microsoft Windows XP geïnstalleerd hebt. Bij het opstarten van het systeem krijg je dan een LILO boot loader eenvoudig menu te zien waarin je kan kiezen om ofwel Windows 98 ofwel Windows XP op te starten. Dit menu wordt getoond door de boot loader van Windows. Als je GRUB boot loader Linux gebruikt dan kan je gebruik maken van verschillende boot loaders. De meest bekende zijn LILO en GRUB. Je kan bij deze boot loaders ook kiezen welk besturingssysteem je wil opstarten (als er meerdere besturingssystemen aanwezig zijn natuurlijk), en je kan een aantal parameters meegeven voor het opstarten. De boot loader start het besturingssysteem door op zoek te gaan naar de kernel van het besturingssysteem, en die in het geheugen in te laden. Als je een Windows besturingssysteem laadt, dan krijg je eerst een scherm te zien met een bewegend balkje. Dit duidt er op dat onder andere de Windows kernel ingeladen wordt. Bij het opstarten van een Linux systeem zie je een hoop puntjes verschijnen die aangeven dat de kernel van de disk in het geheugen geladen wordt (elk puntje is een datablok van de schijf die in het geheugen geladen wordt). OS 1 Kernel (HDD) BIOS (moederbord)
Boot Loader (Boot Device) OS 2 Kernel (HDD)
Misschien vraag je je af waarom het opstarten van een besturingssysteem in zoveel stappen gebeurt. Waarom kan de BIOS bijvoorbeeld niet rechtstreeks een kernel van een besturingssysteem in het geheugen laden...? Dit komt omdat de BIOS eigenlijk niet erg slim is. Hij is dan ook oorspronkelijk ontwikkeld voor primitieve 8-bit systemen met heel erg kleine disks (naar huidige maatstaven). De BIOS kan niet uit zichzelf genoeg diskruimte aanspreken om rechtstreeks een kernel te laden. Langs de andere kant is er ook een voordeel verbonden aan het gebruik van een boot loader, namelijk het feit dat de boot loader je kan laten kiezen welk besturingssysteem je wil gebruiken, zelfs als dat besturingssysteem zich op een andere disk zou bevinden. Eenmaal als de kernel van het besturingssysteem is gestart, dan zal die beginnen te zoeken naar de rest van de hardware van het systeem, en zal hij het systeem klaarmaken voor het gebruik van programma's. Om de hardware te vinden maakt de kernel gebruik van zogenaamde I/O poorten. Dit zijn speciale adressen op de bus waarop mogelijk controller kaarten aanwezig kunnen zijn die een hardware apparaat kunnen aansturen. In de kernel van een besturingssysteem wordt veel informatie over mogelijke controllers ingebouwd, zodat de kernel weet welke controllers op welke manier reageren als hij ze gaat aanspreken. Men noemt dit proces, waarbij de kernel zoekt Module C3, Sessie 2
Computer- en besturingssystemen
Pagina 10/17
naar de aangesloten randapparatuur autoprobing. Als je een Windows besturingssysteem opstart zal je van dit hele proces weinig of niets te zien krijgen. Start je echter een Linux besturingssysteem op, dan zal de linux kernel je een hele hoop informatie tonen over wat hij aan het doen is, en welke apparaten hij heeft gevonden. Het opstarten van de kernel is echter niet het einde van het boot proces. Het is slechts de eerste stap (soms verwijst men hiernaar als runlevel 1). Wanneer de kernel zijn eerste werk gedaan heeft, dan geeft hij de controle door aan een speciaal programma dat de rest van het besturingssysteem zal laden. Een van de eerste taken van dit programma is het controleren van de harde schijven. De bestandssystemen die zich op een harde schijf bevinden zijn soms erg gevoelig voor fouten door bijvoorbeeld het wegvallen van spanning of door hardware fouten van de schijf. Het is dan ook best dat een eerste controle wordt uitgevoerd vooraleer verder te gaan met het inladen van de rest van het besturingssysteem. Je kan dit proces bij de verschillenden Windows varianten zien wanneer het systeem een keer niet goed is afgesloten (om welke reden dan ook). Bij het opnieuw opstarten krijg je dan de melding dat het systeem niet goed is afgesloten en dat scandisk (of een gelijkwaardig programma) wordt opgestart om een controle te doen van de mogelijk beschadigde partities. Wanneer dan fouten gevonden worden zal dit programma trachten deze te herstellen om problemen te vermijden bij het verder laden van het besturingssysteem. Een volgende stap bij het starten van een besturingssysteem is het opstarten van zogenoemde daemons of services. Dit zijn speciale programma's die actief blijven op de achtergrond en een specifieke taak van het besturingssysteem op zich nemen (bijvoorbeeld een printer spooler, een www server, etc.). Vervolgens wordt het systeem klaargemaakt voor interactie met de gebruiker, en worden de netwerkservices opgestart. Als al deze stappen achter de rug zijn is het besturingssysteem klaar voor zijn taken (het uitvoeren van programma's). Kernel
Controle partities
Start Services
Interactie gebruikers
4.3.2 Invoerapparaten en interrupts Zoals reeds gezegd is het de taak van het besturingssysteem om programma's te ontlasten van alle rechtstreekse communicatie met invoerapparaten. Maar hoe wordt deze communicatie via het besturingssysteem geregeld? Nemen we als voorbeeld het toetsenbord. Dit is een erg eenvoudig invoerapparaat dan slechts kleine hoeveelheden data genereert op een erg langzaam tempo (naar computernormen). Wanneer een gebruiker een toets indrukt of loslaat wordt deze gebeurtenis via de kabel van het toetsenbord doorgegeven naar de computer, en er wordt een zogenaamde hardware interrupt gegenereerd. Het is de taak van het besturingssysteem om uit te kijken naar dit soort interrupts en hierop de nodige actie te ondernemen. Voor elke mogelijke interrupt voorziet het besturingssysteem een zogenaamde interrupt handler, een programma dat alle data (bijvoorbeeld de toets die ingedrukt werd) die gepaard gaat met een specifieke interrupt tijdelijk opslaat voor verdere verwerking wanneer hiervoor tijd voorzien is. Wat bijvoorbeeld de interrupt handler van het toetsenbord doet, is het opslaan van alle toetseninformatie in een bepaald gedeelte van het geheugen tot het besturingssysteem de controle geeft aan het programma dat op dat moment invoer van het toetsenbord verwacht. Ook meer complexe invoerapparaten werken volgens dit systeem. Herinner je de situatie waarin Module C3, Sessie 2
Computer- en besturingssystemen
Pagina 11/17
een harde schijf via de bus aan de processor te kennen geeft dat hij de gevraagde informatie heeft opgehaald. In werkelijkheid gebeurt dit door het genereren van een interrupt door de harde schijf. De interrupt handel van de harde schijf kopieert de data dan naar het geheugen voor gebruik door het programma dat de data heeft aangevraagd. Elke interrupt heeft ook een prioriteitsniveau. Interrupts met een lage prioriteit (zoals invoer via het toetsenbord) moeten wachten tot interrupts met een hogere prioriteit (zoals invoer via harde schijven) zijn uitgevoerd. Een besturingssysteem moet deze prioriteiten goed regelen om er voor te zorgen dat alles voor het oog van de gebruiker vlotjes blijft lopen. Alle invoerapparaten maken gebruik van IRQ's (Interrupt Requests) om een interrupt te genereren. Het besturingssysteem moet bij het opstarten weten welk IRQ door welk invoerapparaat gebruikt wordt om de juiste interrupt handler te koppelen aan een bepaald IRQ. Wanneer verschillende invoerapparaten gebruik maken van hetzelfde IRQ worden sommige interrupt requests soms afgehandeld door de verkeerde interrupt handler. Dit leidt vaak tot een onbruikbaar invoerapparaat en kan er zelfs voor zorgen dat het OS kan gaan 'hangen'.
4.3.3 Verschillende taken tegelijk... of niet? In een computersysteem met slechts 1 processor kan in principe slechts 1 taak tegelijk worden uitgevoerd. Het is wel zo dat een computer enorm snel kan schakelen tussen verschillende taken of processen, en zo de mens voor de gek houden door te doen uitschijnen dat het verschillende zaken tegelijk aan het doen is. Men noemt deze techniek time-sharing. Een van de taken van de kernel is om deze time-sharing te beheren. Dit deel van de kernel noemt men de scheduler. Dit proces houdt informatie bij over alle (niet-kernel) processen die actief zijn. Elke 1/60 seconde gaat er een timer af in de kernel en wordt er een klok-interrupt gegenereerd. De scheduler houdt dan op met het proces waarmee hij momenteel bezig is, zet dat even aan de kant, en gaat verder met het volgende proces in de wachtrij.
1 2 3 4 1 2 3 4 1 2 3 4 Time Sharing - Elk proces krijgt een stuk processortijd
1/60ste van een seconde klinkt misschien weinig, maar in die tijdspanne kan je met de huidige processors tienduizenden (en meer) machine-instructies uitvoeren. Dus ook al zijn er verschillende processen die elk een deel van de processortijd nodig hebben, kan elk proces gedurende zijn processorperiode een groot deel van zijn taken uitvoeren. In werkelijkheid zal het vaak voorkomen dan een programma niet alle tijd kan gebruiken die hem toegewezen wordt (1/60ste seconde). Wanneer er immers een interrupt wordt gegenereerd tijdens het uitvoeren van het programma zal de kernel de taak waarmee hij bezig is afsluiten, de interrupt handler uitvoeren die bij de IRQ hoort, en daarna verder gaan met de taak waarmee hij bezig was. Een opeenvolging van een hele reeks hoge-prioriteitsinterrupts zou ervoor kunnen zorgen dat programma's niet meer kunnen uitgevoerd worden. Dit fenomeen, wat in een goed besturingssysteem vermeden zou moeten worden, noemt men thrashing.
1 2 3 4 1 I 2 3 4I4 1 2 3 4 Time Sharing met interrupts
Module C3, Sessie 2
Computer- en besturingssystemen
Pagina 12/17
De snelheid van programma's zal zelden beperkt worden door de beschikbare machine-tijd van de processor (op een aantal uitzonderingen na zoals geluid en 3D berekeningen). Veel vaker worden vertragingen veroorzaakt door het moeten wachten op data van de harde schijf of van het netwerk. Een besturingssysteem dat het verwerken van meerdere processen tegelijkertijd ondersteunt noemt men een multitasking besturingssysteem. Een systeem zoals hierboven beschreven, waarbij elke applicatie slechts een deel van de processortijd mag benutten, en hier zelf niets aan kan wijzigen noemt men preemptive multitasking. Een andere vorm van multitasking, zoals gebruikt door oudere versies van Microsoft Windows is cooperative multitasking, waarbij de CPU-tijd ook wordt verdeeld over verschillende processen, maar waarbij de processen zelf verantwoordelijk zijn voor het doorgeven van de processortijd aan het volgende proces. Het is logisch dat wanneer een proces 'hangt' terwijl het processortijd aan het gebruiken is het hele systeem zal blokkeren omdat het niet meer in staat is processortijd door te geven aan een ander programma.
4.3.4 Geheugenbeheer: verdeel en heers! De kernel scheduler neemt de taak van het verdelen van processortijd op zich, maar het besturingssysteem moet ook de beschikbare (geheugen)ruimte verdelen over de verschillende programma's, en wel op een zodanige manier dat geen enkel programma de geheugenruimte van een ander programma gaat overschrijven. Zelfs als je er van uit zou gaan dat programma's zodanig geschreven worden dat ze netjes met elkaar opschieten, dan zou het nog kunnen dat een foutje in een programma toch voor problemen kan zorgen. Het geheugenbeheer van het besturingssysteem zorgt er voor dat deze problemen opgelost worden. Elk programma dat uitgevoerd wordt heeft een deel van het geheugen nodig, enerzijds om zijn code uit te voeren, en anderzijds om resultaten van berekeningen en variabelen op te slaan. Het eerste deel van het geheugen is het uitvoerbaar gedeelte en bestaat dus uit een alleen-lezen gedeelte dat met het code segment noemt. Het tweede gedeelte is voor het opslaan van gegevens en moet dus schrijfbaar zijn. Dit gedeelte noemt men het data segment van een programma. Het data segment is uniek voor elk programma, terwijl het code segment dat niet noodzakelijk hoeft te zijn. Verschillende programma's kunnen gebruik maken van dezelfde code, maar zullen hun resultaten toch op een verschillende locatie moeten opslaan. 4.3.4.1 Virtueel geheugen – de eenvoudige versie Omdat geheugen relatief duur was was het belangrijk dat er efficiënt mee omgesprongen werd. Soms is er niet genoeg geheugen in het systeem aanwezig om alle programma's en data in op te slaan, zeker als je zware toepassingen wil gebruiken. Om dit probleem te ondervangen wordt gebruik gemaakt van een techniek die men virtueel geheugen noemt. Het besturingssysteem houdt niet alle programma's en data in het geheugen, maar slechts een klein gedeelte ervan. De rest wordt op een speciale swap ruimte op de harde schijf opgeslagen. Merk wel op dat tegenwoordig het geheugen minder duur is geworden, en dat er minder gebruik wordt gemaakt van de swap ruimte op de harde schijf omdat er meestal wel voldoende effectief geheugen ter beschikking is van het besturingssysteem. 4.3.4.2 Virtueel geheugen – de uitgebreide versie Het verhaal is iets meer gecompliceerd dat hierboven voorgesteld. In een computersysteem zijn er immers niet minder dan 5 soorten geheugen aanwezig, elk met zijn eigen kenmerken. Welk Module C3, Sessie 2
Computer- en besturingssystemen
Pagina 13/17
geheugen gebruikt wordt door een programma kan een grote invloed hebben op de performantie van de software. Om te begrijpen wat er in werkelijkheid gebeurt in een computersysteem moet je begrijpen hoe de verschillende soorten geheugen werken.
Processor registers
Snelheid Kostprijs
Level 1 cache (on-chip) Capaciteit Level 2 cache (off-chip) Conventioneel geheugen Swap geheugen (HDD)
De 5 soorten geheugen in een computersysteem zijn: processor registers, interne (on-chip) cache, externe (off-chip) cache, hoofdgeheugen en harde schijfgeheugen. De reden waarom er zoveel soorten geheugen zijn is vrij eenvoudig: snelheid kost geld! De geheugens zijn opgenoemd in aflopende volgorde van snelheid en kost. Processor registers zijn enorm snel, maar zijn ook het duurst. Dit geheugen kan miljarden keren per seconde aangesproken worden. Disk geheugen is het traagst, maar kost dan ook het minst. Helaas kan je hier maar een 100-tal keer per seconde toegang tot verkrijgen. We kunnen niet het hele systeem (geheugen, schijven, ...) opbouwen rond het snelste type geheugen, dat zou een erg dure grap worden. En trouwens het snelle geheugen is vluchtig, dat wil zeggen dat de informatie die er in opgeslagen wordt verdwijnt wanneer de spanning wegvalt. Daarom moet een computersysteem een harde schijf, of een ander type niet-vluchtig geheugen hebben dat zijn data behoudt wanneer de spanning wegvalt. Om het enorme snelheidsverschil tussen het geheugen van de processor (register geheugen) en het geheugen van de harde schijf op te vangen zijn er de overige 3 soorten geheugen. Ze dienen als een soort buffer tussen de twee. Het doel van virtueel geheugen is dat het besturingssysteem doet alsof het meer geheugen heeft dan er werkelijk aanwezig is in het systeem. Het zorgt ervoor dat een gedeelte van de programma's opgeslagen wordt in het hoofdgeheugen van het systeem, en een deel op de disk, in de swapruimte. Voor de programma's gebeurt dit echter transparant, dus zonder dat ze daar iets van merken. Het totaal is een geheugen dat een beetje minder snel is dan enkel het hoofdgeheugen, maar bij goed beheer zou hier weinig van te merken mogen zijn. Hoe groot het performantieverschil is tussen het virtueel geheugen en het effectief geheugen hangt af van de algoritmes die door het besturingssysteem gehanteerd worden. Het is meestal zo dat lees- en schrijfoperaties die vlak na elkaar plaatsvinden ook meestal bij elkaar staan in geheugenruimte. Dit fenomeen noemt men locality. Omdat programma's bijna altijd gebruik maken van dit fenomeen hoeft het besturingssysteem relatief weinig swapoperaties uit te voeren. Ervaring heeft uitgewezen dat de meest effectieven methode voor het gebruik van swapruimte is gebaseerd op het principe van LRU, of Least Recently Used. Het virtueel geheugensysteem plaatst blokken data in het effectieve geheugendeel van het systeem tot dit geheugen vol komt te zitten. Dan wordt de data die het langst geleden gebruikt werd naar de swapruimte verplaatst om Module C3, Sessie 2
Computer- en besturingssystemen
Pagina 14/17
zodoende ruimte vrij te maken in het effectieve, snellere geheugen. Virtueel geheugen is de eerste stap tussen het overbruggen van harde schijf-snelheid en processorsnelheid. Het wordt volledig beheerd door het besturingssysteem. Maar er blijft nog een grote sprong in snelheid tussen het fysiek hoofdgeheugen en de snelheid waarmee een processor zijn eigen registers kan aanspreken. En hier spelen de externe en interne cache een grote rol door gebruik te maken van een techniek die gelijkaardig is aan het virtueel geheugen. Net zoals het hoofdgeheugen gebruik maakt van het schijfgeheugen wanneer het vol loopt zal de externe cache gebruik maken van het hoofdgeheugen wanneer dit volloopt. Ook hier wordt weer een stuk snelheidsverschil overbrugd, vermits externe cache een stuk sneller is dan het hoofdgeheugen. Het LRU algoritme wordt hier uitgevoerd in hardware (door de geheugencontroller van de computer). We missen nu nog de stap tussen interne cache en externe cache. Op eenzelfde manier wordt data uit de interne cache volgens een LRU algoritme verplaatst naar de externe cache. De interne cache is ook weer een factor sneller dan de externe cache, en bevindt zich vlak bij de processor, op dezelfde chip. Het spreekt voor zich dat programma's geoptimaliseerd kunnen worden met de bovenstaande informatie in het achterhoofd. Je programma's zullen sneller zijn als ze een sterke lokaliteit vertonen, en dat kan je bekomen door je programma zo klein mogelijk te maken, zodat het grotendeels in het snelste geheugen kan uitgevoerd worden. 4.3.4.3 De MMU (Memory Management Unit) Zelfs wanneer er voldoende geheugen aanwezig is om niet te hoeven swappen moet de module van het besturingssysteem die zich bezighoudt met het geheugenbeheer toch nog belangrijk werk uitvoeren. Het moet er immers voor zorgen dat programma's enkel hun eigen data kunnen wijzigen, en dus verhinderen dat slechte software of opzettelijk verkeerd geschreven algoritmes de data van een ander programma gaan overschrijven of misbruiken. Om dit te doen wordt een tabel van data en codesegmenten bijgehouden. Deze tabel wordt bijgewerkt elke keer een programma meer geheugen aanvraagt, of geheugen vrijgeeft (bijvoorbeeld bij het afsluiten van het programma). Deze tabel wordt gebruikt om commando's door te geven aan een gespecialiseerd stuk hardware dat de Memory Management Unit of MMU genoemd wordt. Moderne processors hebben deze MMU ingebouwd op hun chip. De MMU heeft de mogelijkheid om geheugengebieden af te bakenen zodat een verkeerde schrijfopdracht geweigerd wordt, en er een speciaal interrupt wordt opgewekt wanneer deze situatie zich voordoet.
4.4 Interessante weblinks Voor meer informatie rond computers en besturingssystemen kan je een kijkje nemen op volgende websites: •
http://www.tldp.org/HOWTO/Unix-and-Internet-Fundamentals-HOWTO/
Module C3, Sessie 2
Computer- en besturingssystemen
Pagina 15/17
Een groot deel van deze cursustekst is gebaseerd op dit werk van Eric Raymond. •
http://www.geocities.com/tomax7d/PC-Course.htm Ietwat verouderde informatie over alle componenten in een PC.
•
http://www.sip.be/hardware/ Nederlandstalige website over de opbouw en werking van een computersysteem. Veel foto's en bondige, heldere uitleg. Een aanrader!
•
http://www.hardwarecentral.com/hardwarecentral/ Website met veel informatie over hardware, en een aantal tutorials.
•
http://www.tomshardware.com/ De referentie op gebied van hardware besprekingen. Een hele hoop nuttige informatie rond de werking van computers en alles wat daarmee te maken heeft.
Module C3, Sessie 2
Computer- en besturingssystemen
Pagina 16/17
Inhoudstabel 4 Computer- en besturingssystemen............................................................................................... 1 4.1 Inleiding............................................................................................................................... 1 4.2 Anatomie van een computersysteem....................................................................................1 4.2.1 Werken aan je PC......................................................................................................... 1 4.2.2 De kast (behuizing).......................................................................................................2 4.2.3 De voeding....................................................................................................................3 4.2.4 Het moederbord (system board, mainboard)................................................................ 3 4.2.5 BIOS (Basic Input Output System).............................................................................. 4 4.2.6 De Centrale Verwerkingseenheid (CPU)..................................................................... 4 4.2.6.1 Prestaties van een CPU.........................................................................................4 4.2.6.2 Sockets..................................................................................................................5 4.2.6.3 CPU Instructieset.................................................................................................. 5 4.2.6.4 Koeling................................................................................................................. 6 4.2.6.5 Overclocking.........................................................................................................6 4.2.7 RAM Geheugen............................................................................................................7 4.2.7.1 SIMM ...................................................................................................................7 4.2.7.2 DIMM................................................................................................................... 7 4.2.7.3 RIMM................................................................................................................... 8 4.2.8 BUS ............................................................................................................................. 8 4.2.9 Invoer- en uitvoerapparaten..........................................................................................9 4.3 Het besturingssysteem..........................................................................................................9 4.3.1 Opstarten van een computersysteem............................................................................ 9 4.3.2 Invoerapparaten en interrupts..................................................................................... 11 4.3.3 Verschillende taken tegelijk... of niet?....................................................................... 12 4.3.4 Geheugenbeheer: verdeel en heers!............................................................................ 13 4.3.4.1 Virtueel geheugen – de eenvoudige versie......................................................... 13 4.3.4.2 Virtueel geheugen – de uitgebreide versie .........................................................13 4.3.4.3 De MMU (Memory Management Unit)............................................................. 15 4.4 Interessante weblinks......................................................................................................... 15
Module C3, Sessie 2
Computer- en besturingssystemen
Pagina 17/17