1   2   3   4   5   6   7   8   9   10
Ім'я файлу: 1-126.pdf
Розширення: pdf
Розмір: 1940кб.
Дата: 12.12.2021
скачати
37. Основні операції над процесами. Роль призупинення та відновлення процесу.
Підсистема керування процесами повинна виконувати наступні операції над ними:
- створення;
- знищення;
- відновлення;
- зміна пріоритету;
- блокування;
- розблокування;
- запуск (або вибір).
Створення процесу. При створенні процесу передбачаються наступні дії:
- присвоєння процесові імені;
- включення цього імені в список імен процесів, що відомі системі;
- визначення початкового пріоритету процесу;
- формування блоку керування процесом (PCB);
- виділення процесові початкових ресурсів.
Призупинення процесу використовується для короткочасного вивільнення певних ресурсів в періоди пікового навантаження. У випадку довготривалого призупинення процесу його ресурси можуть бути вивільнені. Рішення про вивільнення певних ресурсів у значній мірі залежить від природи цих ресурсів. Наприклад, основна пам’ять звільняється негайно; зовнішній запам’ятовуючий пристрій у випадку короткочасного призупинення процесу може бути збережений за ним.

38. Поняття „переривання” та їх призначення.
В обчислювальній техніці під перериванням розуміють подію, при якій міняється нормальна послідовність виконання команд, що визначена програмою. Переривання, є механізмом, що дозволяє координувати паралельне функціонування окремих пристроїв комп’ютерної системи та реагувати на особливі стани, що виникають при роботі процесора. Тобто, переривання, це примусова передача керування від програми, що виконується, до ОС, а через неї до відповідної програми обробки переривань. Ця передача відбувається при виникненні певної події.

39. Основні групи „переривань” та події, що їх викликають.
1. Зовнішні (або асинхронні). Викликаються асинхронними подіями, які відбуваються поза процесом, що виконується і відповідно переривається:
- переривання від таймера;
- переривання від зовнішніх пристроїв;
- переривання при збоях у живлення;
- переривання з пульта оператора обчислювальної системи;
- переривання від іншого процесора або обчислювальної системи.
2. Внутрішні. Викликаються подіями, що пов’язані з роботою процесу, що виконується і є синхронними з його операціями. Такі переривання виникають:
- при неправильній адресації (в адресній частині команди вказано заборонену або неіснуючу адресу, звертання до відсутнього сегменту або сторінки віртуальної пам’яті);
- при наявності в полі коду операції, неіснуючої команди;
- при діленні на нуль;
- при переповненні, або пропаданні порядку в числах з плаваючою крапкою;
- при виявленні порушення паритету парності, а також помилок в роботі різних пристроїв апаратури комп’ютера засобами контролю;
- переривання за звертаннями до супервізора. У деяких комп’ютерах існують привілейовані команди, які може виконувати тільки ОС, а не програми користувачів.
Відповідно в апаратурі передбачено різні режими роботи. При спробі виконати таку команду заборонену в даному режимі, відбувається внутрішнє переривання і керування передається супервізору ОС. 3. Програмні переривання. Викликаються відповідними командами переривання. За такими командами процесор виконує практично такі самі дії, що й при внутрішній перериваннях

40. Обробка „переривань” та механізм перемикання контексту „переривань”.
Перемикання контексту. Для обробки кожного з видів переривань в складі ОС передбачені програми, що називаються обробниками переривань (IH – Interrupt
Handler). Коли відбувається переривання, ОС запам’ятовує стан перерваних процесів та передає керування відповідним обробникам переривань. Ця процедура називається перемиканням контексту. При її реалізації використовуються слова стану програми
(Program Status Word, PSW), які керують напрямком виконання команд і містять різну
інформацію про відносно стану процесу.
41.Асинхронні паралельні процеси
Процеси називаються паралельними, якщо вини існують (працюють) одночасно.
Зменшення габаритів та вартості апаратури комп’ютерів сприяють подальшому розвитку багато процесорних систем і, як кінцевий результат, реалізацію максимального паралелізму на всіх рівнях. Якщо певні операції можна виконувати паралельно, то комп’ютери наступних генерацій будуть фізично виконувати їх паралельно. Паралельні процеси можуть бути повністю незалежними або взаємодіючими. Останні можуть бути конкуруючими, або такими, що сумісно виконують спільну роботу. Як правило, найчастіше маємо справу з паралельними процесами, яким необхідно час від часу синхронізуватися та взаємодіяти. Усі подібні паралельні процеси називаються асинхронними.

42.Взаємо-виключення.
Вимоги до розв’язання задачі взаємо-виключення. Спосіб взаємодії між процесами, при якому підчас звертання одного із процесів до даних які спільно використовуються
(розділяються), усім іншим процесам звертання до цих даних заборонено, називається взаємо-виключенням. Якщо процес звертається до даних, що розділяються, то цей процес знаходиться у своїй критичній ділянці коду (або в критичній секції). Для всіх
інших процесів, що розділяють дані, можливість входу в критичні ділянки повинна виключаться. Процес повинен проходити свою критичну ділянку якнайшвидше. Він не повинен блокуватися у критичній ділянці. Критичні ділянки треба програмувати найбільш ретельно, щоби виключити, наприклад, зациклювання. . Вимоги до розв’язання задачі взаємо-виключення: 1. Задача повинна розв’язуватися чисто програмним способом на машині без спеціальних команд взаємо-виключення. 2. Не повинно бути ніяких припущень щодо відносних швидкостей виконання асинхронних паралельних процесів. 3. Процеси, що знаходяться поза своїми критичними секціями, не можуть заважати іншим процесам заходити у свої власні критичні ділянки. 4. Не повинно бути безмежного відкладання часу входу процесів у свої критичні ділянки.
43. Семафори, призначення та застосування.
Всі найважливіші поніття які мають відношення до взаємовиключення були об’єднані в концепції семафорів. Семафор – це захищена змінна значення якої можна читати та міняти тільки за допомогою операцій Р, V також операцій ініціалізації двійкові семафори можуть приймати значення 0 та 1. семафори з рахуванням можуть приймати невід’ємні цілі значення. Операція Р-типу семафори S:
Якщо (один або більше процесів очікують на S), то (дозволити одному з тих процесів продовжити роботу) інакше Si=Si+1
Узагальнений зміст примітиву Р(S) полягає у перевірці біжучого значення семафора S
і якщо він не менше 0 то виконується перехід до наступної за даним примітивом операції, процес змінюється на деякий час з виконання і переходить в стан пасивного очікування. V(S) пов’язана із збільшенням значення семафора на 1 і переводом одного або декілька процесів в стан готовності.

44 Монітор, призначення та застосування.
Монітором називають набір функцій, які використовують один загальний м'ютекс і нуль або більше умовних змінних для керування паралельним доступом до спільно використовуваних даних відповідно до певних правил. Ось правила, яких слід дотримуватися у разі реалізації монітора. • Під час входу в кожну функцію монітора потрібно займати м'ютекс, під час ви ходу — звільняти. Отже, у кожний момент часу тільки один потік може перебу вати всередині монітора (під яким розуміють сукупність усіх його функцій). • Під час роботи з умовною змінною (і під час очікування, і під час сигналізації) необхідно завжди вказувати відповідний м'ютекс. Не можна працювати з умов ними змінними, якщо м'ютекс незайнятий. • Під час перевірки на виконання умови очікування потрібно використати цикл, а не умовний оператор. Ідея монітора була вперше запропонована в 1974 році відомим ученим у галу- зі комп'ютерних наук Ч. А. Хоаром. Монітор часто розуміють як високорівневу конструкцію мови програмування (як приклад такої мови звичайно наводять Java), а саме як набір функцій або методів класу, всередині яких автоматично збері- гається неявний загальний м'ютекс разом із операціями очікування і сигналізації. Насправді, як ми бачимо, концепція монітора може ґрунтуватися на базових при мітивах — м'ютексах і умовних змінних — і не повинна бути обмежена якоюсь однією мовою
45. Кільцевий буфер, призначення та застосування.
Кільцевий буфер – це структура даних для буферизації обміну інформацією між процесами. Виконавцю іноді потрібно передати дані в той час як споживач ще неготовий їх прийняти. Він застосовується в тих випадках, коли процес-виконавець повинен передати дані процесу-споживачу. Споживач іноді намагається отримати дані які виконавець ще не передав. Тому необхідно мати відповідні засоби синхронізації процесу-виконавця та процесу-споживача. Дуже часто в системі використовуються кільцеві буфери, наприклад для буферизації даних на друк, коли буфер заповнюється до кінця запис починається з перших комірок, тому він називається кільцевим.
Процес-виробник може випереджати процес-споживача, тоді з часом він заповнить увесь буфер. У такому випадку процесу-виконавцю необхідно зачекати доки процес- поживач звільнить хоча б один або декілька елементів масиву. Для очікування можна використати монітор.

46. Конвеєр, призначення та застосування
Конвеєр( програмний канал ) (pipe – програмний канал, транспортер) є засобом, за допомогою якого можна виконувати обмін даними між процесами. Тобто конвеєр це потік даних між двома або більше процесами. Задачі (процеси), що передають/приймають дані в конвеєр, діють так ніби обмін інформацією здійснюється через файл. Конвеєри це не файли на диску, а буферна пам’ять, яка працює за принципом FIFO, тобто за принципом звичайної черги. Конвеєр має певний розмір і працює як циклічний кільцевий) буфер. Він складається з ділянки пам’яті та двох покажчиків head – вказує на перший елемент даних, tail – на останній.
47. Черги повідомлень, призначення та застосування
Черги повідомлень - це складніший, в порівнянні з каналами, метод зв’язку між процесами. За допомогою черг можна організувати такий обмін, коли декілька процесів поставляють повідомлення деякій задачі-приймачу. При цьому тільки процес-приймач може читати та вилучати повідомлення з черги, а процеси-клієнти мають право тільки розміщати в чергу свої повідомлення. Таким чином черга працює тільки в одному напрямку. Якщо необхідний двосторонній зв’язок, то потрібно створити дві черги.
48. Тупики, умови подолання тупикової ситуації
Тупикова ситуація (deadlock) – це стан, коли процес очікує на подію, яка ніколи не відбудеться. Системна тупикова ситуація, чи „зависання” системи – це ситуація, коли один чи кілька процесів знаходяться у стані тупику (клінчу). Одна із основних функцій ОС – розподілення ресурсів. Коли ресурси розподіляються поміж багатьма користувачами, кожному з яких надається право виключного керування виділеними йому ресурсами, можливе виникнення тупиків, які не дають процесам деяких користувачів хоч коли-небудь завершитися. Для уникнення тупикових сутацій, програми мають зазделегідь надавати операційній системі інформацію про ресурси, що будуть використані процесом під час роботи. Маючи цю інформацію операційна система може вирішувати на задоволення яких запитів процес може зачекати. Аби вирішити, чи повинен процес чекати, операційна система має брати до уваги доступні ресурси, ресурси виділені процесам та майбутні запити, які можуть зробити процеси.

49. Приклад тупикової ситуації
Припустимо, що декілька процесів конкурують за володіння деяким скінченним числом ресурсів. Якщо запрошуваний процесом ресурс недоступний, процес переходить в стан чекання. У випадку якщо необхідний ресурс утримується іншим процесом, що чекає, то перший процес не зможе змінити свій стан. Така ситуація називається тупиком. Говорять, що в мультипрограмній системі процес знаходиться в стані тупика, дедлока (deadlock) або клінчу, якщо він чекає події, яка ніколи не відбудеться. Системна тупикова ситуація або зависання системи є наслідком того, що один або більше процесів знаходяться в стані тупика. Розглянемо приклад.
Припустимо, що два процеси здійснюють вивід (output) із файлу на принтер. Один з них встигнув монополізувати файл і претендує на принтер, а інший навпаки. Після цього обидва процеси виявляються заблокованими в очікуванні другого ресурсу.
Тупик також може мати місце в ситуаціях, що не вимагають виділених ресурсів.
Наприклад, в системах управління базами даних процеси можуть локалізувати записи, щоб уникнути гонок. В цьому випадку може вийти так, що один з процесів заблокував записи, потрібні іншому процесу і навпаки. Тупик може мати місце, як на апаратних, так і на програмних ресурсах.

50.Ієрархічна структура пам’яті обчислювальних систем.
У більшості сучасних обчислювальних системах розглядається наступна ієрархія пам'яті:
1. Регістри процесора, організовані в регістровий файл — найбільш швидкий доступ
(близько 1 такту), але розміром лише в декілька сотень або, рідко, тисяч байт.
2. Кеш процесора 1го рівня (L1) — час доступу порядку декількох тактів, розміром в десятки кілобайт.
3. Кеш процесора 2го рівня (L2) — більший час доступу (від 2 до 10 разів повільніше
L1), близько половини мегабайта або більше.
4. Кеш процесора третього рівня (L3) — час доступу близько сотні тактів, розміром в декілька мегабайт (у масових процесорах використовується з недавнього часу).
5. ОЗП системи — час доступу від сотень до, можливо, тисячі тактів, але величезні розміри в кілька гігабайт, аж до десятків. Час доступу до ОЗУ може змінюватись для різних його частин у випадку комплексів класу NUMA (з неоднорідним доступом в пам'ять).
6. Дискове сховище — багато мільйонів тактів, якщо дані не були закешировані або забуферизовані заздалегідь, розміри до декількох терабайт.
7. Третинна пам'ять — затримки до декількох секунд або хвилин, але практично необмежені обсяги (стрічкові бібліотеки).
51. Граф станів процесів із застосуванням квантування часу.
Існує багато різних алгоритмів планування процесів, які по різному розв‘язують ці три задачі. Найчастіше зустрічаються такі дві групи алгоритмів: - побудовані на принципі квантування; - побудовані на принципі пріоритетів. В першому випадку зміна активного процесу відбувається, якщо: - процес закінчився і покинув систему; - процес перейшов в стан Очікування; - закінчився квант процесорного часу, відведений даному процесові. Процес, для якого закінчився його квант, переводиться в стан
Готовність і очікує, коли йому буде надано новий квант процесорного часу, а на виконання у відповідності з певним правилом вибирається новий процес з черги готових. Жодний процес не захоплює процесор надовго, тому квантування широко використовується в системах розподілу часу.

52. Граф станів процесів із застосуванням відносних пріоритетів.
Пріоритет — це число, яке характеризує ступінь привілейованості процесу при використанні ресурсів комп‘ютеру, зокрема, процесорного часу. Чим вище пріоритет, тим вище привілеї, тим менше часу він буде проводити в чергах.
Є алгоритми які використовують: - відносні пріоритети; - абсолютні пріоритети. Але вибір процесу на виконання з черги готових виконується однаково: вибирається процес, що має найвищий пріоритет. Інакше розв‘язується проблема визначення моменту зміни активного процесу. У системах з відносними пріоритетами активний процес виконується доти, доки він сам не покине процесор, виконавши перехід в стан
Очікування (або ж виникне помилка, або процес завершиться).
53. Граф станів процесів із застосуванням абсолютних пріоритетів.
Пріоритет — це число, яке характеризує ступінь привілейованості процесу при використанні ресурсів комп‘ютеру, зокрема, процесорного часу. Чим вище пріоритет, тим вище привілеї, тим менше часу він буде проводити в чергах.
Є алгоритми які використовують: - відносні пріоритети; - абсолютні пріоритети. Але вибір процесу на виконання з черги готових виконується однаково: вибирається процес, що має найвищий пріоритет. Інакше розв‘язується проблема визначення моменту зміни активного процесу.
У системах з абсолютними пріоритетами виконання активного процесу переривається ще й при умові: якщо в черзі готових процесів з‘явився процес, пріоритет якого вище пріоритету активного процесу. В цьому випадку перерваний процес переходить в стан готовності.

54. Витісняючі та невитісняючі алгоритми планування процесів.
Існує два основні типи процедур планування процесів — витісняючі (preemptive) та невитісняючі (non-preemptive — cooperative). Non-preemptive multitasking — невитісняюча багатозадачність — це спосіб планування процесів, при якому активний процес виконується до того часу, доки він сам, за власною ініціативою, не віддасть керування планувальнику ОС для того, щоби той вибрав з черги інший, готовий до виконання процес. Preemptive multitasking — витісняючи багатозадачність — це такий спосіб, при якому рішення про переключання процесора з виконання одного процесу на виконання іншого процесу приймається планувальником ОС, а не самою активною задачею. Пріоритети задач можуть використовуватись або не використовуватись, як при витісняючих так і невитісняючих способах планування
Основна відмінність між preemptive та non-preemptive — це ступінь централізації механізму планування задач. У першому випадку механізм планування задач повністю зосереджено в ОС і програміст пише прикладну програму, не піклуючись про те, що вона буде виконуватись паралельно з іншими задачами. У цьому випадку ОС виконує такі функції: 1. Визначає час, коли знімається з виконання активна задача. 2.
Запам‘ятовує її контекст. 3. Вибирає з черги готових задач наступну. 4. Запускає вибрану задачу на виконання, завантажуючи її контекст. У другому випадку механізм планування розподілено між ОС і прикладними програмами. Прикладна програма, отримавши керування від ОС сама визначає момент завершення своєї чергової ітерації
і передає керування ОС за допомогою системного виклику. ОС формує черги задач і вибирає у відповідності з деяким алгоритмом (наприклад, із врахуванням пріоритетів) наступну задачу на виконання. Такий механізм досить складний як для користувачів, так і для розробників. Програміст повинен забезпечити „дружнє‖ відношення своєї програми до інших, що виконуються одночасно. Тобто досить часто віддаючи їм керування. Але такий підхід дає можливість розробнику прикладних програм самому проектувати алгоритм планування, який найбільш підходить для даного фіксованого набору задач. Також суттєва перевага — більш висока швидкість переключення з задачі на задачу.


1   2   3   4   5   6   7   8   9   10

скачати

© Усі права захищені
написати до нас