Please wait!
Please wait!

ALEXEYWORLD.COM

alexeyworld.com

Функционирование системы CLR

Функционирование системы CLR

Система CLR управляет выполнением .NET-кода. Вот как это происходит. В результате компиляции Сопрограммы получается не исполняемый код, а файл, который содержит специальный псевдокод, именуемый промежуточным языком Microsoft (Microsoft Intermediate Language — MSIL). MSIL определяет набор переносимых инструкций, которые не зависят от типа процессора. По сути, MSIL определяет переносимость ассемблера. И хотя концептуально MSIL подобен байт-коду Java, это не одно и то же.

Цель CLR-системы — при выполнении программы перевести ее промежуточный код в исполняемый. Таким образом, программа, подвергнутая MSIL-компиляции, может быть выполнена в любой среде, для которой реализована CLR-система. В этом частично и состоит способность среды .NET Framework добиваться переносимости программ.

Код, написанный на промежуточном языке Microsoft, переводится в исполняемый с помощью JIT-компилятора. "JIT" — сокр. от выражения "just-in-time", означающего выполнение точно к нужному моменту (так обозначается стратегия принятия решений в самый последний подходящий для этого момент в целях обеспечения их максимальной точности). Этот процесс работает следующим образом. При выполнении .NET-программы CLR-система активизирует JIT-компилятор, который преобразует MSIL-код в ее "родной" код на требуемой основе, поскольку необходимо сохранить каждую часть программы. Таким образом, Сопрограмма в действительности выполняется в виде "родного" кода, несмотря на то, что первоначально она была скомпилирована в MSIL-код. Это значит, что программа будет выполнена практически также быстро, как если бы она с самого начала была скомпилирована с получением "родного" кода, но с "добавлением" преимуществ переносимости от преобразования в MSIL-код.

В результате компиляции Сопрограммы помимо MSIL-кода образуются и метаданные (metadata). Они описывают данные, используемые программой, и позволяют коду взаимодействовать с другим кодом. Метаданные содержатся в том же файле, где хранится MSIL-код.

опубликовано: 15.10.2011, 14:48 | просмотров: 4108 |