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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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



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

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

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

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

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

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

захисту ресурсів (наприклад, вони спільно використовують адресний простір сво­го процесу).

 

1.4.2. Керування пам'яттю

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

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

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

 

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

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

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

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

 

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

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

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

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

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

1.4.5. Мережна підтримка

Мережні системи

Сучасні операційні системи пристосовані до роботи в мережі, їх називають ме-режними операційними системами [29]. Засоби мережної підтримки дають ОС можливість:

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

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

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

Розподілені системи

Мережні ОС не приховують від користувача наявність мережі, мережна підтрим­ка в них не визначає структуру системи, а збагачує її додатковими можли­востями. Є також розподілені ОС [6, 45], які дають змогу об'єднати ресурси де­кількох комп'ютерів у розподілену систему. Вона виглядає для користувача як один комп'ютер з декількома процесорами, що працюють паралельно. Розподіле­ні та багатопроцесорні системи є двома основними категоріями ОС, які викори­стовують декілька процесорів. Вони мають багато спільного й будуть розглянуг в розділі 20.

 

1.4.6. Безпека даних

Під безпекою даних в ОС розуміють забезпечення надійності системи (захист даних від втрати у разі збоїв) і захист даних від несанкціонованого доступу (ви­падкового чи навмисного).

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

 

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

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

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

 

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

 

Висновки

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

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

 

 

Контрольні запитання та завдання

1. Які основні функції операційної системи? Чи немає між ними протиріч?

2. Наведіть кілька прикладів просторового і часового розподілу ресурсів комп'ю­тера. Від чого залежить вибір того чи іншого методу розподілу?

3. У чому полягає основна відмінність багатозадачних пакетних систем від сис­тем з розподілом часу? Як можна в рамках однієї системи об'єднати можли­вості обох зазначених систем?

4. Чому більшість вбудованих систем розроблено як системи реального часу? Наведіть приклади вбудованих систем, для яких підтримка режиму реального часу не є обов'язковою.

5. Що спільного й у чому відмінності між мережною і розподіленою операційни­ми системами? Яка з них складніша в реалізації і чому?

Розділ 2

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

♦ Означення архітектури операційних систем

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

♦ Підходи до реалізації архітектури операційних систем

♦ Взаємодія операційної системи та апаратного забезпечення

♦ Взаємодія операційної системи та прикладних програм

♦ Архітектура UNIX і Linux

♦ Архітектура Windows ХР

 

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

У цьому розділі ми ознайомимося з основними поняттями архітектури опера­ційних систем, підходами до її реалізації, особливостями взаємодії ОС із зовні­шнім середовищем. Реалізацію архітектури буде розглянуто на прикладах UNIX, Linux і Windows ХР.

 

 

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

 

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

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

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

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

 

2.1.2. Ядро системи. Привілейований режим і

режим користувача

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

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

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

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

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

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

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

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

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

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

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

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

 

2.2. Реалізація архітектури операційних систем

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

 

2.2.1. Монолітні системи

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

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

 

2.2.2. Багаторівневі системи

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

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

 

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

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

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

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

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

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

 

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

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

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

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

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

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

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

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

 

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

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

 

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

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

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

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

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

 

Система виклики     Апаратні інструкції   Апаратні інструкції реальної ЕОМ

 


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

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

 

2.3. Операційна система та її оточення

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

 



Поделиться:


Последнее изменение этой страницы: 2017-02-06; просмотров: 749; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.117.153.38 (0.061 с.)