Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Операционные Системы

.pdf
Скачиваний:
37
Добавлен:
02.03.2016
Размер:
1.94 Mб
Скачать

BOOL ResetEvent(

Переводит событие со сбросом в ручную в

HANDLE hEvent

занятое состояние.

)

 

 

 

Отличие событий с автосбросом от событий со сбросом вручную заключается в том, что первые автоматический переводятся в занятое состояние функциями ожидания объекта ядра (Wait-функции), а вторые остаются свободными, до явного их перевода в занятое состояние функцией

ResetEvent.

Пример 18. Использование объекта «событие».

//Количество элементов в массиве

#define LENGTH 100

//Массив для сортировки

static DWORD g_dwNumbers[LENGTH];

//Создаѐм событие с автосбросом в занятом сотоянии. static HANDLE hFillDoneEvent = CreateEvent(NULL, FALSE, FALSE, NULL);

//Заполнение случайными значениями массива

DWORD __stdcall Fill(LPVOID lpParam)

{

srand((UINT)time(NULL)); for (int i=0; i<LENGTH; i++)

g_dwNumbers[i]=rand();

// Массив заполнен. Можно освобождать событие.

SetEvent(hFillDoneEvent); return 0;

}

DWORD __stdcall Sort(LPVOID lpParam)

{

// Ждѐм освобождения события заполнения массива.

WaitForSingleObject(hFillDoneEvent, INFINITE);

// Сортируем массив

return 0;

}

int main(int argc, char* argv[]){ HANDLE hThreads[2];

61

hThreads[0] = CreateThread(NULL, 0, Sort, NULL, 0, NULL);

hThreads[1] = CreateThread(NULL, 0, Fill, NULL, 0, NULL);

WaitForMultipleObjects(2, hThreads, TRUE, INFINITE); CloseHandle(hFillDoneEvent);

// Закрываем описатели потоков return 0;

}

Задачи и упражнения

1.Модифицируйте программы из Пример 15 и Пример 16 таким образом, что бы функция IncThread совершала операцию прибавления/вычитания над двумя переменными (i, j). Сколько нужно критических секций (мьютексов) и как их правильно расставить?

2.Разработайте и реализуйте на языке С++ классы-обѐртки для механизмов синхронизации: критическая секция, мьютекс, семафор, событие (с автосбросом и сбросом вручную). Все дальнейшие задачи выполняйте с использованием разработанных классов.

3.В библиотеке существуют книги A и B по три и два экземпляра соответственно. В библиотеке записаны 6 посетителей. Каждый из посетителей может взять одну из книг, либо две книги одновременно. Если книга в библиотеке отсутствует на протяжении 3 секунд, то посетитель выписывается из библиотеки. Если книга (книги) получена, то посетитель работает с ней (с ними) какое-то случайное время и после этого возвращает книгу (книги) в библиотеку. Реализуйте модель задачи с использованием механизмов синхронизации.

4.Пусть имеется текстовый файл А. Первый поток в системе считывает в буфер из файла одно предложение. Это предложение обрабатывается вторым потоком, который подсчитывает количество слов в нѐм. Третий поток записывает в файл B исходное предложение, добавляя к нему информацию о количестве слов в нѐм:

Синхронизация – это просто! 3 Синхронизация – это просто!(3). Реализуйте задачу, используя необходимые средства синхронизации потоков.

Примечание. Используйте для решения задачи защищѐнную очередь.

62

5.Постройте модели Холта (модель повторно используемых ресурсов) для задач 1–3.

6.Постройте модель пространства состояний для задач 1–3. Определите безопасные, опасные и тупиковые состояния.

7.Реализуйте модель задачи синхронизации «обедающие философы». Предотвратите заговоры между соседними философами.

Контрольные вопросы

1.Изложите типовые задачи синхронизации параллельных процессов.

2.Предложите средство предотвращения заговоров в задаче синхронизации «обедающие философы».

3.Что такое критическая секция? Критический ресурс? Разделяемый ресурс? Всегда ли разделяемый ресурс является критическим ресурсом?

4.Какими механизмами синхронизации располагает современная ОС?

5.Что такое «мьютекс»? Чем он отличается от других синхронизирующих примитивов?

6.Сравните мьютекс с событием с автосбросом. Являются ли они взаимозаменяемыми?

7.Расскажите о семафорах Дейкстры. Чем обеспечивается взаимное исключение при выполнении P-, V-операций?

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

9.Как могут быть реализованы семафорные примитивы для мультипроцессорной системы?

10.Что такое тупиковое состояние? Перечислите условия, при которых возникает тупик.

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

12.Что является причиной возникновения тупиков на SR– ресурсах?

63

13.Приведите пример графа повторно используемых ресурсов. Что позволяет сделать эта модель Холта?

14.Что представляет собой «предотвращение тупика»? Как его можно реализовать?

15.Что представляет собой «обход тупика»?

16.Что такое «опасное состояние»? Приведите пример опасного состояния на модели состояний системы.

64

Лабораторная работа №6. Планирование в реальном времени.

Цель занятия

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

научиться

-определять планируемость параллельных процессов реального времени на основе алгоритма монотонных частот:

планируемость периодических задач

планируемость апериодических задач

планируемость задач с синхронизацией.

Теория

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

Планирование периодических задач.

Периодическая задача характеризуется периодом T и временем выполнения C. Коэффициент использования процессора равен U = C/T. Задача называется планируемой, если она удовлетворяет всем временным ограничениям, т.е. еѐ исполнение завершается до истечения периода. Группа задач является планируемой, если планируемой является каждая задача.

При заданном множестве независимых периодических задач алгоритм монотонных частот назначает каждой задаче фиксированный приоритет, вычисляемый на основе еѐ периода: чем короче период, тем выше приоритет.

Теорема о верхней границе коэффициента использования ЦП (Теорема №1).

Множество из n независимых периодических задач, планируемых согласно алгоритму монотонных частот, всегда удовлетворяет временным ограничениям, если

 

1

 

C1

 

Cn

 

 

...

n(2

n

1) U (n) ,

 

 

T1

 

Tn

 

65

где Ci и Ti – время выполнения и период задачи ti соответственно.

Пример 19. Определение планируемости задач на основе теоремы о верхней границе использования ЦП.

Определить планируемость трѐх независимых периодических задач на основе теоремы о верхней границе использования ЦП:

t1 :C1=20;T1=100; t2 :C2=30;T2=150; t3 :C3=60;T3=200;

Найдѐм коэффициенты использования ЦП:

U1 = 0,2

U2 = 0,2

U3 = 0,3

U(3) = U1 + U2 + U3 =0,7 < 0,779

Задачи являются планируемыми.

Теорема о времени завершения (Теорема №2).

Позволяет получить более точные сведения по сравнению с теоремой №1. В теореме рассматривается возможность завершения всех задач за отведѐнный период при худшем варианте – готовности всех задач одновременно.

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

 

i

1

i,1 i n, min C j

pT

 

j 1

 

 

k

( p, k) R R {(k, p) :1

i

i

 

ti – проверяемая задача, на время выполнения ti для каждой пары ( ti планирования задачи tk..

pT

 

1,

 

 

 

k

 

 

 

 

 

 

 

 

Tj

 

 

 

 

 

k i,

T

 

p 1,...,

i

}

 

 

 

 

T

 

 

 

 

 

 

 

 

 

k

tk – любая из более приоритетных задач, влияющих

, tk ) каждое значение p представляет точку

В каждой точке планирования необходимо рассмотреть один раз время ЦП Ci потраченное на задачу ti, а также время потраченное на более

66

приоритетные задачи. Это позволит определить, успеет ли ti завершить выполнение к данной точке планирования.

Пример 20. Определение планируемости задач на основе теоремы о предельном времени завершения.

Определить планируемость независимых периодических задач на основе теоремы о времени завершения:

t1 :C1=20;T1=100; t2 :C2=30;T2=150; t3 :C3=90;T3=200;

Время

 

(мс)

 

 

 

t1

 

 

t2

 

 

 

t3

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

20

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

20

 

 

 

30

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

40

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

60

 

 

 

 

 

 

 

 

50

 

 

 

 

 

 

 

 

 

 

 

 

 

 

80

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Т1

100

 

20

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

120

 

 

 

 

 

 

30

 

 

 

 

 

 

 

 

 

 

 

 

 

 

140

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Т2

160

 

 

 

 

 

30

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

180

 

 

 

 

 

 

10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Т3

200

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Для первой точки планирования T1 = 100: C1+C2+C3 <= T1

20+30+90 > 100 p=1, k=1

Для второй точки планирования T2 = 150: 2C1+C2+C3 <= T2

40+30+90 > 150 p=1, k=2

67

Для третьей точки планирования T3 = 200: 2C1+2C2+C3 <= T2= T3

40+30+90 < 200 p=2, k=1

Неравенство для третьей точки выполняется, значит задачи являются планируемыми.

Планирование апериодических задач.

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

Планирование с синхронизацией задач

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

Обобщѐнная теорема о верхней границе коэффициента использования ЦП (Теорема 3)

 

 

 

C j

 

 

1

 

Bi Ck

 

Ui

 

 

 

 

 

 

Ci

 

T

 

T

 

 

 

j

 

 

 

k H1

 

 

j Hn

 

 

 

i

 

 

Ui – верхняя граница использования ЦП за период Ti для задачи ti

 

 

C

 

 

 

 

 

 

 

 

 

 

j

 

суммарное

использование

за

счѐт

вытеснения

 

 

T

 

 

 

 

 

 

 

 

j Hn

j

 

 

 

 

 

 

 

 

 

 

 

 

 

 

высокоприоритетными задачами с периодом меньшим, чем у ti

Ci

Ti

B

i

 

T

 

i

использование процессора задачей ti

время блокировки задачи ti в худшем случае

Ck

 

k H1

суммарное использование ЦП более приоритетными задачами с

 

Ti

 

 

большим периодом чем у ti.

 

 

68

Пример 21. Пример применения обобщѐнной теории планирования в реальном времени.

Дано: Есть четыре задачи: две периодические и две апериодические. Апериодическая задача tа управляется прерываниями и должна успеть выполниться в течение 200 мс после прерывания, иначе данные будут потеряны. Для другой апериодической задачи время между событиями в худшем случае равно Т2 и оно принимается равным периоду эквивалентной периодической задачи.

Периодическая задача t1 : С1 = 20; Т1 = 100; U1 = 0,2.

Апериодическая задача t2 : С2 = 15; Т2 = 150; U2 = 0,1.

Управляемая прерываниями задача tа : Cа = 4; Та = 200; Uа = 0,02.

Периодическая задача t3 : С3 = 30; Т3 = 300; U3 = 0,1.

Кроме того, известно, что задачи , t1, t2 и t3 обращаются к одному и тому же хранилищу данных, защищенному семафором S. Предполагается, что затраты на контекстное переключение, один раз в начале и один раз в конце выполнения задачи, входят в потребляемое процессорное время.

Решение:

1)Назначим приоритеты задачам (в порядке возрастания): {ta,t1, t2, t3}.

2)Найдѐм полный коэффициент использования ЦП задачами:

U(n) = Ua+U1+U2+U3=0,02+0,2+0,1+0,1 = 0,42 < 0,75

3)Найдѐм коэффициент использования ЦП в отдельности для каждой задачи, т.к. приоритеты задач отличаются от частотно-монотонных:

задача ta. Имеет наивысший приоритет и не разделяет ресурсов (не синхронизирована), поэтому получает процессор по первому требованию. Коэффициент использования ЦП 0,02<0,75 и она удовлетворяет условиям теоремы №1.

задача t1. Рассмотрим четыре фактора:

Время вытеснения более приоритетными задачами с меньшим периодом: таких нет (Hn = ). UHn=0;

U1 =C1/T1=0,2;

Вытеснение более приоритетными задачами с большим периодом: задача ta. UH1=Ca/T1=0,04;

Время блокировки задачами с более низким приоритетом. Может быть

блокирована t2, t3. В худшем случае это будет t3. UB=C3/T1=0,3 U = UHn + U1 + UH1 + UB = 0+0,04+0,2+0,3 = 0,54 < 0,75;

t1 удовлетворяет временным ограничениям. Аналогично требуется проверить задачи t2 и t3.

69

Задачи и упражнения

1.Является ли планируемой группа периодических асинхронных задач, планируемых согласно алгоритму монотонных частот:

t1: C1=10 T1=100 t2: C2=30 T2=150 t3: C3=50 T3=200 t4: C4=20 T4=100

Постройте временную диаграмму.

2.Закончите расчѐт задачи из Пример 21. Будут ли задачи планируемыми, если через семафор S синхронизированы все задачи ta, t1, t2, t3?

3.Реализуйте в любой среде разработки программу расчѐта планируемости заданной группы задач. На вход подаѐтся информация о задачах {период, время работы, тип (периодическая/апериодическая/по прерыванию), объект синхронизации}. Пользуясь рассмотренными методами, программа даѐт заключение об их планируемости.

Контрольные вопросы

1.Дайте понятие операционной системы реального времени.

2.Какие требования ставятся к системам жѐсткого реального?

3.Какие требования ставятся к системам т.н. «мягкого» реального времени?

4.Что такое гарантия обслуживания? Приведите примеры.

5.Какие процессы рассматриваются в теории планирования в реальном времени? Дайте понятие алгоритма монотонных частот.

6.Можно ли использовать теорию планирования в реальном времени к задачам не подчиняющимся алгоритму монотонных частот?

7.Дайте понятие гармоничных периодов. Какие группы задач лучше планируются: с гармоничными или негармоничными периодами?

8.Чем можно объяснить условие планируемости задач по теореме о верхней границе использования ЦП значением Ln2? Почему это значение не может быть 1 (100% использования ЦП)?

9.Как производится оценка планируемости апериодических задач?

10.Раскройте проблему инверсии приоритетов.

11.Что такое протокол предельного приоритета? Какие проблемы позволяет решить его использование?

Влияет ли тип применяемого примитива синхронизации на решение

задачи планируемости группы?

70