Логотип коледжу
Оптико-механічний фаховий коледж

Призначення, еволюція та інтерфейси операційних систем

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

Цілі лекції

Після опрацювання матеріалу ви зможете:

  • пояснювати ОС як менеджер ресурсів і розширену, або віртуальну, машину;
  • розрізняти механізм, політику й абстракцію на базових прикладах;
  • описувати основні етапи еволюції ОС;
  • порівнювати походження та призначення Unix/Linux, BSD, Windows NT і macOS;
  • обґрунтовувати вимоги ефективності, надійності, безпеки, зручності й переносності;
  • розрізняти CLI, GUI та API і пояснювати їхню взаємодію;
  • безпечно визначати базові відомості про поточне середовище.

Передумови

Достатньо знати основні частини комп'ютера: процесор, оперативну пам'ять, накопичувач і пристрої введення-виведення. Корисно вміти відкрити термінал. Адміністративні права не потрібні.

1. Місце ОС у комп'ютерній системі

Комп'ютерну систему зручно розглядати шарами:

  1. Апаратне забезпечення виконує машинні інструкції, зберігає біти й передає дані.
  2. Ядро ОС керує процесором, пам'яттю та пристроями й забезпечує захист.
  3. Системні бібліотеки та служби надають програмам узгоджені операції.
  4. Прикладні програми розв'язують задачі користувача.
  5. Користувачі та інші системи взаємодіють із програмами через інтерфейси.

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

2. ОС як менеджер ресурсів

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

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

Керування ресурсом містить дві різні ідеї:

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

Поділ механізму й політики дозволяє змінювати правила планування без повної перебудови механізму перемикання.

Конфлікт цілей

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

3. ОС як розширена віртуальна машина

У цьому означенні віртуальна машина - не обов'язково VirtualBox або гіпервізор. Йдеться про зручну абстрактну машину, яку ОС показує програмі поверх складного обладнання.

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

Інші важливі абстракції:

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

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

Шари взаємодії з операційною системою через CLI, GUI та API

4. Чому операційні системи еволюціонували

Еволюція ОС відповідала на зміну обладнання й способів використання комп'ютерів.

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

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

5. Unix, Linux і BSD

Unix виник наприкінці 1960-х і на початку 1970-х років у Bell Labs. Важливими ідеями стали багатокористувацька робота, ієрархічна файлова система, процеси, канали та невеликі інструменти, які можна поєднувати. Переписування значної частини Unix мовою C сприяло переносності.

BSD (Berkeley Software Distribution) розвивав Unix у Каліфорнійському університеті в Берклі. Сучасні FreeBSD, OpenBSD і NetBSD є окремими ОС зі спільним історичним корінням, але різними пріоритетами. FreeBSD відома цілісною системною розробкою й серверним застосуванням, OpenBSD - увагою до безпеки, NetBSD - переносністю.

Linux - Unix-подібне ядро, започатковане Лінусом Торвальдсом у 1991 році. Разом із системними компонентами GNU та іншими пакетами воно утворює дистрибутиви на зразок Debian, Ubuntu або Fedora. Linux не походить із коду класичного Unix, але підтримує багато Unix-подібних принципів та інтерфейсів.

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

6. Windows NT і macOS

Сімейство Windows NT створювалося як захищена, переносна й багатозадачна система, відмінна від лінії MS-DOS. Архітектурна основа сучасних клієнтських і серверних Windows належить до NT. Застосунки взаємодіють із системними службами через Win32 та інші API, а ядро й Executive керують основними механізмами.

macOS використовує ядро XNU, назва якого розкривається як X is Not Unix. XNU поєднує компоненти Mach, частини BSD і підсистему драйверів I/O Kit. На рівні користувача macOS надає Unix-сумісне середовище та власні графічні фреймворки Apple.

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

СімействоАрхітектурна основаТипові сфери
GNU/Linuxядро Linux і компоненти дистрибутивасервери, хмари, вбудовані системи, настільні системи
BSDцілісні Unix-подібні системи BSDсервери, мережеві пристрої, безпекові рішення
Windows NTядро NT, Executive, HAL та системні службиперсональні комп'ютери, корпоративна інфраструктура, сервери
macOSXNU, системні служби та фреймворки Appleкомп'ютери Mac, розробка й творчі застосунки

7. Вимоги до сучасної ОС

Оцінка ОС потребує кількох критеріїв:

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

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

8. CLI, GUI та API

CLI (Command-Line Interface) приймає текстові команди. Користувач працює через оболонку, наприклад Bash або PowerShell. CLI зручний для автоматизації, повторюваності та віддаленої роботи, але потребує знання команд і точного синтаксису.

GUI (Graphical User Interface) надає вікна, кнопки, меню та інші графічні елементи. GUI полегшує відкриття можливостей і візуальну взаємодію, але довгу повторювану процедуру часто складніше відтворити точно.

API (Application Programming Interface) визначає, як програма звертається до функцій бібліотеки або системи. API призначений насамперед для програмного коду, а не для безпосереднього введення людиною. POSIX API і Win32 API надають операції з файлами, процесами, пам'яттю та іншими об'єктами.

CLI і GUI зазвичай не керують обладнанням напряму. Вони викликають бібліотеки та системні служби через API. Одна дія може бути доступна всіма трьома способами: користувач натискає кнопку, вводить команду або програма викликає функцію.

Безпечна демонстрація середовища

У Linux та інших Unix-подібних середовищах команда лише читає ідентифікаційні відомості:

uname -srm
printf 'Оболонка: %s\n' "$SHELL"

У PowerShell відповідні відомості можна отримати без зміни системи:

$PSVersionTable.PSVersion
[System.Environment]::OSVersion.VersionString

Результати можуть відрізнятися залежно від ОС, архітектури, версії ядра й оболонки. Команда є CLI, а оболонка для її виконання використовує програмні інтерфейси системи.

9. Один запит на різних рівнях

Розглянемо читання файла. На рівні GUI користувач двічі натискає його піктограму. На рівні CLI виконує cat notes.txt. Програма може викликати open() і read() через бібліотечний API. Нижче безпечний приклад працює з даними всередині процесу й не звертається до файлової системи:

from io import StringIO

virtual_file = StringIO("ядро, процес, файл\n")
content = virtual_file.read()
print(content, end="")

Очікуваний результат:

ядро, процес, файл

StringIO створює файлову абстракцію в пам'яті процесу. Важливо розуміти межу цього прикладу: він повністю виконується в User Mode, не потрапляє в ядро й не демонструє жодного системного виклику чи файлового API ОС. Він лише показує, що однаковий інтерфейс read() можна перевикористати для різних об'єктів. Справжній шлях «програма → ядро → накопичувач» розглянемо в лекціях про системні виклики та введення-виведення.

10. Поетапна практична робота

Крок 1. Відтворення

Виконайте лише команди визначення середовища з розділу 8. Запишіть ОС або ядро, архітектуру та версію оболонки. Не робіть висновок про всю архітектуру ОС лише з назви оболонки.

Крок 2. Класифікація

Для кожної дії визначте основний інтерфейс: натискання кнопки «Зберегти», команда pwd, виклик read() у коді. Очікувана класифікація: GUI, CLI, API.

Крок 3. Прикладний аналіз

Сервіс має щоночі формувати звіт, а оператор іноді переглядає його вручну. Запропонуйте поєднання інтерфейсів. Обґрунтований варіант: API для отримання даних, CLI-сценарій для повторюваного запуску, GUI або вебінтерфейс для перегляду оператором. Інтерфейси доповнюють, а не обов'язково замінюють один одного.

Підсумок

  • ОС керує обмеженими ресурсами й узгоджує конкуруючі запити.
  • ОС надає абстракції процесу, файла, адресного простору й сокета, приховуючи апаратні деталі.
  • Механізм відповідає на запитання «як виконати», а політика - «яке рішення обрати».
  • Еволюція ОС пройшла через пакетну обробку, мультипрограмування, поділ часу, персональні, мережеві, мобільні та хмарні системи.
  • Linux є Unix-подібним ядром; BSD-системи мають історичне коріння в Berkeley Software Distribution.
  • Сучасні Windows належать до сімейства Windows NT, а macOS базується на XNU.
  • Вимоги до ОС охоплюють ефективність, надійність, безпеку, зручність, переносність, масштабованість і сумісність.
  • CLI призначений для текстових команд, GUI - для графічної взаємодії, API - для програмного доступу до можливостей системи.

Завдання

1. Який приклад найточніше показує ОС як менеджер ресурсів?

2. Яка абстракція ОС приховує від програми конкретну геометрію та контролер накопичувача?

3. Яке твердження про Unix, Linux і BSD правильне?

4. Яка пара правильно пов'язує сімейство ОС з архітектурною основою?

5. Запишіть абревіатуру інтерфейсу, у якому користувач вводить текстові команди.

6. Для чого прикладна програма використовує API операційної системи?