De mogelijkheid van een applicatie om indien nodig meerdere processors (of kernen binnen een processor) te gebruiken, is afhankelijk van verschillende belangrijke mechanismen die samenwerken:
1. Besturingssysteemondersteuning: Het besturingssysteem (OS) speelt een cruciale rol. Het biedt de infrastructuur voor het beheren van meerdere processen en threads, en het plannen van de uitvoering ervan over de beschikbare processors. Dit omvat functies zoals:
* Multitasken: De mogelijkheid om meerdere programma's tegelijkertijd uit te voeren.
* Multithreading: De mogelijkheid om een enkel programma op te delen in meerdere threads die parallel kunnen worden uitgevoerd.
* Procesplanning: Algoritmen die beslissen welk proces of welke thread op welk moment op welke processor mag draaien.
* Communicatie tussen processen (IPC): Mechanismen waarmee verschillende processen of threads gegevens kunnen uitwisselen en hun activiteiten kunnen coördineren.
2. Programmeertaal en bibliotheken: De applicatie zelf moet zo worden geschreven dat deze meerdere processors kan gebruiken. Dit houdt doorgaans het volgende in:
* Gelijktijdigheidsmodellen: Programmeerparadigma's (zoals multithreading of het doorgeven van berichten) die parallelle uitvoering mogelijk maken.
* Bibliotheken voor parallel programmeren: Bibliotheken (zoals OpenMP, MPI of CUDA) die tools en abstracties bieden om gemakkelijker parallelle code te schrijven. Deze bibliotheken kunnen vaak omgaan met de complexiteit van het distribueren van werk over meerdere processors.
3. Hardwareondersteuning: De onderliggende hardware moet in staat zijn tot parallelle verwerking. Dit betekent:
* Meerdere processors/cores: Het systeem moet over meerdere verwerkingseenheden beschikken.
* Gedeeld geheugen (voor sommige modellen): Voor multithreaded toepassingen zorgt gedeeld geheugen ervoor dat threads gemakkelijk toegang krijgen tot dezelfde gegevens en deze kunnen wijzigen. Dit vereist hardwareondersteuning voor efficiënte geheugentoegang vanaf meerdere kernen.
* Interconnecties: Hogesnelheidscommunicatiepaden (zoals de systeembus) zijn essentieel voor efficiënte communicatie tussen processors.
In wezen is het vermogen van de applicatie om meerdere processors te gebruiken een gecoördineerde inspanning. Het besturingssysteem zorgt voor de omgeving, de programmeertaal en bibliotheken bieden tools om parallelle code te schrijven, en de hardware zorgt voor de verwerkingskracht en communicatie-infrastructuur. Als een van deze elementen ontbreekt of onvoldoende is, zal de toepassing beperkt zijn in zijn mogelijkheden om parallelle verwerking te exploiteren. |