Среда, 08.02.2012, 10:31
Приветствую Вас Гость

Сайт факультета ЭВТ ВолгГТУ

Меню сайта
Форма входа
Логин:
Пароль:

Войдите, чтобы не видеть рекламу
Категории раздела
Дополнительно
Реклама


Интересный дизайн сайта и его создание.
Это интересно...

Утром собираюсь делать бутерброд с маслом, открываю холодильник, достаю новую пачку, на ней вижу 72,5%.

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

и тут доходит.. что что-то не то...0о

Поиск
Наш опрос
Когда вы поступили в ВолгГТУ вам было...
Всего ответов: 196
Статистика

Онлайн всего: 12
Ныкаются: 12
Пользователей: 0
Главная » Файлы » Лекции » Операционные системы [ Добавить материал ]

Синхронизация. Параллельное выполнение процессов и потоков.

[ Скачать с сервера (254.1Kb) - бесплатно ] 21.11.2009, 12:36

  • Проблемы параллельного выполнения
  • Критические секции. Детерминированность.
  • Атомарность операций
  • Объекты синхронизации
  • Классические проблемы синхронизации
  • Реализация объектов синхронизации в ОС Windows
  • Особенности реализации объектов синхронизации в ОС Unix


Фрагменты из лекции:


Детерминированность

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

Критическая секция

● Часть программы, в которой есть обращение к общим данным, называется критической секцией.
● Условия детерминированности и работоспособности параллельных программ:

– два процесса не должны одновременно находится в критических секциях;


Атомарность. Виды ожидания.
● Операция называется атомарной, если во время ее выполнения не может происходить переключения процессора на другой процесс (поток).
● Ожидание блокировки называют:

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

Объекты синхронизации

  • Мьютекс (mutual exclusive) — двоичная переменная, находящаяся в двух состояниях — свободном и занятом. Операция «проверить» ждет освобождения мьютекса и переводит его в занятое состояние, операция «освободить» переводит в свободное состояние.
  • Семафор — целая переменная с неотрицательным значением. Операция «проверить» вычитает значение семафора, если он положителен, и ожидает увеличения если равен нулю. Операция «освободить» увеличивает значение семафора на 1.

Синхронизация в ОС Windows
  • Функция Sleep
  • Объекты синхронизации
  • Функции ожидания
  • Критические секции
Функция Sleep
  • VOID Sleep(DWORD dwMilliseconds);
  • Переводит поток в состояние блокировки на указанное количество милисекунд.
  • В качестве значения параметра можно использовать макрос INFINITE.
  • Поток не продолжит работу в течении не менее чем указанное количество времени.
Объекты синхронизации ОС Windows
  • Объекты синхронизации ОС Windows — это объекты, которые имеют дескрипторы и могут находится в двух состояниях: сигналированом и несигналированом.
  • Объекты синхронизации используются в функциях ожидания.
  • Функция ожидания позволяет процессу дождаться сигналирования одного или нескольких объектов.
  • Все операции над объектами синхронизации (в т.ч. производимые функциями ожидания) атомарны.

Мьютекс

  • Мьютекс — бинарный объект синхронизации. В каждый момент времени он свободен (сигналирован) или принадлежит какому-либо потоку (несигналирован).
  • Успешно завершенная функция ожидания захватывает мьютекс. Для его освобождения поток использует функцию releaseMutex
  • Если поток начал ожидание на мьютексе, которым уже владеет, то оно немедленно заканчивается. Функцию ReleaseMutex для освобождения необходимо вызвать столько раз, сколько была вызвана функция ожидания.

Операции над мьютексами
● Создание мьютекса
– HANDLE CreateMutex ( LPSECURITY_ATTRIBUTES lpMutexAttributes, BOOL bInitialOwner, LPCTSTR lpName);
● Освобождение мьютекса
– BOOL ReleaseMutex(HANDLE hMutex);

Семафор

  • Семафор — объект, состояние которого описывается неотрицательным целым числом (с пределом значения).
  • Семафор сигналирован, когда его значение положительно, несигналирован — когда оно равно нулю.
  • Функция ожидания (после завершения ожидания при необходимости) уменьшает значение семафора на 1.
  • Функция ReleaseSemaphore увеличивает значение семафора.
  • Если же поток организует несколько ожиданий на одном семафоре не отпуская его, то каждое ожидание уменьшает семафор.
Операции над семафорами
● Создание семафора
– HANDLE CreateSemaphore ( LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, LONG lInitialCount, LONG lMaximumCount, LPCTSTR lpName);
● Увеличение значения семафора
– BOOL ReleaseSemaphore( HANDLE hSemaphore, LONG lReleaseCount, LPLONG lpPreviousCount);

Таймер

Таймер сигналируется по истечении определенного времени.
Таймер может быть
  1. сбрасываемым вручную — остается сигналированным до установки нового значения времени (перезапуска);
  2. с автоматическим сбросом — переходит в несигналированное состояние при завершении операции ожидания.
Периодический таймер автоматически перезапускается через определенный период времени.

Операции над таймерами
● Создание таймера
– HANDLE CreateWaitableTimer ( LPSECURITY_ATTRIBUTES lpTimerAttributes, BOOL bManualReset, LPCTSTR lpTimerName);
● Запуск таймера
 – BOOL SetWaitableTimer(
HANDLE hTimer,
const LARGE_INTEGER* pDueTime,   // 100нс, положительные — абсолютное время, отрицательные — относительное
LONG lPeriod, //период, мс
PTIMERAPCROUTINE pfnCompletionRoutine,
LPVOID lpArgToCompletionRoutine,
BOOL fResume //обычно 0 );

Категория: Операционные системы | Добавил: COBA | Теги: синхронизация, unix, windows, программирование, ОСи, Сычёв
Просмотров: 1372 | Загрузок: 571 | Рейтинг: 0.0/0 |
Всего комментариев: 0

Имя *:
Email:
Код *:




Рейтинг@Mail.ru Создать сайт бесплатно