Главная страница
Контакты

    Басты бет


Методичні рекомендації для проведення лабораторних занять для студентів напряму підготовки 050103 «Програмна інженерія»

жүктеу 1.14 Mb.



жүктеу 1.14 Mb.
бет1/2
Дата06.09.2020
өлшемі1.14 Mb.

Методичні рекомендації для проведення лабораторних занять для студентів напряму підготовки 050103 «Програмна інженерія»


  1   2



Операційні системи



Методичні рекомендації
для проведення лабораторних занять
для студентів напряму підготовки 6.050103 «Програмна інженерія»
Денна та заочна форма навчання

Навчально методичне видання

Операційні системи, Методичні рекомендації для проведення лабораторних занять. Для студентів денної та заочної форми навчання напряму підготовки 6.050103 «Програмна інженерія». Укладач: Матвійчук Л.А. – 2016р. - 36 с.

Рецензенти:

Розглянуто та схвалено на засіданні кафедри


Рекомендовано до друку на засіданні НМР

протокол №__ від ______вересня 20р.

ЗМІСТ

Лабораторна робота №1



Тема: Функціональні компоненти операційних систем.............................................4
Лабораторна робота №2

Тема: Базові поняття архітектури операційних систем.................................................6


Лабораторна робота №3

Тема: Особливості архітектури: Unix i Linux................................................................12
Лабораторна робота №4

Тема: Особливості архітектури Windows XP................................................................14
Лабораторна робота № 5

Тема: Базові поняття процесів і потоків........................................................................17


Лабораторна робота №6

Тема: Перемикання контексту й обробка переривань.................................................20



Лабораторне заняття № 7.


Тема: Програмна оболонка Norton Commander..................................................23
Лабораторне заняття № 8

Тема: Робота з файлами і каталогами в операційній системі Unix, Linux..............24

.

Лабораторне заняття № 9



Тема: Будова операційної системи Linux......................................................................27
Контрольні запитання та завдання. .........32

Література ......36




Лабораторна робота №1

Тема: Функціональні компоненти операційних систем.

План

1. Керування процесами і потоками.

2. Керування пам’яттю.

3. Керування введенням і виведенням.

4. Керування файлами і файлові системи.

5. Інтерфейс користувача.


Функціональні компоненти операційних систем

Операційну систему можна розглядати як сукупність функціональних компонентів, кожен з яких відповідає за реалізацію певної функції системи. У цьому розділі описані найважливіші функції сучасних ОС і компоненти, що їх реалізують.

Спосіб побудови системи зі складових частин та їхній взаємозв'язок визначає архітектура операційної системи. Підходи до реалізації архітектури ОС будуть розглянуті в розділі 2.
Керування процесами й потоками

Як ми вже згадували, однією з найважливіших функцій ОС є виконання прикладних програм. Код і дані прикладних програм зберігаються в комп'ютерній системі на диску в спеціальних виконуваних файлах. Після того як користувач або ОС вирішать запустити на виконання такий файл, у системі буде створено базову одиницю обчислювальної роботи, що називається процесом (process).

Можна дати таке означення: процес — це програма під час її виконання.

Операційна система розподіляє ресурси між процесами. До таких ресурсів належать процесорний час, пам'ять, пристрої введення-виведення, дисковий простір у вигляді файлів. При розподілі пам'яті з кожним процесом пов'язується його адресний простір — набір адрес пам'яті, до яких йому дозволено доступ. В адресному просторі зберігаються код і дані процесу. При розподілі дискового простору для кожного процесу формується список відкритих файлів, аналогічним чином розподіляють пристрої введення-виведення.

Процеси забезпечують захист ресурсів, якими вони володіють. Наприклад, до адресного простору процесу неможливо безпосередньо звернутися з інших процесів (він є захищеним), а при роботі з файлами може бути задано режим, що забороняє доступ до файла всім процесам, крім поточного.

Розподіл процесорного часу між процесами необхідний через те, що процесор виконує інструкції одну за одною (тобто в конкретний момент часу на ньому може фізично виконуватися тільки один процес), а для користувача процеси мають виглядати як послідовності інструкцій, виконувані паралельно. Щоб домогтися такого ефекту, ОС надає процесор кожному процесу на деякий короткий час, після чого перемикає процесор на інший процес; при цьому виконання процесів відновлюється з того місця, де їх було перервано. У багатопроцесорній системі процеси можуть виконуватися паралельно на різних процесорах.

Сучасні ОС крім багатозадачності можуть підтримувати багатопотоковість (multithreading), яка передбачає в рамках процесу наявність кількох послідовностей інструкцій (потоків, threads), які для користувача виконуються паралельно, подібно до самих процесів в ОС. На відміну від процесів потоки не забезпечують захисту ресурсів (наприклад, вони спільно використовують адресний простір свого процесу).
Керування пам'яттю

Під час виконання програмного коду процесор бере інструкції й дані з оперативної (основної) пам'яті комп'ютера. При цьому така пам'ять відображається у вигляді масиву байтів, кожен з яких має адресу.

Як уже згадувалося, основна пам'ять є одним із видів ресурсів, розподілюваних між процесами. ОС відповідає за виділення пам'яті під захищений адресний простір процесу і за вивільнення пам'яті після того, як виконання процесу буде завершено. Обсяг пам'яті, доступний процесу, може змінюватися в ході виконання, у цьому разі говорять про динамічний розподіл пам'яті.

ОС повинна забезпечувати можливість виконання програм, які окремо або в сукупності перевищують за обсягом доступну основну пам'ять. Для цього в ній має бути реалізована технологія віртуальної пам'яті. Така технологія дає можливість розміщувати в основній пам'яті тільки ті інструкції й дані процесу, які потрібні в поточний момент часу, при цьому вміст іншої частини адресного простору зберігається на диску.


Керування введенням-виведенням

Операційна система відповідає за керування пристроями введення-виведення, підключеними до комп'ютера. Підтримка таких пристроїв в ОС звичайно здійснюється на двох рівнях. До першого, нижчого, рівня належать драйвери пристроїв - програмні модулі, які керують пристроями конкретного типу з урахуванням усіх їхніх особливостей. До другого рівня належить універсальний інтерфейс введення-виведення, зручний для використання у прикладних програмах.

ОС має реалізовувати загальний інтерфейс драйверів введення-виведення, через який вони взаємодіють з іншими компонентами системи. Такий інтерфейс дає змогу спростити додавання в систему драйверів для нових пристроїв.

Сучасні ОС надають великий вибір готових драйверів для конкретних периферійних пристроїв. Що більше пристроїв підтримує ОС, то більше в неї шансів на практичне використання.



Керування файлами та файлові системи

Для користувачів ОС і прикладних програмістів дисковий простір надається у вигляді сукупності файлів, організованих у файлову систему.

Файл — це набір даних у файловій системі, доступ до якого здійснюється за іменем. Термін «файлова система» може вживатися для двох понять: принципу організації даних у вигляді файлів і конкретного набору даних (зазвичай відповідної частини диска), організованих відповідно до такого принципу. У рамках ОС може бути реалізована одночасна підтримка декількох файлових систем.

Файлові системи розглядають на логічному і фізичному рівнях. Логічний рівень визначає зовнішнє подання системи як сукупності файлів (які звичайно перебувають у каталогах), а також виконання операцій над файлами і каталогами (створення, вилучення тощо). Фізичний рівень визначає принципи розміщення структур даних файлової системи на диску або іншому пристрої.



Інтерфейс користувача

Розрізняють два типи засобів взаємодії користувача з ОС: командний інтерпретатор (shell) i графічний інтерфейс користувача (GUI).

Командний інтерпретатор дає змогу користувачам взаємодіяти з ОС, використовуючи спеціальну командну мову (інтерактивно або через запуск на виконання командних файлів). Команди такої мови змушують ОС виконувати певні дії (наприклад, запускати програми, працювати із файлами).

Графічний інтерфейс користувача надає йому можливість взаємодіяти з ОС, відкриваючи вікна і виконуючи команди за допомогою меню або кнопок. Підходи до реалізації графічного інтерфейсу доволі різноманітні: наприклад, у Windows-системах засоби його підтримки вбудовані в систему, а в UNIX вони є зовнішніми для системи і спираються на стандартні засоби керування введенням-виведенням.



Завдання: виконати завдання з розділу 1 свого варіанту

Рекомендована література (джерело [20, с.25 – 30], [9, с.30 - 45], [2, с.4 – 14], [3, с.10 - 25], [6, с.14 – 34], [8, с.5 - 15]).


Лабораторна робота №2

Тема: Базові поняття архітектури операційних систем.

План

  1. Механізм і політика.

  2. Ядро системи.

  3. Системне програмне забезпечення.

  4. Системи з мікро ядром.

  5. Концепція віртуальних машин.

Механізми і політика

В ОС насамперед необхідно виділити набір фундаментальних можливостей, які надають її компоненти; ці базові можливості становлять механізм (mechanism). 3 іншого боку, необхідно приймати рішення щодо використання зазначених можливостей; такі рішення визначають політику (policy). Отже, механізм показує, що реалізовано компонентом, а політика - як це можна використати.

Коли за реалізацію механізму і політики відповідають різні компоненти (механізм відокремлений від політики), спрощується розробка системи і підвищується її гнучкість. Компонентам, що реалізують механізм, не повинна бути доступна інформація про причини та цілі його застосування; усе, що потрібно від них, - це виконувати призначену їм роботу. Для таких компонентів використовують термін «вільні від політики» (policy-free). Компоненти, відповідальні за політику, мають оперувати вільними від неї компонентами як будівельними блоками, для них недоступна інформація про деталі реалізації механізму.

Прикладом відокремлення механізму від політики є керування введенням-виведенням. Базові механізми доступу до периферійних пристроїв реалізують драйвери. Політику використання цих механізмів задає програмне забезпечення, що здійснює введення-виведення.



Ядро системи та системне програмне забезпечення

Привілейований режим і режим користувача

Базові компоненти ОС, які відповідають за найважливіші її функції, зазвичай перебувають у пам'яті постійно і виконуються у привілейованому режимі, називають ядром операційної системи (operating system kernel).

Існуючі на сьогодні підходи до проектування архітектури ОС по-різному визначають функціональність ядра. До найважливіших функцій ОС, виконання яких звичайно покладають на ядро, належать обробка переривань, керування пам'яттю, керування введенням-виведенням. До надійності та продуктивності ядра висувають підвищені вимоги.

Основною характерною ознакою ядра є те, що воно виконується у привілейованому режимі. Розглянемо особливості цього режиму.

Для забезпечення ефективного керування ресурсами комп'ютера ОС повинна мати певні привілеї щодо прикладних програм. Треба, щоб прикладні програми не втручалися в роботу ОС, і водночас ОС повинна мати можливість втрутитися в роботу будь-якої програми, наприклад для перемикання процесора або розв'язання конфлікту в боротьбі за ресурси. Для реалізації таких привілеїв потрібна апаратна підтримка: процесор має підтримувати принаймні два режими роботи - привілейований (захищений режим, режим ядра, kernel mode) і режим користувача (user mode). У режимі користувача недопустимі команди, які є критичними для роботи системи (перемикання задач, звертання до пам'яті за заданими межами, доступ до пристроїв введення-виведення тощо).

Розглянемо, яким чином використовуються різні режими процесора під час взаємодії між ядром і застосуваннями.

Після завантаження ядро перемикає процесор у привілейований режим і отримує цілковитий контроль над комп'ютером. Кожне застосування запускається і виконується в режимі користувача, де воно не має доступу до ресурсів ядра й інших програм. Коли потрібно виконати дію, реалізовану в ядрі, застосування робить системний виклик (system call). Ядро перехоплює його, перемикає процесор у привілейований режим, виконує дію, перемикає процесор назад у режим користувача і повертає результат застосування.

Системний виклик виконується повільніше за виклик функції, реалізованої в режимі користувача, через те що процесор двічі перемикається між режимами. Для підвищення продуктивності в деяких ОС частина функціональності реалізована в режимі користувача, тому для доступу до неї системні виклики використовувати не потрібно.



Системне програмне забезпечення

Окрім ядра, важливими складниками роботи ОС є також застосування режиму користувача, які виконують системні функції. До такого системного програмного забезпечення належать:



  • системні програми (утиліти), наприклад: командний інтерпретатор, програми резервного копіювання та відновлення даних, засоби діагностики й адміністрування;

  • системні бібліотеки, у яких реалізовані функції, що використовуються у застосуваннях користувача.

Системне програмне забезпечення може розроблятися й постачатися окремо від ОС. Наприклад, може бути кілька реалізацій командного інтерпретатора, засобів резервного копіювання тощо. Системні програми і бібліотеки взаємодіють з ядром у такий самий спосіб, як і прикладні програми.
Монолітні системи

ОС, у яких усі базові функції сконцентровані в ядрі, називають монолітними системами. У разі реалізації монолітного ядра ОС стає продуктивнішою (процесор не перемикається між режимами під час взаємодії між її компонентами), але менш надійною (весь її код виконується у привілейованому режимі, і помилка в кожному з компонентів є критичною).

Монолітність ядра не означає, що всі його компоненти мають постійно перебувати у пам'яті. Сучасні ОС дають можливість динамічно розміщувати в адресному просторі ядра фрагменти коду (модулі ядра). Реалізація модулів ядра дає можливість також досягти його розширюваності (для додання нової функціональності досить розробити і завантажити у пам'ять відповідний модуль).
Багаторівневі системи

Компоненти багаторівневих ОС утворюють ієрархію рівнів (шарів, layers), кожен з яких спирається на функції попереднього рівня. Найнижчий рівень безпосередньо взаємодіє з апаратним забезпеченням, на найвищому рівні реалізуються системні виклики.

У традиційних багаторівневих ОС передача керування з верхнього рівня на нижній реалізується як системний виклик. Верхній рівень повинен мати права на виконання цього виклику, перевірка цих прав виконується за підтримки апаратного забезпечення. Прикладом такої системи є ОС Multics, розроблена в 60-ті роки. Практичне застосування цього підходу сьогодні обмежене через низьку продуктивність.

Рівні можуть виділятися й у монолітному ядрі; у такому разі вони підтримуються програмно і спричиняють спрощення реалізації системи. У монолітному ядрі визначають рівні, перелічені нижче.



  • Засоби абстрагування від устаткування, які взаємодіють із апаратним забезпеченням безпосередньо, звільняючи від реалізації такої взаємодії інші компоненти системи.

  • Базові засоби ядра, які відповідають за найфундаментальніші, найпростіші дії ядра, такі як запис блоку даних на диск. За допомогою цих засобів виконуються вказівки верхніх рівнів, пов'язані з керуванням ресурсами.

  • Засоби керування ресурсами (або менеджери ресурсів), що реалізують основні функції ОС (керування процесами, пам'яттю, введенням-виведенням тощо). На цьому рівні приймаються найважливіші рішення з керування ресурсами, які виконуються з використанням базових засобів ядра.

  • Інтерфейс системних викликів, який служить для реалізації зв'язку із системним і прикладним програмним забезпеченням.

Розмежування базових засобів ядра і менеджерів ресурсів відповідає відокремленню механізмів від політики в архітектурі системи. Базові засоби ядра визначають механізми функціонування системи, менеджери ресурсів реалізують політику.
Системи з мікроядром

Один із напрямів розвитку сучасних ОС полягає в тому, що у привілейованому режимі реалізована невелика частка функцій ядра, які є мікроядром (microkernel). Інші функції ОС виконуються процесами режиму користувача (серверними процесами, серверами). Сервери можуть відповідати за підтримку файлової системи, за роботу із процесами, пам'яттю тощо.

Мікроядро здійснює зв'язок між компонентами системи і виконує базовий розподіл ресурсів. Щоб виконати системний виклик, процес (клієнтський процес, клієнт) звертається до мікроядра. Мікроядро посилає серверу запит, сервер виконує роботу і пересилає відповідь назад, а мікроядро переправляє його клієнтові (рис. 2.1). Клієнтами можуть бути не лише процеси користувача, а й інші модулі ОС.

Перевагами мікроядрового підходу є:



  • невеликі розміри мікроядра, що спрощує його розробку й налагодження;

  • висока надійність системи, внаслідок того що сервери працюють у режимі користувача й у них немає прямого доступу до апаратного забезпечення;

  • більша гнучкість і розширюваність системи (непотрібні компоненти не займають місця в пам'яті, розширення функціональності системи зводиться до додавання в неї нового сервера);

  • можливість адаптації до умов мережі (спосіб обміну даними між клієнтом і сервером не залежить від того, зв'язані вони мережею чи перебувають на одному комп'ютері).


Головним недоліком мікроядрового підходу є зниження продуктивності. Замість двох перемикань режиму процесора у разі системного виклику відбувається чотири (два — під час обміну між клієнтом і мікроядром, два — між сервером та мікроядром).

Зазначений недолік є, швидше, теоретичним, на практиці продуктивність і надійність мікроядра залежать насамперед від якості його реалізації. Так, в ОС QNX мікроядро займає кілька кілобайтів пам'яті й забезпечує мінімальний набір функцій, при цьому система за продуктивністю відповідає ОС реального часу.
Концепція віртуальних машин

У системах віртуальних машин програмним шляхом створюють копії апаратного забезпечення (відбувається його емуляція). Ці копії (віртуальні машини) працюють паралельно, на кожній із них функціонує програмне забезпечення, з яким взаємодіють прикладні програми і користувачі.

Уперше концепція віртуальних машин була реалізована в 70-ті роки в операційній системі VM фірми IBM. У СРСР варіант цієї системи (VM/370) був широко розповсюджений у 80-ті роки і мав назву Система віртуальних машин ЄС ЕОМ (СВМ ЄС). Розглянемо архітектуру цієї ОС [8,4], що показана на рис. 2.2.

Ядро системи, яке називалося монітором віртуальних машин (VM Monitor, МВМ), виконувалося на фізичній машині, безпосередньо взаємодіючи з її апаратним забезпеченням. Монітор реалізовував набір віртуальних машин (ВМ). Кожна ВМ була точною копією апаратного забезпечення, на ній могла бути запущена будь-яка ОС, розроблена для цієї архітектури. Найчастіше на ВМ встановлювали спеціальну однокористувацьку ОС CMS (підсистема діалогової обробки, ПДО). На різних ВМ могли одночасно функціонувати різні ОС.

Коли програма, написана для ПДО, виконувала системний виклик, його перехоплювала копія ПДО, запущена на відповідній віртуальній машині. Потім ПДО виконувала відповідні апаратні інструкції, наприклад інструкції введення-виведення для читання диска. Ці інструкції перехоплював МВМ і перетворював їх на апаратні інструкції фізичної машини.





Віртуальні машини спільно використовували ресурси реального комп'ютера; наприклад, дисковий простір розподілявся між ними у вигляді віртуальних дисків, названих мінідисками. ОС, запущена у ВМ, використовувала мінідиски так само, як фізичні диски.

Сьогодні концепція віртуальних машин застосовується і в прикладному програмному забезпеченні; опис відповідних рішень (програмних емуляторів апаратного забезпечення, технології керованого коду) можна знайти на сайті супроводу.

Із означення ОС випливає, що вона реалізує зв'язок між апаратним забезпеченням комп'ютера (через інтерфейс апаратного забезпечення) і програмами користувача (через інтерфейс прикладного програмування). У цьому розділі розглянуто особливості реалізації та використання цих інтерфейсів.

Завдання: виконати завдання з розділу 2 свого варіанту

Рекомендована література (джерело [20, с.35 – 40], ],[8, с.30 – 45], [9, с.35 - 49], [6, с.14 – 34], [8, с.5 - 15] ).


Лабораторна робота №3

Тема: Особливості архітектури: Unix i Linux.

План

  1. Підсистема керування процесами.

  2. Призначення ядра Linux і його особливості.

  3. Особливості системних бібліотек.

  4. Модулі ядра.

Базова архітектура UNIX

UNIX є прикладом досить простої архітектури ОС. Більша частина функціональності цієї системи міститься в ядрі, ядро спілкується із прикладними програмами за допомогою системних викликів. Базова структура класичного ядра UNIX зображена на рис. 2.3 (див., наприклад, [3, 9]).




Система складається із трьох основних компонентів: підсистеми керування процесами, файлової підсистеми та підсистеми введення-виведення.

Підсистема керування процесами контролює створення та вилучення процесів, розподілення системних ресурсів між ними, міжпроцесову взаємодію, керування пам'яттю.

Файлова підсистема забезпечує єдиний інтерфейс доступу до даних, розташованих на дискових накопичувачах, і до периферійних пристроїв. Такий інтерфейс є однією з найважливіших особливостей UNIX. Одні й ті самі системні виклики використовують як для обміну даними із диском, так і для виведення на термінал або принтер (програма працює із принтером так само, як із файлом). При цьому файлова система переадресовує запити відповідним модулям підсистеми введення-виведення, а ті — безпосередньо периферійним пристроям. Крім того, файлова підсистема контролює права доступу до файлів, які значною мірою визначають привілеї користувача в системі.

Підсистема введення-виведення виконує запити файлової підсистеми, взаємодіючи з драйверами пристроїв. В UNIX розрізняють два типи пристроїв: символьні (наприклад, принтер) і блокові (наприклад, жорсткий диск). Основна відмінність між ними полягає в тому, що блоковий пристрій допускає прямий доступ. Для підвищення продуктивності роботи із блоковими пристроями використовують буферний кеш - ділянку пам'яті, у якій зберігаються дані, зчитані з диска останніми. Під час наступних звертань до цих даних вони можуть бути отримані з кеша.

Сучасні UNIX-системи дещо відрізняються за своєю архітектурою.



  • У них виділено окремий менеджер пам'яті, відповідальний за підтримку віртуальної пам'яті.

  • Стандартом для реалізації інтерфейсу файлової системи є віртуальна файлова система, що абстрагує цей інтерфейс і дає змогу організувати підтримку різних типів файлових систем.

  • У цих системах підтримується багатопроцесорна обробка, а також багатопотоковість.

Базові архітектурні рішення, такі як доступ до всіх пристроїв введення-виведення через інтерфейс файлової системи або організація системних викликів, залишаються незмінними в усіх реалізаціях UNIX.

Рекомендована література (джерело [20, с.45 – 50], [18, с.25 – 35], [5, с.54 – 60], [9, с.78 - 80], [2, с.30 - 45] ).


Лабораторна робота №4

Тема: Особливості архітектури Windows XP.

План

  1. Рівень абстрагування від устаткування.

  2. Ядро.

  3. Виконавча система.

  4. Драйвери пристроїв.

  5. Віконна і графічна підсистема.

Деякі компоненти Windows XP виконуються у привілейованому режимі, інші компоненти — у режимі користувача. Ми почнемо розгляд системи з компонентів режиму ядра.
Компоненти режиму ядра

У традиційному розумінні ядро ОС містить усі компоненти привілейованого режиму, однак у Windows XP поняття ядра закріплене тільки за одним із цих компонентів.

Рівень абстрагування від устаткування

У Windows XP реалізовано рівень абстрагування від устаткування (у цій системі його називають HAL, hardware abstraction layer). Для різних апаратних конфігурацій фірма Microsoft або сторонні розробники можуть постачати різні реалізації HAL.

Хоча код HAL є дуже ефективним, його використання може знижувати продуктивність застосувань мультимедіа. У такому разі використовують спеціальний пакет DirectX, який дає змогу прикладним програмам звертатися безпосередньо до апаратного забезпечення, обминаючи HAL та інші рівні системи.

Ядро

Ядро Windows XP відповідає за базові операції системи. До його основних функцій належать:



  • перемикання контексту, збереження і відновлення стану потоків;

  • планування виконання потоків;

  • реалізація засобів підтримки апаратного забезпечення, складніших за засоби HAL (наприклад, передача керування оброблювачам переривань).

Ядро Windows XP відповідає базовим службам ОС і надає набір механізмів для реалізації політики керування ресурсами.

Основним завданням ядра є якомога ефективніше завантаження процесорів системи. Ядро постійно перебуває в пам'яті, послідовність виконання його інструкцій може порушити тільки переривання (під час виконання коду ядра багатозадачність не підтримується). Для прискорення роботи ядро ніколи не перевіряє правильність параметрів, переданих під час виклику його функцій.

Windows XP не можна віднести до якогось певного класу ОС. Наприклад, хоча за функціональністю ядро системи відповідає поняттю мікроядра, для самої ОС не характерна класична мікроядрова архітектура, оскільки у привілейованому режимі виконуються й інші її компоненти.

Виконавча система

Виконавча система (ВС) Windows XP (Windows XP Executive) - це набір компонентів, відповідальних за найважливіші служби ОС (керування пам'яттю, процесами і потоками, введенням-виведенням тощо).

Компонентами ВС є передусім базові засоби підтримки. Ці засоби використовують у всій системі.

♦ Менеджер об'єктів — відповідає за розподіл ресурсів у системі, підтримуючи їхнє універсальне подання через об'єкти.

♦ Засіб локального виклику процедур (LPC) — забезпечує механізм зв'язку між процесами і підсистемами на одному комп'ютері.

Інші компоненти ВС реалізують найважливіші служби Windows XP. Зупинимося на деяких із них.



Менеджер процесів і потоків — створює та завершує процеси і потоки, а також розподіляє для них ресурси.

Менеджер віртуальної пам'яті - реалізує керування пам'яттю в системі, насамперед підтримку віртуальної пам'яті.

Менеджер введення-виведення - керує периферійними пристроями, надаючи іншим компонентам апаратно-незалежні засоби введення-виведення. Цей менеджер реалізує єдиний інтерфейс для драйверів пристроїв.


  • Менеджер кеша — керує кешуванням для системи введення-виведення. Часто використовувані блоки диска тимчасово зберігаються в пам'яті, наступні операції введення-виведення звертаються до цієї пам'яті, внаслідок чого підвищується продуктивність.

  • Менеджер конфігурації - відповідає за підтримку роботи із системним реєстром (registry) - ієрархічно організованим сховищем інформації про налаштування системи і прикладних програм.

  • Довідковий монітор захисту — забезпечує політику безпеки на ізольованому комп'ютері, тобто захищає системні ресурси.

Драйвери пристроїв

У Windows ХР драйвери не обов'язково пов'язані з апаратними пристроями. Застосування, якому потрібні засоби, доступні в режимі ядра, завжди варто оформляти як драйвер. Це пов'язане з тим, що для зовнішніх розробників режим ядра доступний тільки з коду драйверів. Докладніше реалізацію драйверів Windows XP буде розглянуто в розділі 15.

Віконна і графічна підсистеми

Віконна і графічна підсистеми відповідають за інтерфейс користувача - роботу з вікнами, елементами керування і графічним виведенням.



  • Менеджер вікон — реалізує високорівневі функції. Він керує віконним виведенням, обробляє введення з клавіатури або миші й передає застосуванням повідомлення користувача.

  • Інтерфейс графічних пристроїв (Graphical Device Interface, GDI) — складається з набору базових операцій графічного виведення, які не залежать від конкретного пристрою (креслення ліній, відображення тексту тощо).

  • Драйвери графічних пристроїв (відеокарт, принтерів тощо) — відповідають за взаємодію з контролерами цих пристроїв.

Під час створення вікон або елементів керування запит надходить до менеджера вікон, який для виконання базових графічних операцій звертається до GDI. Потім запит передається драйверу пристрою, затим — апаратному забезпеченню через HAL.
Рекомендована література (джерело [20, с.52 – 54], [18, с.25 – 35], [5, с.54 – 60], [9, с.78 - 80], [2, с.30 - 45] )
Лабораторна робота № 5

Тема: Базові поняття процесів і потоків.

План

  1. Процеси і потоки в сучасних ОС.

  2. Моделі процесів і потоків.

  3. Складові елементи процесів і потоків.

  4. Способи реалізації моделі потоків.

  5. Стани процесів і потоків.

Процеси в UNIX

Базовою концепцією організації обчислень в UNIX є поняття процесів. Процес - це програма, яка виконується. Під час створення нового процесу створюють і деяку віртуальну машину, що його виконує. Процеси в UNIX незалежні, але можуть взаємодіяти під час вико­нання. Ядро системи обслуговує багато незавершених процесів. Кванти часу процесора кожному процесу виділяє диспетчер UNIX почергово.



У випадку перемикання системи між різними процесами, якщо в пам 'яті не вистачає місця, відбувається переписування (swapping) найстаршого процесу па твердий диск і вивільнення місця в пам 'яті для нового процесу Сьогодні переписування поступилось ефективнішому пейджипгу (paging), який на твердий диск переписує не весь процес, а тільки деякі його сторінки.

Система запам'ятовує активний стан програми та даних для всіх незавершених процесів і поновлює їх по черзі. Процеси можуть породжувати інші процеси. Кожен процес має свій ідентифікатор.

Інформація про процеси у вигляді відповідних дескрипторів зберігається в таблиці про­цесів. Сучасні версії UNIX дають змогу зберігати в такій таблиці кілька сотень процесів.

Один з процесів працює постійно. Він має ім'я init і є первинним. Якщо класифікувати процеси UNIX, то можна виділити користувацькі та системні, а також процеси-демони (dae­mons). Більшість процесів має статус користувацьких. Системні - це процеси, орієнтовані на виконання системних функцій, найчастіше звертання до ядра системи як до певної підпрограми. Якщо користувацькому процесу треба виконати системну функцію, він формує системний виклик. З моменту генерування системного виклику процес стає системним. Як бачимо, корис­тувацький та системний процеси - це часто дві фази одного й того ж процесу. Процеси-демони є різновидом системних процесів, які виконуються у фоновому режимі. Вони виконують сис­темні дії, пов'язані з обслуговуванням мережі (так звані listener'n, протоколи), адмініструванням ресурсів (фонове записування та оновлення даних) та ін.

Огже, архітектура UNIX дає змогу сформувати розподілену систему як сукупність процесів, що обмінюються даними. Для обміну інформацією між процесами UNIX пропонує використання:



  • сигналів;

  • семафорів;

  • програмних каналів;

  • черг повідомлень;

  • сегментів пам'яті, що розділяється;

  • спеціальних команд (write, cu, mail);

  • засобів міжмашинної взаємодії (Uucp, tcp/ip, nfs, rfs).

Техніка передавання сигналів між процесами формує реакцію системи на деякі події (натискання на клавіші, знищення процесу, зменшення напруги мережі електроживлення, деякі помилки та збої). Реакція системи на визначені події передбачена за замовчуванням, однак користувач може перехопити таке "переривання" і написати свою програму опрацювання переривання.

Семафори - це цілі числа або масиви цілих чисел, що дають змогу організувати корект­ний доступ до ресурсів системи, які треба використовувати в монопольному режимі. Семафор може тимчасово припинити процес, якщо потрібний йому ресурс зайнятий.

Програмні канали (pipes) - це засіб комунікації між процесами, який дає змогу проце­сам, що виконуються у системі, обмінюватись інформацією, синхронізувати роботу, працювати як одне ціле. Програмний канал - це деякий спеціальний файл, над яким дозволені операції чигання та записування. Спроба записування в канал, для якого нема читання, призведе до затримки процесу-записувача, аж доки не з'явиться процес-читач і навпаки. Для введення-виведення з каналу використовують потокову модель даних. Дані не інтерпретуються і їхня довжина ніяк не обмежена. Визначено неіменовані та іменовані програмні канали. Неіменовані програмні канали налагоджують тільки між процесами-родичами. Іменовані канали можна налагоджувати між довільними процесами. Однак кожний канал є між парою процесів.

Черги повідомлень, як і програмні канали, є засобом взаємодії процесів, однак допус­кають гнучкішу організацію такої взаємодії. Для черг не обов'язкова наявність пари процесів записувач-читач, просто є деяка черга повідомлень, до якої у разі потреби звертаються процеси записувачі і читачі. Для формування черги не використовують потокової моделі даних. Кожне повідомлення має структуру (тип і дані). У ньому можуть бути довільні дані. Розмір повідом­лення обмежений загальним розміром черги, заданим у момент її створення. Його можна читати з черги у довільному порядку. Багато процесів можуть працювати з однією чергою.

Техніка пам'яті спільного використання дає змогу значно пришвидшити обмін даними. У всіх попередньо розглянутих випадках обмін даними відбувався за посередництвом ядра системи. У разі використання спільної пам'яті обмін даними відбувається шляхом записування-читання даних у виділену частину віртуального адресного простору. Для синхронізації взаємодії багатьох процесів з пам'яттю спільного використання застосовують семафори.

У структурах даних ядра зберігається інформація про всі процеси, що виконуються у системі. Для кожного процесу зберігається



  • ідентифікатор процесу PID;

  • ідентифікатор процесу-попередника PPID;

  • таблиця розподілу пам'яті процесу;

  • статус процесу;

  • відомості про ресурси, які він використовує;

  • ідентифікатор власника.

Власником процесу є користувач, який його створив. Параметри P1D та РРШ - це послідовні номери-ідентифікатори процесів. Крім PID та GID, визначено й ефективні параметри - EPID та EGID. Ефективні параметри - це реальні ідентифікатори користувача та групи з урахуванням можливості їхньої зміни.

Новий процес створюють методом клонування старого. Він отримує новий РШ, а потім програму старого процесу замінюють програмою нового.

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

Після закінчення процесу підпрограма _exit повертає процесу-нопереднику код закінчення, який свідчить про його успішність або причину невдачі. Надалі диспетчер більше не запускає процесу, його адресний простір також вивільняється, однак запис про процес збе­рігається доти, доки процес-попередник системним викликом wait не запитає про код виходу. Такі процеси називають процесами-зомбі. В деяких випадках процес-попередник закінчується раніше, ніж процеси-наступники. Тоді ядро системи віддає зомбі-процеси процесу-иопередника первинному процесу init, який, відповідно, повинен звільнити своїх зомбі.



Процесами можна керувати, надсилаючи їм сигнали. Сигнал (аналогічно до переривання в MS DOS) перериває роботу процесу та виконує призначену йому підпрограму опрацювання. Після виконання підпрограми опрацювання сигналу виконання процесу поновлюється. Можна створити свою програму опрацювання сигналу, відмінну від тої, що діє за замовчуванням. Деякі сигнали можна ігнорувати або блокувати.

У кожен момент часу процесові властивий певний стан. Визначено такі стани:



  • виконання (диспетчер виконує процес відповідно до його пріоритету);

  • чекання (процес чекає виконання якоїсь системної операції й отримання відповідного сигналу);

  • зомбі;

  • перебування у свон-пам'яті (це звичайний процес в одному з інших станів, тимчасово перенесений у зовнішню своп-пам'ять);

  • зупинення (процес отримав сигнал STOP, не має права на продовження).



Пріоритетом виконання окремих процесів можна керувати за допомогою параметра nice (ввічливості). Чим менше значення nice, тим вищий пріоритет процесу. Новий процес успад­ковує пріоритет попередника. Власник процесу може тільки збільшити значення nice, змен­шуючи пріоритет власного процесу. Привілейований користувач не обмежений у зміні параметра nice свого процесу.

Головна команда контролю наявних процесів у системі - ps. Команда ps-aux виводить такий список параметрів для кожного процесу. USER- користувач, РШ - ідентифікатор, %CPU - відсоток часу ЦП, виділений для процесу, %МЕМ - відсоток фізичної пам'яті, зайнятої процесом; VSZ - віртуальний обсяг процесу, Кбайт; RSS - кількість кілобайтових сторінок; ТТ-ідентифікатор керівного термінала; STAT-статус процесу; START-час запуску процесу; TIME - час ЦП, використаний процесом; COMMAND - ім'я та аргументи команди запуску процесу.



Якщо треба отримати не разовий відбиток усіх процесів, а статистику за певний проміжок часу, то можна використати програму top.
Рекомендована література (джерело [20, с.55 – 60], [18, с.40 – 50],[5, с.62], [9, с.86 - 95], [5, с.59 - 89], [2, с.90 - 56] )
Лабораторна робота №6

Тема: Перемикання контексту й обробка переривань.

План

  1. Організація перемикання контексту.

  2. Обробка переривань.

  3. Створення процесів.

  4. Ієрархія процесів.

  5. Керування адресним простором під час створення процесів.

Індексоване розміщення файлів

Базовою ідеєю ще одного підходу до розміщення файлів є перелік адрес всіх кластерів файла в його заголовку. Такий заголовок файла дістав назву індексного дескриптора, або і-вузла (inode), а сам підхід - індексованого розміщення файлів.

За індексованого розміщення із кожним файлом пов'язують його індексний дескриптор. Він містить масив із адресами (або номерами) усіх кластерів цього файла, при цьому п-й елемент масиву відповідає п-му кластеру. Індексні дескриптори зберігають окремо від даних файла, для цього звичайно виділяють на початку розділу спеціальну ділянку індексних дескрипторів. В елементі каталогу розміщують номер індексного дескриптора відповідного файла (рис. 3.5).

Під час створення файла на диску розміщують його індексний дескриптор, у якому всі покажчики на кластери спочатку є порожніми. Під час першого записування в п-й кластер файла менеджер вільного простору виділяє вільний кластер і його номер або адресу заносять у відповідний елемент масиву.




3. 5

Цей підхід стійкий до зовнішньої фрагментації й ефективно підтримує як послідовний, так і випадковий доступ (інформація про всі кластери зберігається компактно і може бути зчитана за одну операцію). Для підвищення ефективності індексний дескриптор повністю завантажують у пам'ять, коли процес починає працювати з файлом, і залишають у пам'яті доти, поки ця робота триває.

Структура індексних дескрипторів

Основною проблемою є підбір розміру і завдання оптимальної структури індексного дескриптора, оскільки:



  • з одного боку, зменшення розміру дескриптора може значно зекономити дисковий простір і пам'ять (дескрипторів потрібно створювати значну кількість - по одному на кожний файл, разом вони можуть займати досить багато місця на диску; крім того, для кожного відкритого файла дескриптор буде розташовано в оперативній пам'яті).

  • з іншого боку, дескриптора надто малого розміру може не вистачити для розміщення інформації про всі кластери великого файла.

  • Одне з компромісних розв'язань цієї задачі, яке застосовується вже багато років у UNIX-системах, зображене на рис. 3.6. Під час його опису замість терміна «кластер» вживатимемо його синонім «дисковий блок».

  • У цьому разі індексний дескриптор містить елементи різного призначення.

  • Частина елементів (зазвичай перші 12) безпосередньо вказує на дискові блоки, які називають прямими (direct blocks). Отже, якщо файл може вміститися у 12 дискових блоках (за розміру блоку 4 Кбайт максимальний розмір такого файла становитиме 4096 х 12 = 49 152 байти), усі ці блоки будуть прямо адресовані його індексним дескриптором і жодних додаткових структур даних не буде потрібно.

  • Якщо файлу необхідно для розміщення даних більше, ніж 12 дискових блоків, використовують непряму адресацію першого рівня. У цьому разі 13-й елемент індексного дескриптора вказує не на блок із даними, а на спеціальний непрямий блок першого рівня (single indirect block). Він містить масив адрес наступних блоків файла (за розміру блоку 4 Кбайт, а адреси - 4 байти в ньому міститимуться адреси 1024 блоків, при цьому максимальний розмір файла буде 4096 х (12 + 1024) = 4 234 456 байт).

Якщо файлу потрібно для розміщення більше ніж 1024 + 12 = 1036 дискових блоків, використовують непряму адресацію другого рівня. 14-й елемент індексного дескриптора в цьому разі вказуватиме на непрямий блок другого рівня (double indirect block). Такий блок містить масив з 1024 адрес непрямих блоків першого рівня, кожен із них, як зазначалося, містить масив адрес дискових блоків файла. Тому за допомогою такого блоку можна адресувати 10242 додаткових блоків.

Нарешті, якщо файлу потрібно більше ніж 1036 + 10242 дискових блоків, використовують непряму адресацію третього рівня. Останній 15-й елемент індексного дескриптора вказуватиме на непрямий блок третього рівня (triple in­direct block), що містить масив з 1024 адрес непрямих блоків другого рівня, даючи змогу адресувати додатково 10243 дискових блоків.




3.6

Розмір блоку може відрізнятися від 4 Кбайт. Чим більший блок, тим більшим є розмір, що може бути досягнутий файлом, поки не виникне необхідності у непрямій адресації вищого рівня. 3 іншого боку, більший розмір блоку спричиняє більшу внутрішню фрагментацію.

Можна розподіляти дисковий простір не блоками (кластерами), а їхніми групами (неперервними ділянками із кількох дискових блоків). Такі групи ще називають екстентами (extents). Кожен екстент характеризується довжиною (у блоках) і номером початкового дискового блоку. Коли виникає необхідність виділити кілька неперервно розташованих блоків одночасно, замість цього виділяють лише один екстент потрібної довжини. У результаті обсяг службової інформації, яку потрібно зберігати, може бути скорочений.

Характер перетворення адреси в номер кластера робить цей підхід аналогом сторінкової організації пам'яті, причому індексний дескриптор відповідає таблиці сторінок.



Розріджені файли

Багато операційних систем не зберігають покажчики на дискові блоки файлів у їхніх індексних дескрипторах, поки до них не було доступу для записування. фрагменти, до яких цього доступу не було з моменту створення файла, називають «дірами» (holes), дисковий простір під них не виділяють, але під час розрахунку довжини файла їх враховують. У разі читання вмісту «діри» повертають блоки, заповнені нулями, звертання до диска не відбувається.

На практиці «діри» найчастіше виникають, коли покажчик поточної позиції файла переміщують далеко за його кінець, після чого виконують операцію записування. У результаті розмір файла збільшується без додаткового виділення дискового простору. Подібні файли називають розрідженими файлами (sparse files). Вони реально займають на диску місця набагато менше, ніж їхня довжина, фактично довжина розрідженого файла може перевищувати розмір розділу, на якому він перебуває.
Рекомендована література (джерело [20, с.25 – 30], [18, 50 – 55], [7, с.14 – 24], [9, с.100 - 156], [19, с.54 - 58], [5, с.45 - 47], [19, с.102 - 156] ).

Лабораторне заняття № 7.


Тема: Програмна оболонка Norton Commander.

План

  1. Переваги роботи в графічній оболонці Norton Commander.

  2. Основне призначення функціональних клавіш і їх комбінації.

  3. Головне меню Norton Commander.

  4. Робота з файлами і каталогами в програмній оболонці Norton Commander.

Хід роботи

  1. Завантажте операційну систему MS-DOS на віртуальному диску. (ПускПрограмиConnectixVirtualPC).

  2. Вікно програми розверніть на весь екран.

  3. Завантажте програмну оболонку Norton Commander (C:\Nc).

  4. Відкрити головне меню програмної оболонки NC (F9).

  • Перегляньте кожну команду меню по порядку:

  1. Зробіть повний формат на правій панелі;

  2. Покажіть дерево каталогів на лівій панелі;

  3. Перейдіть на інший диск (якщо це можливо);

  4. Поміняйте місцями диски;

  5. Погасіть і відновіть панелі;

  6. Зробіть чорно-білий режим, а потім звичайний.

  7. На диску С створіть каталог Школа.

  8. Перейдіть у каталог Школа і створіть підкаталоги 1 Клас, 2 Клас, 3 Клас, 4Клас.

  9. Перегляньте вміст каталогу школа.

  10. Скопіюйте каталог Школа з диску С: на диск D: або (А: Е:).

  11. Перемістіть каталог школа з диску D: на диск С: ; (побачити різницю між копіюванням і перенесенням).

  12. Знищіть каталог школа на диску С: .

  13. Вийдіть з програмної оболонки Norton Commander за допомогою команди F10 (Y – N?).

Рекомендована література (джерело [26, с.15 – 16], [9, с.20 – 35], [1, с 15 - 26], [3, с.17 - 19], [4, с.179 - 186], [10, с.80 - 99],[12, с.180 - 197], [7, с.183 - 199], [8, с.158 - 165]).


Лабораторне заняття № 8

Тема: Робота з файлами і каталогами в операційній системі Unix, Linux.

План

  1. Особливості будови файлової системи Linux.

  2. Створення, знищення файлів і каталогів в даній операційній системі.

  3. Порівняння каталогів.

  4. Архівація данних.


В ОС Linux можна виділити три основні частини:

  • ядро, яке реалізує основні функції ОС (керування процесами, пам'яттю, введенням-виведенням тощо);

  • системні бібліотеки, що визначають стандартний набір функцій для використання у застосуваннях (виконання таких функцій не потребує переходу в привілейований режим);

  • системні утиліти (прикладні програми, які виконують спеціалізовані задачі).
  1   2

  • Лабораторне заняття № 7.

  • жүктеу 1.14 Mb.