Найти тему
nerolink.ru

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

Оглавление

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

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

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

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

-2

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

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

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

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

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

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

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

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

-3

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

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

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

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

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

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

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

Наука
7 млн интересуются