Опубликован: 25.03.2010 | Доступ: свободный | Студентов: 1447 / 157 | Оценка: 4.31 / 4.00 | Длительность: 25:42:00
Лекция 11:

Процессы, домены, потоки в C#

Аннотация: В лекции описывется создание приложений с использованием доменов и потоков.

Процессы

В недавние старые добрые времена дисковая операционная система ( DOS ) была однозадачной и выполняла только одно приложение, не считая резидентных программ фонового режима и ядра самой загруженной DOS. Это приложение через сервисы операционной системы или напрямую получало неограниченный доступ к оборудованию и к любым участкам памяти. Приложению, как единственному дитя, позволялось все на его страх и риск. Если от неверных действий приложения компьютер зависал - от этого страдало только само приложение.

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

Процесс - это некий абстрактный контейнер, который окутывает запущенное приложение, предоставляя ему все необходимое для автономной работы, но в то же время ограничивая его полномочия. Код одного процесса не может влиять на данные и код другого процесса, за этим строго следит операционная система. За процессами закрепляются приоритеты на обслуживание процессором и выделяется собственное виртуальное адресное пространство размером 4 Гб для 32-разрядных систем (или 16 Гб для 64-разрядных). Такой размер оперативной памяти, закрепляемой за процессом, физически не может быть предоставлен, но в пределе, за счет хитроумного механизма многостраничной адресации с привлечением дисковой памяти это возможно.

Для обычных приложений операционная система сама назначает права доступа к своим сервисам и полностью блокирует прямой доступ к оборудованию компьютера. Изоляция параллельных процессов не абсолютная, но взаимодействие процессов осуществляется строго под контролем операционной системы посредством механизма IPC ( Inter Process Communication - межпроцессное взаимодействие).

Чтобы наглядно убедиться в существовании процессов операционной системы, достаточно вызвать диспетчер задач либо через контекстное меню панели задач, либо нажатием заветной комбинации клавиш Ctrl-Alt-Del. Приложение, которое выполняется в данный момент, учитывается операционной системой как процесс.

Закройте выполняемое приложение, сразу же завершится выделенный для него процесс. Таким образом, процессы - это механизм изоляции и поддержки выполняемых приложений на уровне операционной системы.

Домены

По аналогии с процессами в операционной системе, общеязыковая среда исполнения CLR ( Common Language Runtime ) также реализует подобный механизм, который называется доменами. Вспомним, что CLR является виртуальной машиной (набором программных средств), исполняющей код приложений .NET. По умолчанию приложение помещается в основной домен среды, но далее оно может создавать дополнительные домены и размещать в них отдельные объекты. Это повышает отказоустойчивость приложения в целом, поскольку гибель одного домена никак не повлияет на работу остальных частей приложения, размещенных в других доменах в рамках одного процесса.

Таким образом, домен отвечает за изолирование кода и данных в рамках одного процесса на уровне CLR точно также, как процесс отвечает за изолирование кода и данных на уровне операционной системы.

В удаленных WEB -приложениях не только сама прикладная программа может создавать изолированные домены для выполнения отдельных частей приложения. Среда исполнения, в случае большой загруженности приложения в одном домене или обновлении исполняемого кода в режиме online, может сама запустить еще одну версию приложения в новом домене для работы с новыми запросами, не прекращая работу кода в старом домене с его прежними клиентами. Когда же количество запросов к удаленному WEB -приложению спадет или заканчиваются клиенты домена старой копии, число доменов с копиями приложения может автоматически уменьшиться.

По аналогии с IPC -механизмом организации взаимодействия между процессами на уровне операционной системы, на уровне CLR также организуется взаимодействие между доменами. Технология междоменного взаимодействия называется .NET Remoting. Она реализуется через специальные каналы, так называемые, прозрачные переходники ( Transparent Proxy ), которые следят за правами доступа и безопасностью.

Максим Филатов
Максим Филатов

Прошел курс. Получил код Dreamspark. Ввожу код на сайте, пишет:

Срок действия этого кода проверки уже истек. Проверьте, правильно ли введен код. У вас осталось две попытки. Вы также можете выбрать другой способ проверки или предоставить соответствующие документы, подтверждающие ваш академический статус.

 

Как активировать код?