Подтвердить что ты не робот

Разница между AppDomain, Assembly, Process и Thread

В чем разница между AppDomain, Сборка, Процесс и Тема

4b9b3361

Ответ 1

AppDomain - это блок изоляции внутри процесса. AppDomains можно создавать во время выполнения, загружать с кодом и выгружать. Его граница изоляции предназначена для того, чтобы сделать приложения .NET более надежными.

Сборка содержит один или несколько модулей, которые содержат скомпилированные фрагменты кода. Обычно вы увидите сборку как .EXE или .DLL.

Процесс - это исполняемое приложение (waaaay упрощенное).

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

Сложить все это (очень упрощенно)...

Выполняется программа. Процесс создается операционной системой, и в пределах одного потока он начинает загружать код для выполнения. В .NET-приложении CLR создается один AppDomain. Приложение, выполняющее сборку (.EXE), загружается в этот AppDomain и начинает выполнение. Приложение может создавать новые процессы, создавать AppDomains, загружать другие сборки в эти домены, а затем создавать новые потоки для выполнения кода в любом из этих AppDomains.

Ответ 2

Одно из самых больших преимуществ компилятора CLR JIT - это предотвращение дублирования виртуального адресного пространства процессов. Например, если процесс 1 порожден, и CLR (MScorEE.dll) управляет выполнением управляемой сборки (.exe или .dll) внутри этого процесса, тогда компилятор JIT будет следить за тем, чтобы виртуальное адресное пространство, выделенное для этого процесс не будет сталкиваться или перекрываться с другими смежными процессами. Имея это преимущество, теперь можно повторно использовать один процесс для выполнения нескольких управляемых кодов! Каждое исполнение управляемого кода будет иметь свой собственный AppDomain, и больше, чем AppDomains может быть частью одного процесса. Это то, что используется IIS и SQL Server (один процесс, многие AppDomains).

Сборка - абстрактный термин, который представляет собой единый, повторно используемый компонент управляемого кода. Сборка состоит из метаданных (заголовок PE32 или PE32 + заголовок + IL) и IL. Компилятор CLR JIT компилирует и преобразует ILs сборки в набор конкретных машин, основанный на процессоре и его архитектуре (x86 или x64).

Процесс - это то, что ОС использует для облегчения выполнения программы. Процесс представляет собой "представление ОЗУ" программы, которая имеет адресное пространство, состоящее из стека, кучи, статики и области кода. Каждый процесс имеет уникальный идентификатор процесса, связанный с ним.

Thread - это легкий процесс. Процесс имеет по крайней мере один поток (т.е. Основной поток), и в зависимости от ОС parallelism ОС может создавать несколько потоков в рамках одного процесса и контекстно-переключатель среди них для ускорения выполнения программы. Темы могут делиться некоторыми областями памяти внутри процесса.