De belofte van systemen met honderden processorkernen vereist een fundamentele herziening van het besturingssysteem. De grenzen tussen OS, virtualisatielaag, compiler en processor verschuiven.
Microsoft lichtte dit najaar een tip van de sluier op over besturingssystemen voorbij Windows 7. Na Amazon en Google stapt ook de softwaregigant in cloud computing. Op een ontwikkelaarscongres omschreef chief software architect Ray Ozzie Windows Azure als "een keerpunt voor Microsoft". Het platform draait echter op Windows 2008 servers in Microsofts datacentra.
Intussen ontwikkelt Microsoft een nieuw OS om hardware aan te sturen in een tijdperk waarin systeembronnen in de cloud, lokaal of gevirtualiseerd kunnen zijn. De opvolger van Windows heeft de codenaam Midori. Midori zou zijn gebaseerd op inzichten uit Singularity, een in 2003 gestart intern onderzoeksproject. Dat project moet leiden tot een besturingssysteem dat multicoreprocessoren slim benut en beter voorbereid is op aanvallen vanaf het internet dan de huidige generatie besturingssystemen.
Parallel programmeren
Daarnaast vereisen multicore-systemen een ander programmeermodel. Ontwikkelaars zullen zich moeten verdiepen in parallel programmeren. "Tot Pentium IV konden ontwikkelaars verwachten dat hun programma's met iedere nieuwe generatie processors sneller zou draaien", zegt Mohamed Zahran, informaticus aan de City University of New York. "Dat meeliften is voorbij." Zahran verricht op de faculteit Electrical and Computer Engineering onderzoek op de grens van hardware en software en is gast-redacteur van het komende april-nummer van OS Review over multicore-besturingssystemen.
"De belangrijkste taak van compilers en besturingssystemen was tot nu toe programma's sneller maken", zegt Zahran. "Dat is niet meer voldoende. Het OS moet de verantwoordelijkheid nemen over toewijzing van elk programma naar elke kern, het verkeer tussen processor en geheugen en stroomverbruik. Als een besturingssysteem niet drastisch verandert zullen mensen geen nieuwe hardware kopen of overstappen naar een ander OS."
Dynamische compilers
Volgens Mohan Rajagopalan, onderzoeker bij Intels Programming Systems Lab, vertegenwoordigt de nieuwe generatie besturingssystemen een paradigmaverschuiving. "Dit zijn fundamenteel lastige problemen die een oplossing vereisen", zegt Rajagopalan. Parallel programmeren is nu het domein van een selecte groep experts in de HPC-wereld. Rajagopalan pleit voor nieuwe benaderingen om het systeem aan de gebruiker te presenteren. "Hoe kun je die systemen abstraheren om de onderliggende complexiteit te verbergen?"
Onderdeel van de oplossing waar Rajagopalan aan werkt is de nieuwe programmeertaal Ct, een uitbreiding op C++. De Ct compiler verdeelt code over afzonderlijke kernen op basis van het type data of het soort processen. "We proberen onderdelen van programma's die zeer prestatie-intensief zijn af te stemmen op specifieke systemen of platformen en andere onderdelen zo portable mogelijk te maken. De optimalisatie kun je op de machine overlaten aan dynamische compilers en runtimes. Dat soort technologieën zal de komende jaren erg belangrijk worden."
Rajagopalan ontwijkt de vraag of Microsoft een rol speelt bij Ct en benadrukt dat het een prille onderzoekstaal is. Intern onderzoek leidt niet altijd tot producten. "Je zult ook geen Singularity OS op je desktop zien", zegt Frans Kaashoek. De Nederlands OS-wetenschapper aan MIT kent Galen Hunt en anderen van het team bij Microsoft goed. "Ze hebben een aantal interessante ideëen uitgewerkt. Sommige van die ideeën zul je terug zien in besturingssystemen, maar die prototypes zullen niet de markt overnemen. Het is veel meer een evolutie dan een revolutie."
Browser wordt OS van de toekomst
Kaashoek was in de jaren negentig betrokken bij de ontwikkeling van MIT's alternatieve exokernel en het bijbehorende besturingssysteem. Recent werkte hij aan Corey, een OS-prototype voor multicore webservers dat applicaties meer controle geeft over gedeelde datastructuren. "Ik heb een tijd gedacht dat je een OS helemaal opnieuw moest ontwerpen voor multicore", zegt Kaashoek. "Dat is momenteel niet meer zo." Niet de structuur, maar de interface naar applicaties staat volgens Kaashoek schaalbaarheid van het OS in de weg. Slimme aanpassingen in de interface kunnen het OS laten meegroeien met het aantal kernen.
De technieken waar Kaashoek aan werkt zijn toepasbaar op gewone besturingssystemen, exokernels, hypervisors en zelfs browsers. "Op veel computers zal de browser het OS van de toekomst zijn", zegt Kaashoek. Een besturingssysteem verzorgt bronnenbeheer, gebruikersinterface en levert abstracties om applicaties op te schrijven. Google's Chrome is een van de projecten die dergelijke OS-concepten beginnen toe te passen op de browser. Het onderliggende besturingssysteem zou uiteindelijk helemaal in de browser kunnen verdwijnen. Of de browser zou in de hypervisor kunnen draaien.
Singularity
Midori zou zijn gebaseerd op inzichten uit Singularity, een in 2003 gestart intern onderzoeksproject. Windows, Linux en Mac OS zeulen volgens de onderzoekers achter Singularity de ontwerpbeslissingen van het Multics OS uit de jaren zestig mee. Computers draaiden toen op een enkele processor met beperkte rekensnelheid en geheugen en "werden gebruikt door een selecte groep goedaardige technisch onderlegden en waren zelden onderdeel van een netwerk of verbonden aan fysieke apparaten". Het resultaat is besturingssystemen met beveiligingproblemen en conflicten tussen applicaties en hardware die slecht schalen voor komende multicore-systemen. Singularity begon met een schone lei.
Vorige maand kwam een tweede versie van het OS-prototype als download beschikbaar. Singularity is bijna volledig geschreven in nieuwe C#-variant Sing#. Het gebruik van een hogere programmeertaal voorkomt de buffer overruns waar wormen en virussen vaak gebruik van maken. Processen worden in Singularity opgebroken in SIPs (Software-Isolated Processes) die met elkaar communiceren via Contract-Based Channels. Een derde unieke innovatie in Singularity is Manifest-Based Programs (MBP). Applicaties moeten hun doel en eisen bekendmaken voor het besturingssysteem instemt ze te draaien.
De Singularity kernel en SIPs zijn multi-threaded. De scheduler in de kernel is geoptimaliseerd voor een groot aantal threads. In de nieuwe Windows Server 2008 R2 is multicore ondersteuning recent met een slimme kunstgreep al uitgebreid van 64 naar 256 threads. Singularity gaat een aantal stappen verder en biedt de mogelijkheid threads dynamisch toe te wijzen aan specifieke kernen, onder andere dankzij de scheiding van processen in SIPs. Singularity verpakt MBPs in .NETs virtuele machine MSIL die conversie naar I/O instructiesets van komende taakspecifieke kernen mogelijk maakt.