OS 6 kaug

advertisement
Operatsioonisüsteemid.
Операционные системы
Virumaa Kolledž TTÜ
Lektor Larissa Joonas
2012
6.
Ummikud.
Взаимоблокировки
2
Ressursid. Ресурсы
• Ressursside näidised. Примеры ресурсов
– Printerid
• Принтеры
– Strimmerid
• Ленточные накопители
– Tableid andmebaasis
• Таблица в базе данных
• Protsess sai kätte ressurss A ja küsib ressurss B.
Процесс получил ресурс A и запрашивает ресурс B
– Samal ajal teine protsess sai kätte ressursi B ja küsib ressursi
A.
• В то же самое время другой процесс получил ресурс B и
запрашивает ресурс A
– Mõlemad protsessid on blokeeritud.
• Оба процесса блокируются
3
Ressursid. Ресурсы (1)
• Ummik võib tekkida juhul kui:
• Взаимоблокировки происходят, если …
– Protsessid saavad kätte eksklusiivse juurdepääsu seadmetele.
• Процессы получают эксклюзивный доступ к устройствам
– Me pöördume nende seadmete poole kui ressursidele.
• Мы обращаемся к этим устройствам, как к ресурсам
• Ressursid, mida on võimalik välja laadida.
Выгружаемые ресурсы
– Можно безболезненно забирать у владеющего им процесса
• Ressurssid, mida ei ole võimalik välja laadida.
Невыгружаемые ресурсы
– Нельзя забрать, не уничтожив результата вычислений
• Ei ole võimalik välja võtta, kui tulemus ei ole hävitatud
4
Ressursid. Ресурсы (2)
•
Sündmuste järjestus, mis on vajalik ressursside
kasutamiseks. Последовательность событий,
необходимых для использования ресурса
1. Ressurssi taotlemine. Запрос ресурса
2. Ressurssi kasutamine. Использование ресурса
3. Ressurssi vabastamine. Возврат ресурса
•
Kui ressurss on kinni, peab protsess ootama.
Процесс вынужден ждать, если ресурс
недоступен
– Automaatselt blokeerub.
•
Автоматически блокируется
– Annab tagasi vea koodi
•
Возвращает код ошибки
5
Sissejuhatus. Введение
• Formaalne definitsion. Формальное определение :
Protsesside grupp on ummikus, kui iga protsess grupis ootab sündmust,
mis võimaldaks kutsuda ainult teist protsessi samast grupist.
– Группа процессов находится в тупиковой ситуации, если каждый
процесс из группы ожидает события, которое может вызвать только
другой процесс из той же группы
6
Sissejuhatus. Введение (1)
• Tavaliselt on vaja vabastada kinnitatud ressurss.
– Обычно необходимо освободить ресурс, который
занят
• Mitte ükski protsess ei saa...
Ни один из процессов не может …
– Olla käivitatud. Быть запущен
– Vabastada ressurssi. Освободить ресурс
– Taastuma. Возобновиться
7
Neli tingimusi ummiku ilmumist
Четыре условия взаимоблокировки
Mõlemapoolne väljaheitmise tingimus
Условие взаимного исключения
•
Iga ressurss on igal momendil antud kas ühele kindlale
protsessile või on vaba.
•
Каждый ресурс в данный момент или отдан ровно одному
процессу, или доступен
1
8
Neli tingimusi ummiku ilmumist
Четыре условия взаимоблокировки(1)
Kinni pidamise ja ootamise tingimus
Условие удержания и ожидания
•
•
Protsessid, mis hoiavad enne saadud ressursse, saavad
küsida uusi ressursse.
Процессы, в данный момент удерживающие
полученные ранее ресурсы, могут запрашивать
новые ресурсы
2
9
Neli tingimusi ummiku ilmumist(2)
Четыре условия взаимоблокировки
Sundusliku väljalaadimise puudumise tingimus.
Условие отсутствия принудительной
выгрузки ресурса
•
Ei ole võimalik võtta ära enne saatud ressurssid
protsessidest. Protsess peab and välja ressurss
vabatahtlikult
•
У процесса нельзя принудительным образом забрать
полученные ранее ресурсы. Процесс, владеющий ими,
должен сам освободить ресурсы
3
1
Neli tingimusi ummiku ilmumist(2)
Четыре условия взаимоблокировки
Tsükkli ootamise tingimus
Условие циклического ожидания
•
Tsükkli järjestik 2. või rohkem protsessidest, kui iga protsess
ootab järgmise protsessi ressurssi vabastamist.
•
Круговая последовательность из 2-х или более процессов,
каждый из которых ждет доступа к ресурсу, удерживаемому
следующим членом последовательности
4
1
Ummiku modellerimine.
Моделирование взаимоблокировок (1)
• Ressursi-allokatsiooni graaf
– Графы распределения ресурсов
M
N
M
A
A
B
B
N
Ressurss M kasutab protsess A.
• ресурс M занят процессом A
– Protsess B küsib või ootab ressurssi.
• процесс B запрашивает или ожидает ресурс N
– Protsessid A ja B on ummikus
• процессы A и B взаимоблокированы
1
Ummiku modellerimine.
Моделирование взаимоблокировок (2)
Ummikutega töötluse strateegia:
Стратегии взаимодействия со
взаимоблокировками:
Probleemi ignoreerimine
Проигнорировать проблему
Leidmine ja ennistamine
Обнаружение и восстановление
1
Ummiku modellerimine.
Моделирование взаимоблокировок(3)
Ummikutega töötluse strateegia:
Стратегии взаимодействия со взаимоблокировками:
Ummikute dünaamiline vältimine (avoidance)
Динамическое избежание тупиковых ситуаций
• Аккуратное распределение ресурсов
Ummikute ära hoidimine (prevention)
Предотвращение
• Püüab garanteerida, et vähemalt üks eelpool mainitud 4-s tingimusest
ei teki
• Структурное опровержение одного из 4 условий, необходимых
для взаимоблокировки
1
Ummiku modellerimine. Моделирование
взаимоблокировок (3)
A
B
C
A
B
C
M
N
P
Ummikute tekkimine. Возникновение взаимоблокировок
1
Ummiku modellerimine.
Моделирование взаимоблокировок (4)
A
B
C
M
N
P
Ummikute ära hoidimine. Предотвращение взаимоблокировок
1
Jaanalinnu algorütm.
Страусовый алгоритм
• Teesklema, et probleeme ei eksisteeri.
– Притвориться, что проблема не
существует
1
Jaanalinnu algorütm.
Страусовый алгоритм (2)
• Arukas, kui
– Разумна, если
• Ummikuid tekkivad harva. Взаимоблокировки случаются редко
• Vältimise maksumus on kõrge. Стоимость предотвращения очень
высока
• UNIX ja Windows kasutavad seda algporütmi. UNIX и
Windows используют этот алгоритм
• Valik mugavuse ja korrektsuse vahel
Выбор между
– удобством
– корректностью
1
Ummiku leidmine, kui saame ühe ressurssi igast tüüpist.
Обнаружение взаимоблокировки при наличии одного
ресурса каждого типа (1)
A
M
B
N
O
C
P
D
E
R
F
S
• Ressurssi graaf. Граф ресурсов
1
Ummiku leidmine, kui saame ühe ressurssi igast
tüüpist. Обнаружение взаимоблокировки при
наличии одного ресурса каждого типа (2)
• Maatriksid. Матрицы
• Mitmed ressussid igast tüüpist. Несколько
ресурсов каждого типа
2
Ummikust väljaumine.
Выход из взаимоблокировки (1)
• Ennistamine sundusliku väljalaadimise abil
Восстановление при помощи принудительной
выгрузки ресурса
– Võtta ära teise protsessi ressurssi.
• Забрать ресурс у другого процесса
– Sõltub ressurssi tüübist
• Зависит от типа ресурса
• Ennistamine tagastamise abil
Восстановление через откат
– Perioodilised kontroll punktid. Периодические
контрольные точки
– Kasutama salvestatus seisundit. Использовать
сохраненное состояние
– Protsessi ümberkäivitamine. Перезапустить процесс
2
Ummikust väljamine.
Выход из взаимоблокировки (2)
• Ennistamine peale protsessi hävitamist.
Восстановление путем уничтожения процесса
– Karm ja kergem variant
• Грубейший, но и простейший способ выхода
– Hävitama üht protsessi ummiku tsüklist.
• Уничтожить один из процессов из цикла взаимоблокировки
– Valida protsessi, mis on võimalik ümberkäivitada algusest
ilma kaotuseta.
• Выбрать процесс, который можно перезапустить с самого начала
без потери
2
Ohutud ja ohtlikud seisundid. Безопасные
и небезопасные состояния (1)
A
3
9
A
3
9
A
3
9
A
3
9
A
3
9
B
2
4
B
4
4
B
0
-
B
0
-
B
0
-
C
2
7
C
2
7
C
2
7
C
7
7
C
0
-
Vaba 3
(a)
Vaba 1
(b)
Vaba 5
(c)
Vaba 0
Vaba 7
(d)
(e)
Näitab, et a on ohutu.
Демонстрация того, что состояние (a) безопасно
2
Ohutud ja ohtlikud seisundid.
Безопасные и небезопасные
состояния (2)
A
3
9
A
4
9
A
4
9
A
4
9
B
2
7
B
2
4
B
4
4
B
-
-
C
1
3
C
2
7
C
2
7
C
-
7
Vaba 3
(a)
Vaba 2
(b)
Vaba 0
(c)
Vaba 4
(d)
Näitab, et seisund b ei ole ohutu.
Демонстрация того, что b небезопасно
2
Pankuri algorütm ühe ressurssi tüübile.
Алгоритм банкира для одного вида ресурсов
A
0
6
A
1
6
A
1
6
B
0
5
B
1
5
B
2
5
C
0
4
C
2
4
C
2
4
D
0
7
D
4
7
D
4
7
(a)
Vaba 3
(b)
(c)
vaba 2
• Kolm seisundid ressurssi jaotamisele.
Три состояния распределения
ресурсов
vaba 1
– ohutu
• безопасное
– Ohutu
• безопасное
– Mitte ohutu
• небезопасное
2
Ummikute ära hoidimine. Mõlemapoolne väljaheitmise
tingimuse atakk.
Предотвращение взаимоблокировок.
Атака условия взаимного исключения
• Mõned seadmed, nagu printer, saavad kasutada cash-faili.
• Некоторые устройства, например, принтер, могут
использовать подкачку
– Printeri ressurssi kasutab ainult printeri deemon.
• Ресурсы принтера использует только демон принтера
– On võimalik eemaldada ummik printerile.
• Можно исключить такую взаимоблокировку для принтера
2
Mõlemapoolne väljaheitmise tingimuse atakk.
Атака условия взаимного исключения
• Mitte kõik seadmed kasutavad cash-i.
Не все устройства используют подкачку
• Printsiipid
Принципы:
– Ärge andke ressursse, kui see ei ole vajalik.
• Избегайте выделения ресурса, если это не является
необходимостью
– Resurssile peab pretendeerima nii vähe protsesse, kui vähegi
võimalik.
• На ресурс должно претендовать как можно меньше процессов
2
Kinni pidamise ja ootamis tingimuse atakk.
Атака условия удержания и ожидания
• Välja nõudma ressursside taotlemist enne protsessi starti
Требовать от процессов запроса ресурсов до старта
– Protsess ei ole kohustatud ootama vajalike asju.
• Процесс никогда не должен ждать того, что ему нужно
2
Kinni pidamise ja ootamis tingimuse atakk.
Атака условия удержания и ожидания (2)
• Probleeme.
Проблемы:
Mõnikord protsess enne starti ei tea, kui palju ja missugused ressurssie on vaja.
До старта может быть неизвестно, сколько и каких ресурсов необходимо
Raske kasutada ressursse optimaalselt.
Ресурсы не могут быть использованы оптимально
• Variandid.
Вaрианты:
Protsess peab vabastama kõik kasutatavad ressursid.
Процесс должен освободить все используемые им ресурсы
Taotlema kõiki vajalike ressursse.
Запрашивает сразу все необходимое
2
Sundusliku väljalaadimise puudumise tingimuse atakk
Атака условия отсутствия принудительной
выгрузки ресурса
• Mitte kindel tingimus. Ненадежное условие
• Printeri eemaldamine. Изъятие принтера
3
Tsükkli ootamise tingimuse atakk.
Атака условия циклического ожидания (1)
• Nummerdatud ressurssid.
Пронумерованные ресурсы
• Graaf.
3
Kahefaaside blokeering
Двухфазовое блокирование
•
Esimene faas. Первая фаза
– Protsess katsub blokeerida kõik vajalikud kirjendid ühe kaupa.
• Процесс пытается заблокировать все требуемые записи по одной за раз
– Kui mingisugune kirjend on blokeeritud, kõik blokeeringud vabastuvad ja algab 1.
faas
• Если какая-то запись заблокирована, то все блокировки освобождаются и 1 фаза
начинается заново
•
Kui 1. faas läks edukalt, 2. faas algab.
Если первая фаза прошла успешно, то начинается вторая фаза
– Uuendamine. Обновление
– Blookeringute vabastamine.Освобождение блокировок
• Ei ole samasugune nagui üheaegne ressurssi taotlemise metood.
Не имеет общего с методом одновременного запроса всех ресурсов
• Algorütm töötab, kui programmerija vaatas üle varem tehtud 1. faasi
haldamise.
– Алгоритм работает, если программист предусмотрел обработку первой фазы
Программа может быть остановлена и перезапущена
3
Ummikud ilma ressursita. Тупики без
ресурсов
• Võimalik, kui kaks protsessid koostöötavad
Возможно при взаимодействии двух процессов
– Igasugune ootab kuni teine täidab oma ülesanne. Каждый
ждет, пока другой выполнит какую-то задачу
• Võib juhtuda semafooriga.Может случиться с
семафорами
– Igasugune protsess tahab kasutada down() kahe
semafooriga (mutex ja teine)
• Каждый процесс хочет совершить down() на двух семафорах
(mutex и другой)
– Kui järjekord on ebaõige, juhtub ummik.
• Если последовательность неправильна, то происходит
блокировка
3
Nälgimine
Голодание
• Ressurside jaotamise algorütm.
Алгоритм распределения ресурсов
– Võib anda lühemale ülesannele
• Может быть дано самой короткой задаче
• Töötab hästi süsteemis koos paljude väiksete
ülessannetega.
Хорошо работает в системе со множеством
маленьких задач
• Võib lasta surra nälga suurel ülessandel
Может дать умереть с голоду большой задаче
• Lahendamine. Решение:
– Esimene tuli - esimene on teenindatud.
• Первым пришел – первым обслужен
3
Download