Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2024
Тип роботи:
Відповіді до екзаменаційних білетів
Предмет:
Системне програмне забезпечення

Частина тексту файла (без зображень, графіків і формул):

«Системне програмне забезпечення» Основні складові системного програмного забезпечення.  SHAPE \* MERGEFORMAT СПЗ Типова структура системного програмного забезпечення (СПЗ) Системи програмування Утиліти Керуючі програми ОС Мови програмування Обробляючі програми Підсистема керування процесами Підсистема керування даними Підсистема керування ресурсами Файлова система Сервісні програми Проблемні програми Транслятори  Основні функції операційної системи. Основними функціями ОС є: 1. Сприймання від користувача (або від оператора системи) завдань або команд у вигляді директив (або команд) оператора, а також у вигляді вказівок від маніпуляторів (наприклад, миші) та їх обробка. 2. Завантаження, запуск, призупинення, зупинка програм. Керування файловими системами та системами управління базами даних. 3. Забезпечення режиму мультипрограмування, тобто виконання двох та більше програм на одному процесорі. 4. Забезпечення функцій з організації та керування усіма операціями вводу/виводу. 5. Забезпечення виконання обмежень на час відповіді в режимі реального часу (для ОС відповідного типу). 6. Розподіл пам’яті (як основної, так і зовнішньої), та організація віртуальної пам’яті. 7. Планування та диспетчеризація задач у відповідності із заданими стратегією та дисципліною обслуговування. 8. Організація механізмів обміну повідомленнями і даними між програмами, що виконуються, а також захист одної програми від впливу інших. 9. Забезпечення роботи систем програмування. Таким чином, ОС виконує функції керування обчислювальними процесами в комп’ютерній системі, розподіляє ресурси комп’ютерної системи між різними обчислювальними процесами і створює програмне середовище, в якому виконуються прикладні програми користувачів. Таке середовище називається операційним середовищем або операційним оточенням. Охарактеризуйте основні типи операційних систем. 1. Класифікація, за кількістю користувачів, які одночасно обслуговуються ОС: Одно програмна — забезпечує роботу одної задачі одного користувача. Мульти (багато) програмна — дозволяє одночасно виконувати декілька програм одного користувача. Багатокористувацька — багато задач багатьох користувачів, поділяється на мульти-процесорну та мульти-машинну (мережева ОС). Основна мета мультипрограмування — підвищення продуктивності обчислювальної системи за рахунок розподілення її ресурсів між декількома завданнями. 2. Класифікація за типами доступу, який надається інтерфейсом користувача. Сиситеми пакетної обробки – обробляють потік завдань. Все керування з читання та виконання завданнями бере на себе ОС. Зараз втратили актуальність. Діалоговий або інтерактивний доступ – забезпечується для деякої кількості користувачів одночасно системами розподілу часу. ОС виконує директиви користувачів в темпі надходження та намагається дати відповідь на кожну команду користувача за найкоротший час. Для обробки зовнішніх сигналів, які надходять, наприклад, з різних давачів, і швидкої відповіді на них використовуються ОС реального часу. Такі ОС працюють на комп’ютерах, для яких час є критичним параметром. Вони повинні забезпечувати гарантований час реакції на зовнішні події. Досить часто всі ознаки класифікації реалізуються в одній системі. ? На рівні функцій та послуг, що надаються операційцним оточенням, є багато спільного між ОС, які на рівні інтерфейсу користувача зовсім різні (і навпаки). Операційне оточення може включати декілька інтерфейсів: користувацькі і програмні: Linux – має інтерфейс командного рядка (shell); інтерфейс Midnight Commander (типу NC); графічні інтерфейси – Х-Window з різними менеджерами вікон (KDE, Gnome) Програмні інтерфейси – в Linux програми можуть звертатись як до ОС за відповідними сервісами і функціями, так і до графічної підсистеми (якщо вона використовується). З точки зору процесора комп’ютера, як і всього комп’ютера в цілому, двійкова програма, створена для роботи в середовищі Linux, використовує ті самі команди і формати даних, що і програма, створена для роботи в середовищі Windows NT. Але в першому випадку ми маємо звертання до одного операційного середовища, а в другому випадку – а в другому випадку – до другого. Програма, створена під Windows безпосередньо, не буде виконуватись в Linux. Але якщо в ОС Linux створити повноцінне операційне середовище Windows, то Windows-програма може бути виконана. Таким чином операційне середовище – це системне програмне оточення, в якому можуть виконуватись програми, створені за правилами роботи цього середовища. Поняття ядра операційної системи. Усі операції, що пов’язані з процесами, виконуються під керуванням ядра. Ядро – невелика частина ОС, але вона відноситься до найбільш інтенсивно використовуваних компонентів ОС. З цієї причини ядро, зазвичай, резидентно розміщено в оперативній пам’яті, в той час як інші частини ОС переміщаються у зовнішню пам’ять та назад за необхідністю. Одною з найважливіших операцій ядра є обробка переривань. У великих, багато абонентських системах у процесор надходить постійний потік переривань. Коли ядро обробляє біжуче переривання, воно заблоковує інші переривання і дозволяє їх знову тільки після завершення обробки біжучого переривання. При постійному потоці переривань може скластися, ситуація, що ядро блокуватиме переривання протягом тривалого часу, тоді система не буде мати можливості ефективно реагувати на переривання. Тому, ядро розробляється таким чином, щоб воно виконувало тільки мінімально можливу попередню обробку кожного переривання, а потім передавало це переривання на подальшу обробку відповідному системному процесові. Після передачі обробки переривання іншому процесові, ядро може дозволити наступні переривання. Таким чином, середня швидкість реакції системи суттєво зростає. Основні функції ядра: Ядро, як правило, містить програми для реалізації наступних функцій: - обробка переривань; - створення та знищення процесів; - перемикання процесів зі стану в стан; - диспетчеризація; - припинення та активізація процесів; - синхронізація процесів; - організація взаємодії між процесами; - маніпуляція блоками керування процесами (PCB); - підтримка операцій вводу-виводу; - підтримка розподілу та перерозподілу пам’яті; - підтримка механізму виклику-повернення при звертанні до процедур; - підтримка функцій з обліку роботи машини. Функції, що реалізовані в ядрі є примітивними. В останній час намітилася чітка тенденція, коли розробники систем значну частину функцій ядра реалізують на рівні мікропрограм у ПЗУ BIOS. Це ефективний спосіб захисту ядра. Причому ретельна реалізація мікропрограм, дозволяє забезпечити високу ефективність виконання ядром своїх функцій. В ієрархічних системних структурах, ядро розташоване на рівні безпосередньо над базовим рівнем апаратури ЕОМ. На вищих рівнях розташовані процеси системи та процеси користувачів. Практика показує, що ієрархічні структури простіше піддаються відлагодженню, модифікації та тестуванню. Поняття „переривань” та їх призначення. В обчислювальній техніці під перериванням розуміють подію, при якій міняється нормальна послідовність виконання команд, що визначена програмою. Переривання, є механізмом, що дозволяє координувати паралельне функціонування окремих пристроїв комп’ютерної системи та реагувати на особливі стани, що виникають при роботі процесора. Тобто, переривання, це примусова передача керування від програми, що виконується, до ОС, а через неї до відповідної програми обробки переривань. Ця передача відбувається при виникненні певної події. Асинхронні паралельні процеси. Процеси називаються паралельними, якщо вини існують (працюють) одночасно. Зменшення габаритів та вартості апаратури комп’ютерів сприяють подальшому розвитку багато процесорних систем і, як кінцевий результат, реалізацію максимального паралелізму на всіх рівнях. Якщо певні операції можна виконувати паралельно, то комп’ютери наступних генерацій будуть фізично виконувати їх паралельно. Паралельні процеси можуть бути повністю незалежними або взаємодіючими. Останні можуть бути конкуруючими, або такими, що сумісно виконують спільну роботу. Як правило, найчастіше маємо справу з паралельними процесами, яким необхідно час від часу синхронізуватися та взаємодіяти. Усі подібні паралельні процеси називаються асинхронними. Охарактеризуйте основні стани обчислювального процесу та умови переходу із стану в стан. Розглядаємо комп’ютер з одним центральним процесором, але всі подальші міркування справедливі і для багатопроцесорних систем.  SHAPE \* MERGEFORMAT Стан „Виконання” Стан „Готовності” Стан „Блокований” Блокування Розблокування Пуск Завершення кванту часу Основні стани процесу  За період свого існування процес приймає ряд дискретних станів. Зміну станів процесу можуть викликати різні події. Процес знаходиться в стані виконання, якщо в біжучий момент йому надається центральний процесор (CPU). Процес знаходиться в стані готовності, якщо він міг би одразу використати CPU, який знаходиться в його розпорядженні. Процес знаходиться в стані блокування, якщо він очікує на деяку подію (наприклад, завершення операції вводу/виводу) для того, щоби отримати можливість продовжити виконання. В одно-процесорному комп’ютері в кожний конкретний момент часу може виконуватись тільки один процес, але декілька можуть знаходитись в стані готовності, а деякі – бути заблокованими. Тому створюються: - список процесів, готових до виконання; - список заблокованих процесів. Перший список впорядкований за пріоритетом. Таким чином наступний процес, що отримує в своє розпорядження CPU, буде першим з цього списку. Другий список не впорядкований. Не передбачається ніякого пріоритетного порядку розблокування процесів (тобто їх переводу в стан готовності). Розблокування відбувається в тому порядку, в якому відбуваються події, які очікуються заблокованими процесами. Процес із пасивного стану може перейти в стан готовності в таких випадках: 1. За командою користувача. Це має місце в тих інтерактивних (діалогових) ОС, де програма може мати статус задачі, а не просто бути файлом виконання. І тільки на час виконання вона може отримувати статус задачі, тобто процесу. 2. При виборі з черги планувальником процесів. 3. За викликом із іншої задачі (один процес може створити, ініціювати, призупинити, зупинити, знищити інший процес). 4. За перериванням від зовнішнього пристрою (сигнал від виконання деякої події може запустити відповідну задачу). 5. При надходженні запланованого часу запуску програми. Із стану виконання процес може вийти з таких причин: 1. Процес завершується, при цьому він передає керування ОС і повідомляє про своє завершення. В результаті процес або переходить в пасивний стан, або знищується. Знищується не сама програма, а саме активний процес, який відповідав виконанню деякої програми. В пасивний стан процес може бути переведений примусово за командою оператора. 2. Процес переводиться ОС в стан готовності у зв’язку з виникненням задачі з вищим пріоритетом або через завершення виділеного кванту часу. 3. Процес блокується або через запит операції вводу/виводу, або через те, що йому неможливо надати ресурс, на який виник запит, або за командою оператора на призупинення задачі. З початком відповідної події процес деблокується і переводиться в стан готовності до виконання. Класифікація файлів за видами організації та методами доступу. Під організацією файлів розуміється спосіб розміщення записів файла в зовнішній пам’яті. Зараз найбільш відомі такі види організації файлів: 1. Послідовна. Записи розташовуються у фізичному порядку. „Наступний” запис – це запис, який фізично іде слідом за попереднім. Така організація застосовується для файлів, що зберігаються на магнітній стрічці, виводяться на друк, перфокарти, перфострічки і т.п., тому що вони в принципі є послідовними носіями даних. Файли на дисках також можуть мати послідовну організацію. 2. Індексно–послідовна. Записи розташовуються в логічній послідовності у відповідності із значенням ключів, які є в кожному записі. В системі маємо спеціальний системний індекс, де вказані фізичні адреси певних головних записів. Доступ до індексно–послідовних записів може відбуватись послідовно відповідно до зростання (зменшення) значення ключа, або безпосередньо за ключем, шляхом пошуку за системним індексом. Такі файли звичайно зберігаються на дисках. 3. Пряма. Доступ до записів відбувається прямо (довільно) за їх фізичними адресами на запам’ятовуючому пристрої прямого доступу (ЗППД). Прикладна програма розміщує записи на ЗППД в довільному (зручному) неї порядку. Файли прямої організації вимагають, щоб користувач мав детальне представлення про фізичні особливості зовнішніх ЗП, на яких зберігаються файли.  SHAPE \* MERGEFORMAT Бібліотечний набір даних Запис каталогу Стаття для запису А Стаття для запису В Стаття для запису К Стаття для запису С ... Запис С Вільна ділянка для нових записів після вилучення запису Місце, що залишилося Запис В ... запис К ... Запис К ... ... запис К Запис А ... ... запис А  4. Бібліотечна. Це файл, який складається з послідовних підфайлів. Кожний послідовний підфайл називається елементом або геном файлу. Початкова адреса кожного такого елементу зберігається в директорії файлу. Такі файли часто використовуються для зберігання програмних бібліотек. Ці види організації файлів мають багато варіантів, які застосовуються в реальних системах. Носій записів, який використовується в кожному конкретному зовнішньому ЗП називається томом. Методи доступу В ОС як правило реалізується декілька методів доступу. Методи доступу – це сукупність угод та засобів, за допомогою яких реалізується заданий спосіб обміну фізичних записів файлу. Є дві групи методів доступу: Методи доступу з чергами. Базисні методи доступу. Застосовується в тих випадках , коли послідовну обробку записів можна передбачити. Наприклад при послідовній та індексно-послідовній організації файлів. В цих методах передбачене випередження. В цих методах передбачаються випередження буферизації та планування операцій вводу-виводу, тобто засоби направленні на те, щоб по можливості до кінця обробки першого запису наступний запис був готовий до обробки. В ОП кожний конкретний момент часу знаходиться більше одного запису, це дозволяє суміщати обробку записів та виконувати операції вводу-виводу. Ці методи забезпечуються також автоматичним блокуванням та деблокуванням записів. Застосовується в тих випадках, коли послідовна обробку записів передбачити неможливо. Кожна процедура обміну даними викликаються операторами відповідно вводу-виводу в програмі яка виконується в ОС не забезпечує автономного блокування, деблокування, попередньої буферизації, синхронізації операції обміну з обробками даних. Базисний метод читається та записується фізичними блоками. А блокування та деблокування виконується самим користувачем. Основні складові частини ОС Windows. Творці WINDOWS в певній мірі пішли шляхом найменшого опору, створивши ОС, яка пропонує мінімальне операційне оточення для програм користувача. Як правило, програми, які працюють в WINDOWS, крім файлової системи, не використовують практично нічого з стандартного СПЗ. За думкою творців WINDOWS програміст, який хоче вивести, наприклад, символ на екран монітору, повинен скористатися або системою вводу-виводу консолі оператора DOS або відповідною функцією BIOS. Те ж відноситься до програмування всієї іншої апаратури. Але відомо, що на практиці функції DOS та BIOS часто ігноруються (обходяться) і пристрої програмуються напряму. Практично всі графічні програми працюють безпосередньо з відео пам’яттю, часто самостійно підтримують клавіатуру і інше. Винятком є файлова система WINDOWS, яка також іноді ігнорується (наприклад, при організації захисту від копіювання). Такий, на перший погляд дивний підхід обумовлено декількома об’єктивними причинами. Найбільш суттєвою є та, що відповідне програмне забезпечення WINDOWS недостатньо ефективне і не реалізує всі потенційні можливості комп’ютера. Так вивід пікселу на екран за допомогою відповідної функції BIOS відбувається на два порядки повільніше, ніж при безпосередньому звертанні до відео-пам’яті. Тому обхід WINDOWS дуже поширений. На це впливає також повна відкритість IBM PC, що дає можливість реалізувати програмісту свої задуми.  SHAPE \* MERGEFORMAT Диски Взаємодія програми під Windows з програмно-апаратним забезпеченням Програма Windows Дисплей, клавіатура, порт RS-232, таймер, маніпулятор миша, друкарка, звукогенератор Підсистеми Windows: 1. Файлова система 2. Система керування пам’яттю 3. Система керування програмами 4. Система зв’язку з драйверами 5. Система обробки помилок 6. Служба часу 7. Система вводу-виводу консолі Апаратура Драйвери BIOS  Але звідси великий мінус – значні терміни розробки програмних продуктів. Для комерційних програм найважливіший фактор – час розробки та програмно-апаратна сумісність. Етапи, які повинен пройти розробник програми для WINDOWS: 1. Постановка задачі (технічне завдання). 2. Розробка інтерфейсу, тобто створення сукупності несуперечливих домовленостей та правил, які дозволяють користувачу: а) швидко та без зайвих зусиль (на інтуїції) навчитись працювати з продуктом; б) забезпечити швидкий доступ (мах за 3-4 кроки) до довільної команди системи; в) інтерфейс повинен бути зручним і для розробника (легко міняти та доповнювати меню, вікна, вибір команд та опцій і використовувати цю ідеологію у всіх своїх розробках). (Особиста технологія створення меню). 3. Розв’язати проблеми з графікою, тобто створити власну, або скористатися хорошою універсальною графічною бібліотекою (таких нема). Як правило проблеми сумісності не розв’язуються. 4. Програмування зовнішніх пристроїв – клавіатури, миші, портів, таймера. Бажано забезпечити максимальну універсальність роботи з пристроями, щоб не переробляти програму під кожний новий комп’ютер. Тобто треба створити власні бібліотеки. 5. Якщо програма досить велика, треба подумати про підтримку оверлейної структури і взагалі про керування пам’яттю (не всі на Асемблері). 6. Почати реалізовувати конкретний проект, розв’язуючи одночасно проблеми сумісності із вже написаними раніше різними бібліотеками, переробляти які нема часу та можливості. Тобто треба спочатку стати системним програмістом IBM PC, тобто мати чіткі та глибокі знання як операційної системи, так і апаратного забезпечення. І знову ж таки нема гарантії, що ваш продукт буде працювати на тому комп’ютері, на якому ви його не тестували. Всі ці складності витікають з ідеології та структури WINDOWS (це найпростіша однозадачна однокористувацька ОС). Але програмісту доступно практично все – нема такого ресурсу комп’ютера, який він би не отримував в своє повне розпорядження. З точки зору користувача WINDOWS це: ідея спілкування – командний рядок; ”подумай та надрукуй”. Користувач повинен знати якусь множину команд WINDOWS. Вміти розв’язувати проблеми з мінімальними засобами діагностики. Згодом спілкування перейшло на рівень файлових систем, а потім – операційних оболонок. Ідея такого спілкування полягає в переході на новий більш природний понятійний рівень – роботу в відкритому та дружньому середовищі, яке наочно представляє предметну область, пропонує широкий набір доступних засобів і пробачає людські помилки. Ця ідея пізніше перейшла в Windows – надбудову над операційною системою WINDOWS. Переваги які надає користувачам Windows 1. Універсальна графіка. Ключова ідея – забезпечення повної незалежності програм від апаратури. Як користувачу, так і програмісту, який створює програми під Windows, надаються універсальні засоби, які знімають проблему забезпечення сумісності з конкретною апаратурою (апаратурна сумісність) та програмним забезпеченням (програмна сумісність). 2. Єдиний інтерфейс. Ретельно продуманий уніфікований єдиний графічний інтерфейс з користувачем полегшує вивчення нових програмних продуктів. Інтерфейс Windows звільняє від необхідності організовувати меню, роботу з клавіатурою та мишею (є стандартні засоби). Не виникає проблеми типу ”як мені організувати виклик команди з меню по виділеній букві”. Інтерфейс з користувачем Windows є повним і цільним (розв’язані не тільки проблеми організації меню – все спілкування з користувачем виконується стандартними засобами). Програмуючи під Windows не потрібно обслуговувати клавіатуру або драйвер миші. Взагалі не потрібно писати службові команди, а зразу розв’язувати конкретні предметні задачі. 3. Обмін даними між програмами. Один із засобів, забезпечуючи програмну сумісність є механізм обміну даними між різними програмами. ”Поштова скринька” (Clipboard) дозволяє користувачу переносити інформацію з одної програми в іншу, не думаючи про її формат та представлення. Це робиться просто та наглядно для користувача. Механізм обміну даних між програмами – життєво важлива якість багатозадачного середовища. Крім Clipboard є вже інші механізми: DDE – Dynamic Data Exchange – програмним шляхом можна встановити прямий зв’язок між задачами, наприклад, приймати дані з послідовного порту, автоматично розміщати їх в комірки електронної таблиці, засобами якої виконувати їх обробку в реальному масштабі часу. OLE – Object Linking and Embedding – вбудований об’єктний зв’язок. Дозволяє переносити з одної програми в іншу різнорідні дані. Це нестандартний засіб для Windows, але реалізація OLE стала можливою тільки в Windows. 4. Сумісність з існуючим програмним забезпеченням. Не тільки дозволяє працювати із звичними програмними продуктами, але і пропонує додаткові можливості (запуск декількох програм одночасно, швидке перемикання з одної програми на іншу, обмін даними між ними і т. п.). Забезпечена можливість роботи з усіма прикладними програмами MS-DOS. 5. Повне використання апаратних ресурсів. При інсталяції Windows аналізує наявні апаратні ресурси та автоматично встановлює режим який найбільш повно використовує можливості апаратури. Дозволяється користуватись всією встановленою на комп’ютері пам’яттю. 6. Багатозадачність. Windows дозволяє запускати одночасно декілька програм (можна одну і ту саму програму декілька разів) з можливістю миттєвого переключення з одної програми на іншу. Це дозволяє ініціювати тривалий процес (друк, сортування даних, копіювання даних) і взятись за іншу роботу. 7. Засоби програмування. Нові ідеї вимагають нової технології програмування. SDK – Software Development Kit – нагадує роботу з одною із відомих спеціальних бібліотек. (стандартна технологія Microsoft). Borland C++ (об’єктно-орієнтований підхід + стандартна технологія). SDK – набір бібліотек, спеціальних засобів та зразків програм, створених для того, щоб допомогти писати прикладні програми для Windows. Windows повністю міняє ідеологію програмування, переводить на зовсім відмінні від MS-DOS концепції взаємодії програм, операційного середовища та апаратних ресурсів. Програмування для Windows складніше ніж для MS-DOS, але ця складність не надлишкова, а визначається тільки тим, що при створенні програм для Windows програміст отримує доступ до нових засобів, недоступних в MS-DOS. Призначення та функції файлової системи. Файлова система – це частина загальної системи керування пам’яттю, що відповідає переважно за керування файлами, які зберігаються на зовнішній пам’яті. Вона відповідає також за забезпечення можливості зберігати особисту (приватну) інформацію та за контрольоване розділення інформації між багатьма користувачами. Розглянемо деякі функції, які, як звичайно вважається, повинні реалізувати файлові системи. 1. Користувачу повинна надаватись можливість створювати, модифікувати та знищувати файли. 2. Користувачам повинна надаватись можливість розділяти, тобто колективно користуватись, файли один від одного під ретельним контролем, з тим, щоб вони могли ефективно взаємодіяти при виконанні спільної роботи. 3. Механізм для розділення (колективного користування) файлів повинен передбачати різні варіанти контрольованого доступу: - доступ для читання; - доступ для запису; - доступ для виконання; - або різних комбінацій зазначених видів доступу. 4. Користувачам надається можливість створювати зручні для прикладних програм структури файлів. 5. Надається можливість керування передачами інформації між файлами. 6. В системі повинні бути передбачені засоби збереження та відновлення, які виключають або випадкову втрату, або навмисне руйнування інформації. 7. Користувач може звертатись до своїх файлів за допомогою символічних імен, а не через імена фізичних пристроїв (тобто файли повинні бути незалежними від пристроїв). 8. У системах, пов’язаних з обробкою персональної, конфіденційної та таємної інформації, яку необхідно захищати від несанкціонованого доступу (системи передачі грошових засобів; системах міліції; медичних системах, де зберігаються історії хвороб і т.п.) файлова система може також передбачати шифрування та дешифрування даних. Для доступу потрібно мати ключі дешифрування. 9. І найважливіше. Файлова система повинна мати „дружній” інтерфейс з користувачем. Вона повинна дозволяти користувачам працювати тільки з логічним представленням своїх даних і тих операцій, які повинні з ними виконуватись, а не з фізичним представленням. Необхідно, щоб користувачу не треба було думати про конкретні фізичні пристрої, на яких зберігаються його дані, про формати даних чи про фізичні засоби обміну даними з цими пристроями. Основні групи „переривань” та події, що їх викликають. Переривання, що виникають при роботі обчислювальної системи, можна поділити на такі основні групи: 1. Зовнішні (або асинхронні). Викликаються асинхронними подіями, які відбуваються поза процесом, що виконується і відповідно переривається: - переривання від таймера; - переривання від зовнішніх пристроїв; - переривання при збоях у живлення; - переривання з пульта оператора обчислювальної системи; - переривання від іншого процесора або обчислювальної системи. 2. Внутрішні. Викликаються подіями, що пов’язані з роботою процесу, що виконується і є синхронними з його операціями. Такі переривання виникають: - при неправильній адресації (в адресній частині команди вказано заборонену або неіснуючу адресу, звертання до відсутнього сегменту або сторінки віртуальної пам’яті); - при наявності в полі коду операції, неіснуючої команди; - при діленні на нуль; - при переповненні, або пропаданні порядку в числах з плаваючою крапкою; - при виявленні порушення паритету парності, а також помилок в роботі різних пристроїв апаратури комп’ютера засобами контролю; - переривання за звертаннями до супервізора. У деяких комп’ютерах існують привілейовані команди, які може виконувати тільки ОС, а не програми користувачів. Відповідно в апаратурі передбачено різні режими роботи. При спробі виконати таку команду заборонену в даному режимі, відбувається внутрішнє переривання і керування передається супервізору ОС. 3. Програмні переривання. Викликаються відповідними командами переривання. За такими командами процесор виконує практично такі самі дії, що й при внутрішній перериваннях. Взаємо-виключення. Вимоги до розв’язання задачі взаємо-виключення. Спосіб взаємодії між процесами, при якому підчас звертання одного із процесів до даних які спільно використовуються (розділяються), усім іншим процесам звертання до цих даних заборонено, називається взаємо-виключенням. Якщо процес звертається до даних, що розділяються, то цей процес знаходиться у своїй критичній ділянці коду (або в критичній секції). Для всіх інших процесів, що розділяють дані, можливість входу в критичні ділянки повинна виключаться. Процес повинен проходити свою критичну ділянку якнайшвидше. Він не повинен блокуватися у критичній ділянці. Критичні ділянки треба програмувати найбільш ретельно, щоби виключити, наприклад, зациклювання. Для вирішення проблеми, що описана прикладом друкування файлів, необхідно реалізувати задачу із взаємо-виключення із забезпеченням наступних чотирьох обмежень: 1. Задача повинна розв’язуватися чисто програмним способом на машині без спеціальних команд взаємо-виключення. Причому: - кожна машинна команда виконується як операція, що не може бути поділена; - при одночасній спробі декількох процесів звернутися до того ж самого елементу даних спрацьовує апаратна схема захисного блокування пам’яті (будується черга, що дозволяє виконувати тільки одне звертання в кожен певний момент часу); 2. Не повинно бути ніяких припущень щодо відносних швидкостей виконання асинхронних паралельних процесів. 3. Процеси, що знаходяться поза своїми критичними секціями, не можуть заважати іншим процесам заходити у свої власні критичні ділянки. 4. Не повинно бути безмежного відкладання часу входу процесів у свої критичні ділянки. Програмне вирішення проблеми реалізації примітивів взаємо-виключення для N процесів вдосконалив Д.Кнут, виключивши можливість безмежного відкладення процесів. Ейзенберг та Макчаєр запропонували рішення яке гарантує, що процес заходитиме у свою критичну ділянку не більше ніж за N – 1 спробу. Семафори, призначення та застосування. Семафор – це захищена змінна, значення якої можна читати та змінювати тільки за допомогою операцій P та V, а також операції ініціалізації. Двійкові семафори можуть приймати тільки значення 0 та 1. Рахункові семафори приймають невід’ємні цілі значення. Операція P над семафором S записується як P(S) і виконується наступним чином: якщо S > 0 то S := 0; інакше чекакати_S(); Операція V над семафором S записується як V(S) і виконується так: якщо процеси_чекають_S() то дозволити_одному_них_роботу(); інакше S := S + 1; Узагальнений зміст примітиву P(S) (P – Proberen - перевірити) полягає в перевірці біжучого значення семафору S, та якщо воно не менше 0, виконується перехід до наступної за примітивом операції. Інакше процес знімається на деякий час з виконання і переводиться у стан „пасивного очікування”. Знаходячись у списку заблокованих, процес, що очікує, не перевіряє семафор безперервно, як у випадку активного очікування. Замість нього на процесорі може виконуватися інший процес, який реально виконує корисну роботу. Операція V(S) (V – Verhogen – збільшити) пов’язана зі збільшенням значення семафору S на одиницю та переведення одного або декількох процесів у стан готовності. Операції P та V виконуються в ОС у відповідь на запит виданий деяким процесом та ім’я семафору як параметр. Для роботи із семафорами необхідна ще операція ініціалізації самого семафору, тобто операцію присвоєння йому початкового значення. Семафори можна використовувати для реалізації механізму синхронізації процесів шляхом блокування / деблокування: - один процес блокує себе (виконуючи операцію P(S) з початковим значенням S = 0) для того щоб очікувати настання деякої події; - інший процес виявляє, що очікувана подія відбулася та відновлює заблокований процес (за допомогою операції V(S)). Рахункові семафори особливо корисні у випадках, коли деякий ресурс виділяється з множиною ідентичних ресурсів. Кожна P – операція показує, що ресурс виділяється деякому процесові, а V – операція, що ресурс повертається в загальну множину. Операції над семафорами можна реалізувати з використанням режиму активного очікування, але це може привести до втрати ефективності. Щоб цього уникнути, потрібні операції реалізовуються в ядрі ОС. Розглянуті засоби взаємо-виключення мають суттєві недоліки. Вони настільки елементарні, що не дозволяють ефективно описувати розв’язання порівняно складних проблем паралельних обчислень. Їх використання ускладнює доведення коректності програм паралельних обчислень. Неправильне використання таких примітивів може привести до порушення працездатності систем паралельної обробки. Тому для реалізації взаємо-виключень треба було шукати механізми більш високого рівня, які б: - спрощували опис розв’язку складних проблем паралельних обчислень; - спрощували доведення коректності програм; - було важко (якщо не неможливо) зіпсувати або неправильно використати. Одним з рішень цієї проблеми є монітори. Монітор, призначення та застосування. Монітор - це високорівневий засіб синхронізації, механізм організації паралелізму, який містить як дані, так і процедури, що необхідні для реалізації динамічного розподілу загального ресурсу або групи загальних ресурсів. Потреба увійти в монітор у різні моменти часу може виникати у багатьох процесів. Але вхід у монітор знаходиться під жорстким контролем – тут виконується взаємо-виключення процесів, так що в кожен момент часу тільки одному процесові дозволяється увійти в монітор. Процеси, що хочуть увійти в монітор коли він вже зайнятий, будуть очікувати його звільнення. Режимом очікування автоматично керує сам монітор. Механізм монітору гарантує взаємо-виключення. Внутрішні дані монітору можуть бути або глобальними (відносяться до усіх процедур монітору) або локальними (відносяться тільки до однієї певної процедури). До всіх цих даних є доступ тільки зсередини монітору. Процеси, що знаходяться поза монітором не можуть отримати доступ до даних монітору. Якщо процес звертається до деякої процедури монітору і виявляється, що відповідний ресурс вже зайнято, то ця процедура видає команду очікування Wait. Процес міг би залишатися у середині монітору, але це привело б до порушення принципу взаємо-виключення (завадило б іншому процесові увійти в монітор). Тому процес, який переводиться в режим очікування, повинен чекати настання події (звільнення ресурсу) поза монітором. З часом процес, що утримував деякий ресурс, звертається до монітору, щоб повернути ресурс системі. Відповідна процедура монітору при цьому може просто прийняти повідомлення про повернення ресурсу, а потім чекати доки не надійде запит на цей ресурс від іншого процесу. Але може виявитися, що вже є процеси які очікують цей ресурс. Тоді монітор виконує примітив сигналізація Signal, для того, щоб повідомити один з процесів, що очікує про можливість використання ресурсу. Процес, що очікує, завжди має вищий пріоритет, ніж процес, що тільки намагається зайти в монітор. Такий підхід захищає від безконечного відкладання доступу до ресурсу. Фактично у процесів може виникнути необхідність очікувати звільнення ресурсу поза монітором з багатьох причин. Тому вводиться поняття змінна-умова. Для кожної з причин, за якою процес переводиться в стан очікування, призначається своя умова. У зв’язку з цим команди Wait та Signal модифікуються на Wait(ім’я_умови) та Signal(ім’я_умови). Коли оголошується така змінна, створюється черга. Процес, що видав команду очікування, включається у цю чергу, а процес, щ видав команду синхронізації, дозволяє тим самим процесу, що очікує вийти з черги та зайти в монітор. Дисципліна обслуговування черги може бути „першим прийшов – першим обслуговується” або інша пріоритетна схема. Простий розподіл ресурсів за допомогою монітору. Припустимо, що декільком процесам необхідний доступ до певного ресурсу. Він може бути використаний в певний момент часу тільки одним процесом. Монітор: monitor Розподілу_ресурсів; var ресурс_зайнято : логічний; ресурс_звільнено : логічний; {умова} procedure Захопити_ресурс; begin if ресурс_зайнято then wait(ресурс_звільнено); ресурс_звільнено := правда; end; procedure Звільнити_ресурс; begin ресурс_зайнято := неправда; signal(ресурс_звільнено); end; begin ресурс_зайнято := неправда; end; Перевага такого монітору в тому, що він може працювати за аналогією до двійкового семафору: „захопити ресурс” = P – оператор; „звільнити ресурс” = V – оператор. Тому монітори, як мінімум, мають таку ж логічну потужність, як і семафори. Сучасні операційні системи будуються, як правило у вигляді множини асинхронних паралельних процесів, які працюють під керуванням ядра. Процеси, що організовують паралельні роботи, виконуються незалежно, але вимагають періодичної взаємодії. Тому необхідні засоби для обміну даними між процесами. Одним із таких засобів є кільцевий буфер. Він застосовується в тих випадках, коли процес-виконавець повинен передати дані процесу-споживачу. Граф станів процесів із застосуванням відносних пріоритетів.  SHAPE \* MERGEFORMAT  Виконання Готовність Блокування Стан призупиненй блокований Стан призупиненй готовий Блокування Розблокування Пуск Призупинення Відновлення Призупинення Призупинення Відновлення Настання події (завершення вводу/виводу) Настання події (завершення вводу/виводу) Завершення часу  У системах з відносними пріоритетами активний процес виконується доти, доки він сам не покине процесор, виконавши перехід в стан Очікування (або ж виникне помилка, або процес завершиться).  SHAPE \* MERGEFORMAT  Виконання Готовність Очікування Граф станів процесів у системах з відносними пріоритетами  Витісняючі та невитісняючі алгоритми планування процесів. Існує два основні типи процедур планування процесів — витісняючі (preemptive) та невитісняючі (non-preemptive — cooperative). Non-preemptive multitasking — невитісняюча багатозадачність — це спосіб планування процесів, при якому активний процес виконується до того часу, доки він сам, за власною ініціативою, не віддасть керування планувальнику ОС для того, щоби той вибрав з черги інший, готовий до виконання процес. Preemptive multitasking — витісняючи багатозадачність — це такий спосіб, при якому рішення про переключання процесора з виконання одного процесу на виконання іншого процесу приймається планувальником ОС, а не самою активною задачею. Типи багатозадачності — це більш широкі поняття ніж типи пріоритетності. Пріоритети задач можуть використовуватись або не використовуватись, як при витісняючих так і невитісняючих способах планування. Основна відмінність між preemptive та non-preemptive — це ступінь централізації механізму планування задач. У першому випадку механізм планування задач повністю зосереджено в ОС і програміст пише прикладну програму, не піклуючись про те, що вона буде виконуватись паралельно з іншими задачами. У цьому випадку ОС виконує такі функції: 1. Визначає час, коли знімається з виконання активна задача. 2. Запам’ятовує її контекст. 3. Вибирає з черги готових задач наступну. 4. Запускає вибрану задачу на виконання, завантажуючи її контекст. У другому випадку механізм планування розподілено між ОС і прикладними програмами. Прикладна програма, отримавши керування від ОС сама визначає момент завершення своєї чергової ітерації і передає керування ОС за допомогою системного виклику. ОС формує черги задач і вибирає у відповідності з деяким алгоритмом (наприклад, із врахуванням пріоритетів) наступну задачу на виконання. Такий механізм досить складний як для користувачів, так і для розробників. Програміст повинен забезпечити „дружнє” відношення своєї програми до інших, що виконуються одночасно. Тобто досить часто віддаючи їм керування. Але такий підхід дає можливість розробнику прикладних програм самому проектувати алгоритм планування, який найбільш підходить для даного фіксованого набору задач. Також суттєва перевага — більш висока швидкість переключення з задачі на задачу. Файл-сервер NetWare — висока швидкість виконання файлових операцій. Менш ефективно в ОС Windows 3.ХХ Але зараз практично в усіх ОС-preemptive — (UNIX Windows NT/95/98, OS/2). Можливо, саме тому витісняючу багатозадачність часто називають істинною, справжньою багатозадачністю. Категорії стратегій керування пам’яттю. Стратегії керування пам’яттю поділяються на такі категорії: 1. Стратегії вибірки: а) вибірка за запитом; б) випереджуюча вибірка; 2. Стратегії розміщення. 3. Стратегії заміщення. Перші. Мають своїм призначенням визначати, коли треба „вштовхнути” черговий блок програми або даних в основну пам’ять: - при вибірці за запитом черговий блок програми або даних завантажується в основну пам’ять, коли є на неї запит від працюючої програми; - при випереджуючій вибірці виникають додаткові затримки, зв’язані з приготуванням подальшого ходу програми. Другі. Визначають, в яке місце основної пам’яті треба розмістити програму, яка надходить. Треті. Визначають, який блок програми, або даних треба вивести „виштовхнути” з основної пам’яті, щоб звільнити місце для запиту поступаючи програм або даних. Зв’язний розподіл пам’яті для одного користувача. ...
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!