Vorwort
Die radikalen Änderungen im Design moderner Computerplattformen sind inzwischen auch dem letzten Programmierer bekannt. Ob Intel, IBM, Sun oder AMD - alle bieten Mikroprozessoren an, die mehrere Ausführungskerne auf einem Chip vereinen. So konnten Verbraucher bereits 2005 Desktop-Plattformen, Server und Spielekonsolen kaufen, die auf CPUs mit mehreren Ausführungskernen basierten. Und geht man nach den Produkt-Roadmaps, ist das erst der Anfang. Denn jetzt streben die Halbleiterhersteller nicht mehr danach, als Erster in den 10-Gigahertz-Bereich vorzustoßen, sondern haben es sich zum Ziel gesetzt, möglichst viele Ausführungskerne auf einem Die unterzubringen. Die Computerplattformen der Zukunft (egal ob Desktop, Server, mobile oder spezielle eingebettete Plattformen) sind mit größter Wahrscheinlichkeit mehrkernig.
Diese Richtungsänderung der Hardware-Industrie eröffnet den Softwareentwicklern ganz neue Möglichkeiten. Früher waren Hardwareplattformen für ein sequenzielles Programmiermodell ausgelegt. Betriebssysteme und andere Systemsoftware simulierten Multitasking-Umgebungen, indem sie die Geschwindigkeit der menschlichen Wahrnehmung ausnutzten. Multithreading war folglich eine absolute Illusion. Mit den modernen Multicore-Architekturen verfügen die Programmierer jetzt endlich über eine echte parallele Computerplattform, die ihnen ein wesentlich höheres Maß an Möglichkeiten für Softwaredesign und -implementierung bietet. In diesem Buch wollen wir deshalb auf einige Themen eingehen, die für das Schreiben von Software für Multicore-Plattformen wichtig sind.