
- •Етапи розвитку еом. Типи і характеристики еом
- •Призначення еом. Структура пк.
- •Класифікація програмного забезпечення. Призначення ос. Основні сучасні ос.
- •Покоління ос. Класифікація ос.
- •Загальна характеристика ms dos. Структура ms dos.
- •Ms dos. Функціональне призначення основних складових.
- •Bios. Програма початкового завантаження. Переривання
- •Модуль розширення dos. Драйвери пристроїв. Базовий модуль dos
- •Інтерпретатор команд, утиліти, інструментальні засоби ms dos. Структура диска
- •Адресний простір пк в ос ms dos. Типи пам’яті.
- •Структура носіїв інформації в ms dos. Конфігурація і форматування.
- •Файлова система ms dos. Основні команди ms dos.
- •Файлова система Windows 98. Fat 32. Файлова система ntfs
- •Команди конфігурування ms dos в файлі Confyg.Sys
- •Команди конфігурування ms dos в файлі Autoexec.Sys
- •Поняття процесу. Стани процесів, списки станів процесів
- •Перехід процесів із стану в стан. Діаграма переходу процесів
- •Блок керування процесом. Функції ос при роботі з процесами.
- •Створення, призупинення, відновлення, зміна пріоритету процесу. Діаграма стану процесів з операціями призупинки та відновлення
- •Функції ядра ос. Рівні ієрархії ос
- •Асинхронні паралельні процеси. Взаємовиключення, критичні області
- •Примітиви взаємовиключення. Алгоритм Деккера.
- •Взаємовиключення для n-процесів. Семафори, операції над ними
- •Механізм реалізації взаємовиключення з використанням семафорів. Застосування семафорів
- •Задача „голодного філософа”. Алгоритм розв'язку задачі „голодного філософа”
- •Поняття процесу, ресурсу в ос Unix. Типи ресурсів в ос. Управління ресурсами.
- •О сновні концепції побудови ос Unix
- •Склад ос Unix.
- •Ядро ос Unix. Принципи керування процесами.
- •Керування процесами в Unix. Події, сигнали, програмні канали.
- •Керування пам’яттю в ос Unix.
- •Файлова система ос Unix.
- •Структура файлової системи
- •Будова файлової системи unix
- •Файлова система ос Unix. Індексні дескриптори файлів в ос Unix.
- •Організація введення/виведення в ос Unix.
- •Робота користувача в ос Unix. Командна мова с-shell.
- •Порядок роботи
- •Робота користувача в ос Unix. Основні утиліти
- •Порядок роботи
- •Характеристика oc Linux. Інструментальні засоби.
- •Характеристика ос Windows, її основні компоненти
- •Структура ос Windows 98. Рівні захисту роботи процесора.
Примітиви взаємовиключення. Алгоритм Деккера.
Алгоритм Декера — перший відомий правильний розв'язок задачі взаємного виключення в паралельному програмуванні. Він дозволяє двом процесам спільно використовувати одновикористовний ресурс без конфліктів, використовуючи тільки спільну пам'ять для зв'язку.
Якщо два процеси намагаються увійти до критичної секції одночасно, алгоритм дозволить увійти лише одному процесу, виходячи з того чия зараз черга. Якщо один з процесів знаходиться в критичній секції, другий буде в стані очікування доки перший процес не залишить критичну секцію. Це робиться шляхом використання двох прапорців, flag[0] і flag[1], які показують намір увійти до критичної секції, та змінну turn, яка показує який з процесів зараз пріоритетніший.
Процеси показують намір увійти до критичної секції, що перевіряється у зовнішньому циклі. Якщо інший процес не позначив свій намір, до критичної секції можна війти, попри те чия зараз черга. Взаємне виключення буде все одно гарантоване, тому що жоден процес не може увійти до критичної секції перед встановленням свого прапорця (тобто щонайменше один процес увійде в цикл while). Також це гарантує рух уперед через відсутність очікування процесу, який скасував намір увійти до критичної секції. Інакше, якщо змінна другого була встановлена, відбувається вхід до циклу while і змінна turn буде вказувати, кому дозволено увійти до критичної секції. Процес, чия черга не настала, полишає намір увійти до критичної секції доти, доки не настане його черга (внутрішній цикл while). Процеси, чия черга надійшла, виходять з циклу while і входять до своєї критичної секції.
Алгоритм Декера гарантує взаємне виключення, неможливість виникнення взаємних блокувань або ресурсного голоду. Якщо алгоритм був би змінений таким чином, щоб при виконанні дій всередині зовнішнього циклу while не перевірялась умова на рівність нулю змінної turn, тоді виникла б можливість ресурсного голоду. Таким чином всі кроки алгоритму необхідні.
Взаємовиключення для n-процесів. Семафори, операції над ними
Семафор — це універсальний механізм для організації взаємодії процесів. Розв'язує задачі взаємного виключення та синхронізації потоків. Семафори використовуються для контролю доступу до спільного ресурсу, або для синхронізації процесів.
Операції, які можна виконати над семафором:
Ініціалізація - встановлення початкового значення семафору.
Операція P(S): Вона перевіряє стан семафору. Якщо семафор не рівний нулю, то виконується операція S:=S-1. Інакше, процес блокується, поки S=0.
Операція V(S):Ця операція збільшує значення семафору на 1.Тобто виконується операція S:=S+1.
В залежності від значень, які може приймати семафор він поділяється на:
Двійковий : здатний приймати значення 0 та 1.
Трійковий : здатний приймати значення 0, 1 та 2. і т. д.
З допомогою семафорів можна розв'язати задачі синхронізації потоків та використання спільного ресурсу багатьма потоками.Задача синхронізації: Постановка задачі... Є два потоки, що виконуються паралельно. Перший потік(А), виконується і в певному місці коду(критична ділянка коду) має відправити повідомлення другому потоку(В). Потік В, виконується і дійшовши до певної частини коду(критична ділянка коду), блокується, поки не отримає повідомлення від потоку А. Невідомо, який з потоків першим дійде до критичної частини коду. Потрібно їх синхронізувати.
Р
ішення
задачі: Для розв'язання цієї задачі
достатньо використати двійковий
семафор(S=0,1). На початку обов'язково
семафор S встановити в нуль: S:=0 !!!
Оскільки потоки виконуються паралельно, тобто водночас. То заздалегідь невідомо, який з потоків дійде до критичної ділянки коду першим. Існує два випадки:
Нехай першим дійшов потік А. Операція V(S) збільшить семафор на 1 і потік А продовжить виконуватися. Тоді, коли до критичної ділянки дійде потік В, він продовжить своє виконання. При цьому операція P(S) зменшить семафор на 1.
Нехай першим дійде потік В. Перевіривши семафор, потік В блокується, поки не буде повідомлення(сигналу) від потоку А. Тобто, поки семафор рівний нулю. Коли потік А відправить сигнал, тобто, збільшить семафор на 1, тоді продовжить виконуватися потік В. При цьому зменшивши семафор на 1.
Прикладом такої синхронізації може бути процес: Нехай потоку В для виконання потрібен ресурс, який формує потік А. Тому потоку В доводиться чекати, поки потік А не сформує цей ресурс.