День сто шестьдесят шестой. #ВопросыНаСобеседовании
Самые часто задаваемые вопросы на собеседовании по .NET
7. Что такое JIT-компилятор?
В .NET Framework все языки .NET используют CLR, что решает проблему установки отдельных сред выполнения для каждого из языков программирования. Если на компьютере установлена общеязыковая среда исполнения Microsoft .NET, она может работать на любом языке, совместимом с Microsoft .NET. Языки .NET компилируются в промежуточный язык IL. Перед выполнением IL должен быть преобразован компилятором Just-In-Time (JIT) в машинный код, который представляет собой специфические для процессора команды на той же компьютерной архитектуре, что и JIT компилятор.
Процесс компиляции промежуточного кода в машинный называется JIT-компиляцией Just-In-Time, потому что он не происходит до тех пор, пока сборка не будет размещена на целевой машине. Причина, по которой сборка не компилируется заранее, заключается в том, что можно использовать конкретный JIT-компилятор для вашей ОС и типа процессора. В результате сборка компилируется в максимально быстрый машинный код, оптимизируется и улучшается для вашей конкретной конфигурации.
Вместо того чтобы использовать время и память для преобразования всего IL кода в машинный код, он преобразуется по мере необходимости во время исполнения и сохраняется в результирующем машинном коде, чтобы он был доступен для последующих вызовов.
Среда исполнения предоставляет и другой режим компиляции, называемый генерацией кода во время установки. Режим генерации кода во время установки преобразует IL в машинный код, как это делает обычный JIT-компилятор, но одновременно конвертирует большие блоки кода, сохраняя результирующий машинный код для использования при последующей загрузке и исполнени сборки. Как часть компиляции IL в машинный код, код должен пройти процесс проверки, если администратор не установил политику безопасности, которая позволяет коду обходить проверку. Верификация проверяет IL и метаданные, чтобы выяснить, можно ли определить, что код безопасен по типу, то есть известно, что он имеет доступ только к тем ячейкам памяти, к которым у него есть права доступа.
Источник: https://www.c-sharpcorner.com
Самые часто задаваемые вопросы на собеседовании по .NET
7. Что такое JIT-компилятор?
В .NET Framework все языки .NET используют CLR, что решает проблему установки отдельных сред выполнения для каждого из языков программирования. Если на компьютере установлена общеязыковая среда исполнения Microsoft .NET, она может работать на любом языке, совместимом с Microsoft .NET. Языки .NET компилируются в промежуточный язык IL. Перед выполнением IL должен быть преобразован компилятором Just-In-Time (JIT) в машинный код, который представляет собой специфические для процессора команды на той же компьютерной архитектуре, что и JIT компилятор.
Процесс компиляции промежуточного кода в машинный называется JIT-компиляцией Just-In-Time, потому что он не происходит до тех пор, пока сборка не будет размещена на целевой машине. Причина, по которой сборка не компилируется заранее, заключается в том, что можно использовать конкретный JIT-компилятор для вашей ОС и типа процессора. В результате сборка компилируется в максимально быстрый машинный код, оптимизируется и улучшается для вашей конкретной конфигурации.
Вместо того чтобы использовать время и память для преобразования всего IL кода в машинный код, он преобразуется по мере необходимости во время исполнения и сохраняется в результирующем машинном коде, чтобы он был доступен для последующих вызовов.
Среда исполнения предоставляет и другой режим компиляции, называемый генерацией кода во время установки. Режим генерации кода во время установки преобразует IL в машинный код, как это делает обычный JIT-компилятор, но одновременно конвертирует большие блоки кода, сохраняя результирующий машинный код для использования при последующей загрузке и исполнени сборки. Как часть компиляции IL в машинный код, код должен пройти процесс проверки, если администратор не установил политику безопасности, которая позволяет коду обходить проверку. Верификация проверяет IL и метаданные, чтобы выяснить, можно ли определить, что код безопасен по типу, то есть известно, что он имеет доступ только к тем ячейкам памяти, к которым у него есть права доступа.
Источник: https://www.c-sharpcorner.com