Managed vs Unmanaged code

"Unmanaged code" is een nieuwe naam voor een oud concept. Unmanaged code staat voor native machine code. Software kan geschreven zijn in hogere programmeertalen zoals Pascal, C of C++. Deze talen worden vertaald naar machine code (=unmanaged code) door de compiler. De gegenereerde code wordt direct op de host van de processor uitgevoerd. Dit houdt in dat de processor direct de code uitvoert die is gegenereerd door de compiler. Deze aanpak resulteert in een snelle uitvoer van de code, maar het analyseren en opvangen van fouten gaat makkelijker in managed code.

Managed code is een nieuwe naam, maar het concept is al oud. "Managed code" staat tegenwoordig voor het systeem dat gebruik maakt van het Microsoft .NET Framework, maar .NET is gewoon een voorbeeld van een managed code systeem. Het .NET systeem accepteert broncode van ondersteunende talen zoals C, C++, C#, Pascal en nog meer. Deze code wordt vertaald in code die ontworpen is voor een virtuele machine. De echte processor kan deze code niet direct uitvoeren, maar het kan wel een programma uitvoeren die op zijn beurt de code van de virtuele machine uitvoert. Het programma die de code van de virtuele machine uitvoert is bekend als de virtual machine. Deze manier van code uitvoeren is langzamer dan direct de code uit te laten voeren door de processor., maar de virtual machine kan de code beter beheren (managed code) dan als die direct op de processor wordt uitgevoerd. Voorbeeld, de virtual machinekan toezien op geheugen toewijzing, automatisch afhandelen van ongebruikt geheugen en meer andere diensten bieden. Bij unmanaged code dienen dit soort zaken zelf afgehandeld te worden.

Virtual machines zijn ook bekend onder andere namen. In de Java wereld wordt de tool een JVM genoemd, een Java Virtual Machine. In .NET wordt de tussenliggende taal MSIL genoemd, MicroSoft Intermediate Language.Deze taal wordt uitgevoerd door een Just-in time MSIL compiler (JIT compiler). Vroegere implementaties van Pascal genereerde een
tussenliggende taal genaamd P-code en wordt uitgevoerd tijdens de runtime door een P-code interpreter.

Reacties

Populaire posts van deze blog

[SQL Server] varchar vs nvarchar

MS Sql 70-461: Chapter 5

[C#] Class serialiseren en deserialiseren