Библиотека книг по компьютерным технологиям
⇒ ⇒ Разработка Windows-приложений на Microsoft Visual Basic .NET и Microsoft Visual C# .NET. Учебный курс MCAD/MCSD
⇒ ⇒ ⇒ Глава 1. Введение в .NET Framework
⇒ ⇒ ⇒ ⇒ Занятие 1. Инфраструктура .NET Framework и общеязыковая исполняющая среда

Читать далее: Резюме

Компиляция и исполнение .NET-приложений

Как уже говорилось, во время компиляции .NET-приложений вместо двоичных машинных кодов генерируется IL-код, который представляет собой набор низкоуровневых команд, интерпретируемых CLR. Приложения развертываются в виде одной или нескольких сборок, которые состоят из исполняемых файлов и DLL, содержащий IL-код. По крайней мере одна из этих сборок должна содержать исполняемый файл, помеченный как входная точка приложения.

После запуска программы в память загружается первая сборка. Анализируя ее декларацию, CLR определяет требования для работы программы. В частности, CLR анализирует разрешения, запрашиваемые сборкой, и сравнивает их с системной политикой безопасности. Если системная политика безопасности не дает программе запрошенные разрешения, приложение не запускается, в противном случае CLR приступает к исполнению кода. Сначала CLR создает процесс, в котором будет работать приложение, и начинает исполнять его код. При этом первая порция исполняемого кода (в виде команд языка IL) загружается в память и компилируется JIT-компилятором (Just-In-Time compiler) в машинные коды, специфичные для данного компьютера. Машинный код исполняется и остается в памяти, поэтому каждый фрагмент кода компилируется не более одного раза во время исполнения приложения. Каждый раз, когда программа вызывает новую часть кода, которая не исполнялась ранее, JIT-компилятор заблаговременно компилирует ее и сохраняет двоичный код в памяти. Такой подход позволяет достичь максимальной производительности приложения, поскольку компилируются только те части программы, которые исполняются.

Google
 
Рейтинг@Mail.ru
Сайт управляется системой uCoz