
- •Операційні системи
- •Функціонування комп'ютерної системи
- •Обработка переривань
- •Структура пам'яті
- •Лекція 5: Архітектура ос. Управління процессами: Основні поняття. Семафори і монітори План
- •2. Керування процесами
- •Віртуальні машини - інший розповсюджений підхід до розробки операційних систем й їхніх користувальницьких інтерфейсів
- •Механізми й політики
- •Реалізація операційних систем
- •Генерація операційної системи
- •Перемикання з одного процесу на інший
- •Планувальники, що виконують диспетчеризацію процесів
- •Лекція 10. Методи синхронізації процесів План
- •Алгоритм рішення проблеми критичної секції
- •Алгоритм «в пиріжковій» (bakery algorithm)
- •Синхронізація на основі загальних семафорів
- •Реалізація семафорів
- •Рішення за допомогою семафорів завдання
- •Рішення за допомогою семафорів завдання "читачі - письменники"
- •Рішення за допомогою семафорів завдання " філософи, що обідають,"
- •Монітори
- •Лекція № 11. Управління памяттю План
- •Динамічне завантаження й динамічна лінковка
- •Оверлейна структура програми
- •Відкачка й підкачування
- •Лекція 13. Сегментна організація пам’яті. Віртуальна пам’ять
- •Оптимальний алгоритм заміщення сторінок
- •Сторінкова організація на вимогу в Windows nt
- •Лекція № 14. Системи файлів План
- •Типова організація файлової системи зображена на мал. 19.3.
- •Логічна організація директорій
- •Монтування файлових систем
- •Структура файлової системи
- •Лекція № 15. Віртуальні файлові системи План
- •Лекція 17. Системи вводу-виводу План
- •Опитування пристроїв
- •Переривання
- •Ввід-вивід із прямим доступом до пам'яті (dma)
- •Блокові й символьні пристрої
- •Мережні пристрої істотних відрізняються від блоків і символьних; мають свій власний інтерфейс і систему команд
- •Годинники й таймери
- •Блокуємий (синхронний) і не блокуємий (асинхронний) ввід-вивід
- •Структури даних для вводу-виводу в ядрі ос
- •Життєвий цикл запиту на ввід-вивід
- •Продуктивність вводу-виводу
- •Лекція 18. Мережі й мережеві структури. Класичні и сучасні мережеві комунікаційні протоколи План
- •Мережі Ethernet
- •Протокол tcp/ip
- •Функционирование Ethernet-мереж
- •Лекція 19: Безпека операційних систем і мереж. План
- •Лекція 20. Огляд архітектури й можливостей системи Linux: архітектура, ядро, поширення й ліцензування, принципи проектування, керування процесами План
- •Історія Linux
- •Ядро Linux
- •Сучасний стан Linux, дистрибутиви й ліцензування
- •Принципи проектування й компоненти системи Linux
- •Модулі ядра, що завантажують, Linux
- •Керування процесами в Linux
- •Планування завдань ядра й синхронізація в ядрі
- •Лекція 21. Огляд архітектури й можливостей системи Linux: керування пам'яттю, ресурсами, файлові системи, драйвери пристроїв, мережі, безпека План
- •Керування фізичною пам'яттю в Linux
- •Віртуальна пам'ять в Linux
- •Виконання й завантаження користувальницьких програм в Linux
- •Системи файлів Linux
- •Ввод й вивід в Linux
- •Взаємодія процесів в Linux
- •Структура мережі в Linux
- •Безпека в Linux
- •Розвиток і використання Linux
- •Лекція 22. Огляд архітектури й можливостей систем Windows 2000/xp/2003/Vista/2008/7 План
- •Система Windows 2000
- •Історія Windows
- •Принципи проектування Windows 2000 - розширюваність, переносимость, надійність, безпека, сумісність, продуктивність, підтримка інтернаціоналізації й локалізації.
- •Архітектура Windows 2000
- •Ядро Windows 2000
- •Обработка переривань у ядрі
- •Виконавча підсистема (executive) ос Windows 2000
- •Підсистеми оточення в Windows 2000
- •Лекція 23. Системні механізми Windows План
- •Система файлів Windows
- •Рограммный інтерфейс Windows
- •Програмний інтерфейс Windows: Керування процесами
- •Керування віртуальною й фізичною пам'яттю й робочими наборами в Windows
- •Лекція 24. Ос для мобільних пристроїв. Windows Mobile План
- •Особливості ос для мобільних пристроїв
- •Ринок ос для мобільних пристроїв
- •Перспективи ос для мобільних пристроїв
- •Лекція 25. Перспективи операційних систем і мереж План
- •Операційні системи інших великих фірм
- •Solaris - операційна система розробки фірми Oracle / Sun
- •Сучасні тенденції в розвитку ос
- •Нові ос сімейства Windows
- •Нові тенденції в розвитку ос
- •Графічні оболонки ос
- •Підтримка паралельних обчислень
- •Розвиток бездротових мереж
- •Перспективи розвитку ос
Алгоритм «в пиріжковій» (bakery algorithm)
Автор даного алгоритму - Л. Лампорт (L. Lamport). Розглянемо інший алгоритм, що вирішує проблему синхронізації по критичних секціях. Походження назви наступне: алгоритм як би відтворює стратегію автомата в (американської) булочній, де кожному клієнтові привласнюється його номер у черзі. По побудові, номер, що привласнюється процесу, буде гарантовано більше, ніж номер будь-якого іншого процесу в системі. Перш ніж увійти в критичну секцію, процес чекає, поки завершиться процес вибору номера для всіх процесів і поки в системі є хоча б один обраний процес, номер якого менше. По закінченні критичної секції процес обнуляє свій номер. Даний алгоритм також вирішує проблему синхронізації процесів по критичних секціях.
Синхронізація на основі загальних семафорів
Ми вже почали розглядати семафори Дейкстра як засіб синхронізації в оглядовій частині курсу. Тут ми розглянемо їх більш докладно в загальному виді. Загальний семафор (counting semaphore), по Е. Дейкстру, - це ціла змінна S, над якою визначені дві атомарних семафорних операції wait (S) і signal (S) з наступною семантикою:
wait (S):
while (S <= 0) do no-op;
S--;
signal (S):
S++;
Фактично, якщо початкове значення загального семафора дорівнює n (> 0), те це число задає кількість процесів, які можуть безперешкодно виконати над семафором операцію wait.
Синхронізація по критичних секціях за допомогою загального семафора здійснюється в такий спосіб:
/* загальні дані */
semaphore mutex = 1;
do {
wait (mutex);
критична секція
signal (mutex);
інша частина коду
} while (1)
Реалізація семафорів
Семафор, власне кажучи, є структурою із двох полів - цілого значення й покажчика на список процесів, що чекають:
typedef struct {
int value;
struct process * L;
} semaphore;
При реалізації операцій над семафором будемо припускати наявність у системі наступних найпростіших примітивів і використати їх:
block - затримує виконання процесу, що виконав цю операцію;
wakeup (P) - відновляє виконання припиненого процесу P.
Визначимо семафорні операції в такий спосіб:
wait (S):
S.value-і;
if (S.value < 0) {
додавання поточного процесу до S.L;
block;
}
signal (S):
S.value++;
if (S.value <= 0) {
видалення процесу P з S.L;
wakeup (P);
}
Семафори як загальний засіб синхронізації
Загальні й двійкові семафори
Є два види семафорів: загальний - ціла змінна з теоретично необмеженим значенням - і двійковий - ціла змінна, значеннями якої можуть бути тільки 0 або 1. Перевагою двійкового семафора є його можлива більше проста апаратна реалізація. Очевидно, що загальний семафор може бути реалізований за допомогою двійкового семафора.
Рішення класичних завдань синхронізації за допомогою семафорів
Завдання "обмежений буфер".Є три класичних завдання синхронізації процесів:
обмежений буфер (bounded buffer problem)
читачі - письменники (readers - writers problem)
філософи, що обідають (dining philosophers problem).
.
Рішення за допомогою семафорів завдання
Розглянемо реалізацію за допомогою семафорів завдання обмежений буфер: є процес-виробник і процес-споживач, взаємодіючі за допомогою циклічного буфера обмеженої довжини; виробник генерує елементи інформації й записує в буфер; споживач використовує інформаційні елементи з буфера й видаляє їх.
Семафор mutex використається "симетрично"; над ним виконується пара операцій: wait ... signal - семафорні дужки. Його роль - чисто взаємне виключення критичних секцій. Семафор empty сигналізує про вичерпання буфера. На початку він закритий, тому що елементів у буфері немає. Тому при закритому семафорі empty споживач змушений чекати. Відкриває семафор empty виробник, після того, як він записує в буфер черговий елемент. Семафор full сигналізує про переповнення буфера. На початку він дорівнює n - максимальному числу елементів у буфері. Виробник перед записом елемента в буфер виконує операцію wait (full),гарантуючи, що, якщо буфер переповнений, запису нового елемента в буфер не буде. Відкриває семафор full споживач, після того, як він звільнив черговий елемент буфера.