Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Safonov / AMPN_course_21.pptx
Скачиваний:
111
Добавлен:
16.04.2015
Размер:
215.69 Кб
Скачать

Архитектуры и модели программ и знаний

Лекция 21

Распределенное и параллельное программирование в .NET

Сафонов Владимир Олегович

Профессор кафедры информатики Заведующий лабораторией Java-технологии

(http://polyhimnie.math.spbu.ru/jtl)

Санкт-Петербургский государственный университет

Email: vosafonov@gmail.com

WWW: http://www.vladimirsafonov.org

параллельного и распределенного программирования

Параллельный процесс в UNIX (1970): системные вызовы fork и join; при создании процесса полностью копируется память родителя и создается новое виртуальное адресное пространство

Поток (thread): Параллельный процесс, исполняемый в общем виртуальном адресном пространстве с родителем

Волокно (fiber): Поток, управляемый пользователем

CORBA (1988, OMG): Модель и стандарт распределенного ООП

(C)Сафонов В.О. 2012

Потоки: история

Поток – параллельная ветка (нить) исполнения приложения, которая должна выполнять логически независимую часть задачиИстория: одной из первых ОС, поддерживающих параллельное выполнение, стал UNIX (1970). Но процесс в UNIX – “тяжеловесен”, так как создание процесса приводит к созданию нового виртуального адресного пространства, что является слишком ресурсоемкой операцией

Облегченный процесс – новая разновидность процесса (Windows NT, Solaris), создание которого требует только создания нового стека. Он разделяет одно и то же адресное пространство со своим родительским процессомПоток – единица параллельного исполнения пользовательского

уровня, реализуемая облегченным процессом или набором облегченных процессов

Библиотеки поддержки многопоточности имеют различные API для разных ОС

До появления Java и .NET ни один из “мировых” языков программирования (C, C++ и др.) не имел встроенного механизма многопоточности. Эта проблема приводила к недостаточной степени переносимости приложений

(C) Сафонов В.О. 2012

Введение

Потоки

Основа для высокоуровневого планирования загрузки процессора

Дают возможность решения задач в параллельном стиле

Преимущества использования потоков

Приложение может выполнять свою задачу без блокировки GUI

Управление приоритетами задачОснова для организации потенциально больших по

времени задач

Сеоевой доступКоммуникация с сервером СУБД и др.

Недостатки использования потоков

Неизбежны накладные расходы

Контекстное переключение потоков

Усложнение модели программирования (рассмотрение задачи в “параллельном стиле”)

Накладные расходы проектирования и реализацииНакладные расходы на отладку

(C) Сафонов В.О. 2012

Поддержка потоков в .NET

Расположение API

Пространство имен System.Threading

Набор шаблонов проектирования и асинхронного программирования

Скрывает факт использования потоковПоддержка делегатов

Интерфейс IAsyncResult

(C) Сафонов В.О. 2012

Архитектура процесса .NET

 

.NET process

 

AppDomain A

AppDomain B

Shared Data

Shared Data

Shared Data

Shared Data

Thread 1

Thread 2

Thread 3

Thread

Thread

Thread

Thread

Thread

Thread

Specific

Specific

Specific

Specific

Specific

Specific

Data

Data

Data

Data

Data

Data

 

(C) Сафонов В.О. 2012

 

Области приложений

Абсолютно новая концепция, введенная в

.NET CLR

Но процессы и изоляция исполняемого кода использовались и раньше (Burroughs, “Эльбрус”)

Области приложений играют роль “мини- процессов” в CLR, дают возможность изоляции приложений для защиты от отказов, обозначения границ видимости типов, управления безопасностью и т.д.

(C)Сафонов В.О. 2012

Определение AppDomains

Исполняемые приложения трактуются CLR как области

Их роль в CLR аналогична роли процессов в ОС

Отношение “один ко многим”

Один процесс может содержать много областей,

но каждая область может существовать в рамках

лишь одного процесса

Управление областями намного дешевле, чем управление процессами

Поток ОС переключается между областями намного быстрее, чем между процессами

(C)Сафонов В.О. 2012

Свойства областей

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

Доступны в данной области с помощью методов GetData / SetData

Могут быть изменены или считаны как изнутри области, так и извне

Расширяемы

Система поиска сборок интенсивно использует свойства областей

Коллекция всех сборок, загруженных в область приложения, доступна с помощью метода GetAssemblies

Статический элемент

AppDomain.CurrentDomain возвращает ссылку на текущую область приложения

(C)Сафонов В.О. 2012

Область действия типов и

объектов CLR

Области приложения определяют границы областей действия для статических полей, типов и объектов

Каждый из объектов принадлежит только какой-либо определенной области приложения

Все загруженные типы принадлежат только одной области приложения

Статические элементы определены на уровне области приложения, а не на уровне процесса

Все типы и объекты выгружаются при выгрузке области приложения

(C) Сафонов В.О. 2012

Соседние файлы в папке Safonov