De manier dat OS-en op dit moment verschillende applicaties naast elkaar draaien is al erg vergelijkbaar. Als jij (zelfs op je Windhoos) een illegal-page-fault krijgt, dat betekent dat dat een procces heeft geprobeer te schrijven in het geheugen van een ander proccess. Dat heet protected mode.
Je kunt je wel voorstellen hoe moeilijk debuggen was voor dat ze dat deden.
Of te wel: geheugen is allang gevirtualiseerd op het OS niveua. Ze willen daar in feite machiene IO aan toevoegen.
Toch is de security waarde daarvan minimaal. De schade zal beperkt zijn tot de module waar het plaats vinden (geen cascading van security gaten), maar dat is ook alles. Voor servers is dit inderdaad een uitkomt, en voor systemen waar je helemaal geen IO wilt toelaten (browser bijvoorbeeld) ook. Maar het is omslachtig. We moeten juist van de machiene-executable code af.
Virtualisatie komt in feite erop neer machiene code te behandelen als een programmeertaal die dan geinterpreteerd wordt. Misschien is het handiger om een OS te schrijven in een veilige taal, waarover een virtuele machiene ook kan _redeneren_. Machiene code is daar niet voor ontworpen en heeft geen strakke scheiding tussen algoritmes die mutual-recursive-zijn en algoritmes die primitief-recursief zijn. (Over primitief-recursieve algoritmes kun je in eindige tijd vaststellen dat het ooit zal eindigen, terwijl hetzelfde vaststellen over een mutual-recursive algoritme misschien oneindig lang duurt). Type-systemen die contracten over de code bevatten zijn meestal uitgedrukt in een taal die alleen primitief-recursieve logica toelaat. Dit zorgt ervoor dat de compiler in eindige tijd kan vaststellen dat ie de code leuk en lief vindt (of niet). Talen als Java controleren deze contracten voordat ze het programma uitvoeren nogmaals.
Of te wel: leuk voor oude software, maar tegelijk het bewijs dat het OS van de toekomst beter niet in machine-code kan worden aangeboden, maar in een taal die de machiene geheel weg-abstraheert. (dus geen ASM, geen C, geen C++, wel Java, C#, Haskell, etc.). Als we op het punt zijn dat de vertraging veroorzaakt door virtualisatie acceptabel is, dan zijn we op het punt dat we helemaal geen machiene-code meer moeten gaan zitten uitvoeren, maar direct broncode. Waarom code platform specifiek maken, distributeren als executable voor een bepaalde machiene, om het dan op alle machienes te gaan 'emuleren' ? It makes no sense.
Stel je voor: je compileert Java native, om het daarna in een virtual-machiene te gaan zitten uitvoeren. Fijn, al die jaren van voortuitgang: had je dezelfde voordelen niet gewoon door java helamaal niet native compileren maar gewoon in java-sandbox uit te voeren?
Nouja, het zal wel aan mij liggen. Of het aan het gebrek aan scholing van die Dell-debiel. Het is immers een manager. Maar zo te horen heeft ie ook een paar moeilijke woorden geleerd. Desktop, virtualisatie. Grappig hoor, maar wat doet deze onzin hier op Tweakers.net? Als virtualisatie ooit op deze wijze gebruikt gaat worden heeft de algehele ICT industrie zich volstrekt belachelijk gemaakt. Maar het zou natuurlijk niet de eerste keer zijn.