10 подписчиков

Что такое управляемый и неуправляемый код в .NET

276 прочитали
Что такое управляемый код? Код, который написан для получения услуг выполнения управляемой среды выполнения, такой как CLR (Common Language Runtime) в .NET Framework, известен как управляемый код.

Что такое управляемый код?

Код, который написан для получения услуг выполнения управляемой среды выполнения, такой как CLR (Common Language Runtime) в .NET Framework, известен как управляемый код. Он всегда реализуется управляемой средой выполнения, а не выполняется непосредственно операционной системой. Управляемая среда выполнения предоставляет различные типы служб, такие как сборка мусора, проверка типов, обработка исключений, проверка границ и т.д., для автоматического кодирования без вмешательства программиста. Он также обеспечивает выделение памяти, безопасность типов и т.д. для кода.

Приложение написано на таких языках, как Java, C# , VB.Net и т.д., всегда нацелены на службы среды выполнения для управления исполнением, а код, написанный на этих типах языков, известен как управляемый код.

В случае .NET Framework компилятор всегда компилирует управляющий код на промежуточном языке (MSIL), а затем создает исполняемый файл. Когда программист запускает исполняемый файл, JIT-компилятор CLR компилирует промежуточный язык в собственном коде, который специфичен для базовой архитектуры. Здесь этот процесс происходит в управляемой среде выполнения, поэтому эта среда отвечает за работу кода. Выполнение управляемого кода показано на изображении ниже, исходный код написан на любом языке .NET Framework.

Что такое управляемый код? Код, который написан для получения услуг выполнения управляемой среды выполнения, такой как CLR (Common Language Runtime) в .NET Framework, известен как управляемый код.-2

Управляемый код также обеспечивает независимость от платформы, поскольку, когда управляемый код компилируется на промежуточный язык, JIT-компилятор компилирует этот промежуточный язык в инструкции для конкретной архитектуры.

В чем преимущества использования управляемого кода?

  • Он повышает безопасность приложения, например, когда вы используете среду выполнения, он автоматически проверяет буферы памяти для защиты от переполнения буфера.
  • Он автоматически реализует сборку мусора.
  • Он также обеспечивает проверку типа во время выполнения / проверку динамического типа.
  • Он также обеспечивает проверку ссылок, что означает, что он проверяет, является ли ссылка на объект действительной или нет, а также проверяет, не дублируются ли они.

В чем недостатки управляемого кода?

Основным недостатком управляемого языка является то, что вам не разрешено напрямую выделять память или вы не можете получить низкоуровневый доступ к архитектуре ЦП.

Что такое неуправляемый код?

Код, который непосредственно выполняется операционной системой, известен как неуправляемый код. Он всегда нацелен на архитектуру процессора и зависит от архитектуры компьютера. Когда этот код компилируется, он всегда имеет тенденцию к определенной архитектуре и всегда запускается на этой платформе, другими словами, всякий раз, когда вы хотите выполнить один и тот же код для другой архитектуры, вам необходимо повторно скомпилировать этот код в соответствии с этой архитектурой. Он всегда компилируется в собственный код, специфичный для данной архитектуры.

В неуправляемом коде распределением памяти, безопасностью типов, безопасностью и т.д. управляет разработчик. Из-за этого возникает несколько проблем, связанных с памятью, таких как переполнение буфера, утечка памяти, переопределение указателя и т.д. Исполняемые файлы неуправляемого кода обычно находятся в двоичных образах, код x86, который загружается непосредственно в память. Приложение, написанное на VB 6.0, C, C++ и т.д., всегда находится в неуправляемом коде. Выполнение неуправляемого кода показано на рисунке ниже:

Что такое управляемый код? Код, который написан для получения услуг выполнения управляемой среды выполнения, такой как CLR (Common Language Runtime) в .NET Framework, известен как управляемый код.-3

Каковы преимущества использования неуправляемого кода?

  • Обеспечивает низкоуровневый доступ программисту.
  • Он также обеспечивает прямой доступ к оборудованию.
  • Это позволяет программисту обойти некоторые параметры и ограничения, которые используются структурой управляемого кода.

В чем недостатки неуправляемого кода?

  • Он не обеспечивает безопасности приложения.
  • Из-за доступа к распределению памяти возникают проблемы, связанные с памятью, например, переполнение буфера памяти и т.д.
  • Ошибки и исключения также обрабатываются программистом.
  • Он не фокусируется на сборке мусора.

Больше интересного в источнике: NEROLINK.RU

Предыдущая статья: C# | .NET Framework (Базовая архитектура и стек компонентов)

Следующая статья: Разница между управляемым и неуправляемым кодом в .NET