Конспект лекцій з дисципліни «операційні системи»

Лекція № 1. Основні поняття

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

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

У складі системного ПО можна виділити дві складові: базове і сервісне.

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

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

Тракт даних призначений для виконання набору команд. Апаратне забезпечення і команди, доступні програмісту на мові асемблера. утворюють архітектуру набору команд. Найчастіше даний рівень називають також машинним мовою.

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

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

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

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

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

Приклади операційних систем: UNIX, OS / 2, Windows, Linux, QNX, MacOS, BeOS.

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

Більш детальний перелік функцій наведено нижче:

Прийом від користувача (або від оператора системи) завдань, або команд, сформульованих на відповідній мові, і їх обробка.

Завантаження в оперативну пам'ять підлягають виконанню програм.

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

Ідентифікація всіх програм і даних.

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

Обслуговування всіх операцій введення-виведення.

Забезпечення роботи систем управління файлами (СУФ) і / або систем управління базами даних (СКБД), що дозволяє різко збільшити ефективність всього програмного забезпечення.

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

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

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

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

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

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

Забезпечення роботи систем програмування. за допомогою яких користувачі готують свої програми.

Надання послуг на випадок часткового збою системи.

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

В літературі також часто використовується термін ядро ​​(kernel) операційної системи, який розуміється як синонім супервізора.

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

ресурс вільний і в системі немає запитів від завдань більш високого пріоритету до цього ж ресурсу;

поточний запит і раніше видані запити допускають спільне використання ресурсів;

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

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

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

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

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

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

Емуляція (англ. Emulation) - відтворення програмними або апаратними засобами (або їх комбінацією) роботи інших програм або пристроїв. На відміну від симуляції (simulation), яка лише відтворює поведінку програми, при емуляції ставиться мета точного моделювання стану імітованої системи, для виконання оригінального машинного коду.

Зазвичай емуляцію використовують для здійснення наступних цілей.

Створення нового мікропроцесора. В цьому випадку за допомогою емулятора на іншому процесорі виконуються команди цього ще не існуючого процесора.

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

Тестування програм написаних для різних систем.

При використанні мов високого рівня, іноді в цілях збереження швидкодії виконуваної програми, замість емуляції роблять портування програм в нове середовище. У цьому випадку проводиться переписування заново апаратно-залежних ділянок коду.

Операційна система Windows XP дозволяє виконувати крім основних програм, створених з використанням Win32API, 16-розрядні додатки для Windows 3.х, 16-розрядні DOS-додатки, 16-розрядні додатки для першої версії OS / 2.

Емуляцію Windows в UNIX можна здійснити за допомогою програми WineHQ. Інформація з цього питання і щодо завантаження пакета з відкритим вихідним кодом Wine, що дозволяє емулювати Windows API поверх UNIX, міститься на сайті http://www.winehq.com.

Необхідно зауважити, що WineHQ не є звичайним емулятором. Про це говорить абревіатура цієї програми: «Wine Is Not an Emulator». Замість дії в якості повного емулятора Wine створює «шар сумісності», забезпечуючи альтернативне під'єднання динамічно пов'язуються бібліотек (Dynamic Link Library), які викликають програми Windows, і виконання процесів, сумісних з ядром Windows NT.

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

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

Для подолання цього недоліку було створено безліч програмних «оболонок» - shell (англійською - «раковина»).

Останнім часом операційні оболонки активно витісняються графічними інтерфейсами (Graphical User Interface - GUI), наприклад X-Window з різними менеджерами вікон - KDE, Gnome і т.п. які набувають все більшої популярності у користувачів.

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