- •Срс 1. Класифікація операційних систем. Основні принципи побудови операційних систем Класифікація операційних систем
- •1. По призначенню ос діляться на:
- •2. По режиму обробки даних розрізняють:
- •3. За засобом взаємодії з обчислювальною системою ос діляться на:
- •4. За основним архітектурним принципом ос діляться на:
- •Основні принципи побудови операційних систем
- •1. Принцип модульності
- •2. Принцип функціональної вибірковості
- •3. Принцип генерованості ос
- •4.Принцип функціональної надлишковості
- •5. Принцип віртуалізації
- •Срс 2. Базові дисципліни планування psjn, hprn, srr, mlfb
- •Срс 3. Фіксовані розділи пам'яті
- •Срс 4: Сегментно-сторінкова модель пам'яті. Плоска модель пам'яті Сегментно-сторінкова модель
- •Плоска модель пам'яті
- •Срс 5: Класична задача розподілу ресурсів, що носить назву "Проблеми філософів, що обідають" Філософи, що обідають
- •Срс 6: Нескінченне відкладання Нескінченне відкладання
- •Срс 7: Таблиця розташування файлів. Структура завантажувального запису dos
- •Структура завантажувального запису dos
- •Срс 8: Файлова система ntfs Файлова система ntfs (New Technology File System)
- •Основні можливості файлової системи ntfs
- •Срс 10: Захист інформації в комп’ютерних системах засобами ос. Захист файлів в операційних системах класу Unix Захист файлів
- •Срс 11: Модель віртуальних комунікаційних портів. Програмні канали. Черги повідомлень Загальні області пам'яті
- •Семафори
- •Програмні канали
- •Черги повідомлень
- •Срс 12: Взаємодія з користувачем в ос. Інтерфейс користувача. Елементи інтерфейсу. Віджети Взаємодія з користувачем в ос
- •Інтерфейс користувача.
- •Елементи інтерфейсу
- •Контрольні запитання:
- •Срс 13: Багатопроцесорні розподілені системи Функціонально розподілені системи
- •Паралельні комп’ютери
- •Продуктивність паралельних комп’ютерів
- •Системи з розподіленою пам’яттю
- •Класичні матричні системи
- •Обчислювальні кластери
- •Срс 14: Microsoft Windows для планшетів
- •Срс 15: Історія появи комп'ютерів Macintosh і їх застосування
- •Особливості апаратного забезпечення комп'ютерів Macintosh
- •Срс 16: Організація операційних систем на базі Linux
- •Срс 17: Хмарні операційні системи
- •Що таке хмарні операційні системи?
- •Найпопулярніші на сьогоднішній день WebOs:
- •Висновки
- •Література
- •Навчальне видання Тетяна Іванівна Трояновська Методичні вказівки до виконання самостійної роботи студентів з дисципліни “Комп’ютерні системи та мережі”
Семафори
Семафор — це об'єкт ядра ОС, який можна розглядати як лічильник, що містить ціле число в діапазоні від 0 до заданого при його створенні максимального значення. При досягненні семафором значення 0 він переходить у несигнальний стан, при будь-яких інших значеннях лічильника – його стан сигнальний.
Традиційне позначення семафора: S. Операції, які можна виконати над семафором:
Ініціалізація - встановлення початкового значення семафору.
Операція P(S): Вона перевіряє стан семафору. Якщо семафор не рівний нулю, то виконується операція S:=S-1. Інакше, процес блокується, поки S=0.
Операція V(S): Ця операція збільшує значення семафору на 1. Тобто виконується операція S:=S+1.
Типи семафорів
В залежності від значень, які може приймати семафор він поділяється на:
Двійковий : здатний приймати значення 0 та 1.
Трійковий : здатний приймати значення 0, 1 та 2.
і т. д.
Задачі, що розв'язуються з допомогою семафорів
З допомогою семафорів можна розв'язати задачі синхронізації потоків та використання спільного ресурсу багатьма потоками.
Задача синхронізації
Постановка задачі. Є два потоки, що виконуються паралельно. Перший потік (назвемо його А), виконується і в певному місці коду (критична ділянка коду) має відправити повідомлення другому потоку (нехай буде В). Потік В, виконується і дійшовши до певної частини коду(критична ділянка коду), блокується, поки не отримає повідомлення від потоку А. Невідомо, який з потоків першим дійде до критичної частини коду. Потрібно їх синхронізувати (рисунок 11.1).
Рисунок 11.1 – Синхронізація потоків
Рішення задачі: Для розв'язання цієї задачі достатньо використати двійковий семафор(S=0,1). На початку обов'язково семафор S встановити в нуль: S:=0.
Оскільки потоки виконуються паралельно, тобто водночас. То заздалегідь невідомо, який з потоків дійде до критичної ділянки коду першим. Існує два випадки:
Нехай першим дійшов потік А. Операція V(S) збільшить семафор на 1 і потік А продовжить виконуватися. Тоді, коли до критичної ділянки дійде потік В, він продовжить своє виконання. При цьому операція P(S) зменшить семафор на 1.
Нехай першим дійде потік В. Перевіривши семафор, він блокується, поки не буде повідомлення(сигналу) від потоку А. Тобто, поки семафор дорівнює нулю. Коли потік А відправить сигнал, тобто, збільшить семафор на 1, тоді продовжить виконуватися потік В, зменшивши при цьому семафор на 1.
Прикладом такої синхронізації може бути процес: Нехай потоку В для виконання потрібен ресурс, який формує потік А. Тому потоку В доводиться чекати, поки потік А не сформує цей ресурс.
ОС може надавати семафори в розпорядження користувача, як засіб для самостійного вирішення завдань, що вимагають взаємного виключення і/або синхронізації.
При роботі з іменованим семафором один з процесів повинен створити системний семафор за допомогою виклику createSemapore, інші процеси дістають доступ до створеного системного семафора за допомогою виклику openSemaphore. Серед вхідних параметрів цих викликів є зовнішнє ім'я семафора, виклики повертають маніпулятор для семафора, використовуваний для його ідентифікації при подальшій роботі з ним. При закінченні роботи з системним семафором процес повинен виконати виклик closeSemaphore. Семафор знищується, коли він закритий у всіх процесах, що його використали.
Виконання операцій над семафором може забезпечуватися системним викликом вигляду:
flag = semaphoreOp(semaphorId, opCode, waitOption);
де semaphorId - маніпулятор семафора, opCode - код операції, waitOption - опція очікування, flag - значення, що повертається, ознака успішного виконання операції або код помилки.
Крім основних для семафорів P- і V-операций, конкретні семафорні API ОС можуть включати розширені і сервісні функції, такі як безумовна установка семафора, установка семафора і очікування його очищення, очікування очищення семафора. При виконанні системних викликів - аналогів P-операції, як правило, є можливість задати опцію очікування - блокувати процес, якщо виконання P-операції неможливе, або завершити системний виклик з ознакою помилки.
У багато сучасних ОС разом з семафорами "в чистому виді" API представляє ті ж семафори і у вигляді "прикладних" об'єктів - об'єктів взаємного виключення і подій. Хоча зміст цих об'єктів одне і те ж - семафор, ОС відносно цих об'єктів представляє для прикладних процесів специфічну семантику API, відповідну завданням взаємного виключення і синхронізації.
Всі сучасні ОС надають прикладному процесу можливість працювати з "масивами семафорів", тобто, задавати список семафорів і виконувати операцію над всім списком, наприклад, чекати очищення будь-якого семафора в заданому списку. Найбільш розвинений цей засіб в ОС Unix, де є можливість виконувати за один системний виклик semop (аналог нашого semaphoreOp) відразу декількох різних операцій над декількома семафорами, причому весь список операцій виконується, як одна транзакція. Неіменовані семафори зазвичай використовуються як засіб взаємного виключення і синхронізації роботи ниток одного процесу.
