Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория 2 / 2 Организация вычислительных процессов / Организация вычислительных процессов.docx
Скачиваний:
53
Добавлен:
11.04.2015
Размер:
118.49 Кб
Скачать

3.Прямой доступ к памяти (dma).

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

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

Перед выполнением операции обмена ЦП программирует DMA-контроллер, устанавливая его регистры (шаг 1).

DMA-контроллер начинает перенос данных, посылая дисковому контроллеру по шине запрос чтения (шаг 2). Адрес памяти уже находится на адресной шине, так что контроллер знает, куда пересылать следующее слово из своего буфера.

Запись в память является еще одним стандартным циклом шины (шаг 3). Когда запись закончена, контроллер диска посылает сигнал подтверждения контролеру DMA(шаг 4).

Затем контролер DMAувеличивает используемый адрес памяти и уменьшает значение счетчика байтов.

После этого шаги 2, 3 и 4 повторяются, пока значение счетчика не станет равным нулю. По завершении цикла копирования контроллер DMAинициирует прерывание процессора, сообщая ему о завершении операции ввода-вывода.

12) Взаимодействие и синхронизация процессов и потоков.

Мультипрограммирование(многозадачность,multitasking) - это такой способ организации вычислительного процесса, при котором на одном процессоре попеременно выполняются несколько программ.

В настоящее время в большинстве операционных систем определены два типа единиц работы: более крупная единица - процессилизадача, и менее крупная -потокилинить.Процесс выполняется в форме одного или нескольких потоков.

Процесс –это выполняемая программа, включая текущие значения счетчика команд, регистров и переменных

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

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

В многопроцессорных системах возможно не только чередование, но и перекрытие процессов.

Способы взаимодействия процессов(потоков) можно классифицироватьпо степени осведомленности одного процесса о существовании другого.

Степень осведомленности

Взаимосвязь

Влияние одного процесса на другой

Потенциальные проблемы

Процессы не осведомлены друг о друге

Конкуренция

  • Результат работы одного процесса не зависит от действий других.

  • Возможно влияние одного процесса на время работы другого.

  • Взаимоисключения

  • Взаимоблокировки

  • Голодание

Процессы косвенно осведомлены о наличии друг друга

Сотрудничество с использованием разделения

  • Результат работы одного процесса может зависеть от информации, полученной от других.

  • Возможно влияние одного процесса на время работы другого.

  • Взаимоисключения

  • Взаимоблокировки

  • Голодание

  • Синхронизация

Процессы непосредственно осведомлены о наличии друг друга

Сотрудничество с использованием связи

  • Результат работы одного процесса зависит от информации, полученной от других процессов.

  • Возможно влияние одного процесса на время работы другого.

  • Взаимоблокировки (расходуемые ресурсы)

  • Голодание

Конкуренция– ситуация, когда два или более процессов требуют доступ к одному и тому же ресурсу (принтеру, файлу и т.п.), называемомукритическим(неразделяемый ресурс). Часть программы, использующая критический ресурс, называетсякритической секцией.

Группа процессов находится в тупиковой ситуации, если каждый процесс из группы ожидает события, которое может вызвать только другой процесс из этой же группы

Методы взаимоисключений

1. Запрещение прерываний при входе в критическую областьи разрешение прерываний после выхода из критической области.Достоинства: простота реализации.Недостатки: монополизация процессора, возможный крах ОС при сбое процесса, невозможность использования в многопроцессорных системах, так как прерывание относится к одному процессору

2. Глобальные блокирующие переменные (программный подход).Достоинства:Неделимая (атомарная) операция “проверка-установка”.Недостатки: необходимость постоянного опроса другими потоками, требующими тот же ресурс, блокирующей переменной; дополнительные затраты процессорного времени, применимы для потоков одного процесса.

3.Использование системных функций входа в критическую секцию.Достоинство: исключается потеря времени процессора на циклическую проверку освобождения занятого ресурса.Недостаток: растут накладные расходы ОС по реализации функции входа в критическую секцию и выхода из нее.

4. Семафоры Дейкстры. Семафор: переменнаяS, примитивыP(proberen– проверка (==0); уменьшение,down) иV(verhogen– увеличение,up).

V(S) – переменнаяSувеличивается на 1 единым действием. Выборка, наращивание и запоминание не могут быть прерваны. К переменнойSнет доступа во время выполнения этой операции.

P(S) – переменнаяSуменьшается на 1, если это возможно, оставаясь в области неотрицательных значений. ЕслиSуменьшить невозможно, поток, выполняющий операциюP, ждет, пока это уменьшение станет возможным (ПокаS==0 поток блокируется). ОперацияPнеделима.

5. Мониторы Хоара и Хансена.

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

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

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

При отказе в доступе монитор блокирует обратившийся к нему процесс и определяет условие ожидания. Проверка условия ожидания выполняется самим монитором, который и деблокирует ожидающий процесс.

Синхронизирующие объекты ОС

Для синхронизации потоков, принадлежащих разным процессам, ОС должна предоставлять потокам системные объекты синхронизации.

К таким объектам относятся события(event),мьютексы(mutex–mutualexclusion– взаимное исключение),системные семафорыи др.

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

Мьютекс(простейший двоичный семафор) используется для управления взаимным исключением доступа к совместно используемым данным.

Семафоры используются для оповещения свершения последовательности событий.

Для синхронизации используются также “обычные ” объекты ОС: файлы, процессы, потоки

При переходе объекта в сигнальное состояние ожидающий этот объект поток переводится в очередь готовых к выполнению потоков.

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

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

Примеры

Очереди сообщений

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

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

Почтовые ящики

Почтовые ящики,используемые вWindows2000, в некоторых аспектах подобны каналам, однако, в отличие от каналов, являются однонаправленными.

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

Сокеты

Сокеты(ОСWindows2000) подобны каналам, с тем отличием, что они при нормальном использовании соединяют процессы на разных компьютерах.

Например, один процесс пишет в сокет, а другой на удаленной машине читает из него.

Вызов удаленной процедуры

Вызов удаленной процедуры(RemoteProcedureCall,RPC) представляет собой способ, которым процесс А просит процесс В вызвать процедуру в адресном пространстве процесса В от имени процесса А и вернуть результат процессу А.