Multiprocessor
Systemen met één processor
Vele jaren geleden gebruikten de meeste computersystemen een enkele processor met één CPU met een enkele verwerkingskern.
De kern is het onderdeel dat instructies en registers uitvoert om gegevens lokaal op te slaan.
De enige hoofd-CPU met zijn kern is in staat om een algemene instructieset uit te voeren, inclusief instructies van processen. Deze systemen hebben ook andere speciale processors. Ze kunnen komen in de vorm van apparaatspecifieke processors, zoals schijf-, toetsenbord- en grafische controllers.
Al deze processors voor speciale doeleinden voeren een beperkte instructieset uit en voeren geen processen uit. Soms worden ze beheerd door het besturingssysteem, in die zin dat het besturingssysteem hen informatie stuurt over hun volgende taak en hun status bewaakt. Een microprocessor van een schijfcontroller ontvangt bijvoorbeeld een reeks verzoeken van de hoofd-CPU-kern en implementeert zijn eigen schijf wachtrij en planningsalgoritme.
Deze opstelling ontlast de hoofd-CPU van de overhead van schijfplanning. Pc’s bevatten een microprocessor in het toetsenbord om de toetsaanslagen om te zetten in codes die naar de CPU worden gestuurd. In andere systemen of omstandigheden zijn processors voor speciale doeleinden low-level componenten die in de hardware zijn ingebouwd.
Het besturingssysteem kan niet communiceren met deze processors; ze doen hun werk autonoom. Het gebruik van microprocessors voor speciale doeleinden is gebruikelijk en verandert een systeem met één processor niet in een multiprocessor. Als er slechts één CPU voor algemeen gebruik is met een enkele verwerkingskern, dan is het systeem een systeem met één processor. Volgens deze definitie zijn echter maar heel weinig hedendaagse computersystemen systemen met één processor.
Multiprocessorsystemen
Op moderne computers, van mobiele apparaten tot servers, domineren multiprocessorsystemen nu het computerlandschap. Traditioneel hebben dergelijke systemen twee (of meer) processors, elk met een single-core CPU. De processors delen de computerbus en soms de klok, het geheugen en randapparatuur. Het belangrijkste voordeel van multiprocessorsystemen is de verhoogde doorvoer. Dat wil zeggen, door het aantal processors te vergroten, verwachten we meer werk gedaan te krijgen in minder tijd. De versnellingsverhouding met N processors is niet N, echter; het is minder dan N. Wanneer meerdere processors samenwerken aan een taak, ontstaat er een bepaalde hoeveelheid overhead om alle onderdelen correct te laten werken. Deze overhead, plus twist voor gedeelde bronnen, verlaagt de verwachte winst van extra processors.
De meest voorkomende multiprocessorsystemen gebruiken symmetrische multiprocessing (SMP), waarbij elke peer-CPU-processor alle taken uitvoert, inclusief besturingssysteemfuncties en gebruikersprocessen. Afbeelding 1.8 illustreert een typische SMP-architectuur met twee processors, elk met een eigen CPU. Merk op dat elke CPU-processor zijn eigen set registers heeft, evenals een privé- of lokale cache. Alle processors delen echter fysiek geheugen via de systeembus. Het voordeel van dit model is dat veel processen tegelijkertijd kunnen worden uitgevoerd – N processen kunnen worden uitgevoerd als er N CPU’s zijn – zonder prestatieverlies aanzienlijk verslechteren. Omdat de CPU’s echter gescheiden zijn, kan de ene inactief zijn terwijl de andere overbelast is, wat resulteert in inefficiëntie. Deze inefficiënties kunnen worden vermeden als de processors bepaalde datastructuren delen. Een multiprocessorsysteem van deze vorm maakt het mogelijk om processen en bronnen, zoals geheugen, dynamisch te delen tussen de verschillende processors en kan de variatie in werkbelasting tussen de processors verminderen. Zo’n systeem moet
zorgvuldig geschreven, zoals we in hoofdstuk 5 en hoofdstuk 6 zullen zien. De definitie van multiprocessor is in de loop van de tijd geëvolueerd en omvat nu multicore-systemen, waarin meerdere rekenkernen zich op een enkele chip bevinden. Multicore-systemen kunnen efficiënter zijn dan meerdere chips met enkele cores, omdat communicatie op de chip sneller is dan communicatie tussen chips.
Linux kan werken met computers met meerdere processors of met processors met meerdere kernen.