Ви натискаєте кнопку живлення. Екран спалахує. Ви натискаєте на значок. Здається, що ви диригент оркестру, змахуючи мишею, щоб викликати Spotify або Chrome. Але це відчуття повного контролю – ілюзія.
За склом екрану працює невидимий робітник. Він бере на себе обробку складної та заплутаної логіки, щоб вам не доводилося цим займатися. Цей працівник – операційна система.
Без неї ваше апаратне забезпечення перетворюється просто на дорогий підставний камінь. ОС – це менеджер. Вона вирішує, яка програма отримає доступ до процесора. Вона надсилає дані на принтер. Вона запобігає збоям пам’яті, коли ви відкриваєте занадто багато вкладок.
Найбільші гравці на ринку настільних комп’ютерів
Microsoft Windows, як і раніше, домінує на ринку персональних комп’ютерів. Це стандартне рішення для більшості офісних завдань та ігрових систем. Користувачі Apple працюють у MacOS, яка тісно інтегрована з апаратним забезпеченням.
Потім йде Linux. Ви знаєте його як движок інтернету. На ньому працює більшість серверів, які забезпечують роботу веб-сайтів. Але Linux більше не призначений лише для системних адміністраторів. Дистрибутиви, такі як Ubuntu або Fedora, стали напрочуд зручними для звичайних користувачів, які хочуть уникнути екосистеми Microsoft.
Мобільні та вбудовані екосистеми
Ринок смартфонів є дуополією. Google Android займає глобальну більшість. Apple iOS домінує на ринку преміум-сегменту у таких країнах, як США.
Деякі виробники намагаються уникнути цього дуополізму. Huawei використовує власну HarmonyOS. Samsung активно просуває оболонку One UI. Однак більшість надбудов над Android залишаються заснованими на тому самому ядрі.
Apple не обмежується лише телефонами. iPad працює на iPadOS. Apple Watch – на watchOS. ТВ-приставка Apple TV – на tvOS. Кожна з них є варіацією однієї і тієї ж теми: суворий контроль, висока безпека та глибока інтеграція з апаратним забезпеченням.
За межами екрану
Ми часто забуваємо, що тепер все має свій «мозок». У вашого розумного холодильника він є. У вашого телевізора він є. Мультимедійна система вашого автомобіля працює на користувальницькій операційній системі, часто заснованій на QNX або Android Automotive.
Автомобілі з автономним керуванням – це зовсім інша історія. Їхні операційні системи повинні обробляти дані з датчиків за мілісекунди. Затримка там – це не просто незручність. Це потенційна загроза безпеці.
Що насправді робить програму операційною системою?
Не будь-яке програмне забезпечення є операційною системою. Текстовий процесор – не ОС. Веб-браузер – не ОС.
Щоб отримати звання операційної системи, програмне забезпечення має виконувати три речі:
- Керувати апаратним забезпеченням: Воно безпосередньо взаємодіє з процесором, пам’яттю та накопичувачами.
- Надавати інтерфейс користувача: Воно дає вам спосіб взаємодії, будь то через мишу або сенсорний екран.
- Запускати програми: Воно надає середовище, в якому живуть та виконуються інші програми.
“Операційна система – це міст між вашим наміром і можливостями машини.”
Без цього мосту ви не зможете запускати програми. Ви не можете зберігати файли. Ви не зможете підключитись до Wi-Fi. Ви опинитеся в безвиході.
Чому це важливо для вас
Розуміння вашої операційної системи має значення, тому що вона визначає вашу безпеку, конфіденційність та гнучкість. Оновлення Windows можуть примусово перезавантажувати систему. macOS прив’язує вас до сервісів Apple. Linux пропонує свободу, але потребує обслуговування.
У наступних розділах ми докладно розберемо, як працюють ці системи. Ми розглянемо ядро. Ми обговоримо інтерфейс користувача. І ми покажемо вам, як повернути частину того контролю, яким, як вам здається, ви маєте.

Чому більшість гаджетів обходяться без ОС
Можна припустити, що кожному чіпу, який виконує код, потрібна повноцінна операційна система. Це негаразд. Візьміть комп’ютер усередині вашої мікрохвильової печі. Він виконує одне завдання: нагріває їжу. Вхідні дані надходять із клавіатури. Апаратне забезпечення ніколи не змінюється.
Складна ОС тут це просто баласт. Вона підвищує вартість. Вона додає непотрібної складності. Натомість такі пристрої виконують одне жорстко запрограмоване завдання. Це вбудована система (embedded system). Вона працює постійно. Вона не завантажується. Вона не оновлюється. Вона просто працює.
Але для інших пристроїв правила змінюються.
Цінність операційної системи
Навіщо нам потрібні ОС? Тому що вони забезпечують гнучкість. Без ОС ви обмежені тим, що вирішив виробник обладнання. Операційна система створює можливість:
- Виконувати різні завдання на тому самому обладнанні
- Взаємодіяти з користувачами складними способами
- Адаптуватися до потреб, що змінюються з часом.
Ось тому кожен настільний комп’ютер поставляється з ОС. Ми маємо сімейство Windows від Microsoft. Є MacOS від Apple. Потім йде сімейство UNIX — ковдра, створена зусиллями окремих осіб і корпорацій протягом десятиліть. Крім них, існують сотні інших систем. Вони спеціалізуються на мейнфреймах. Робототехніки. Виробництво. Управління реальному часі.
Сила переносного коду
Ось ключова відмінність між мікрохвильовою піччю та вашим ноутбуком. Один пристрій можна модифікувати. Інше – ні.
Операційні системи використовують код, що переноситься, а не постійні фізичні схеми. Це не випадковість. Це свідомий вибір дизайну. Він дозволяє вносити зміни, не викидаючи пристрій.
Для користувача настільного комп’ютера це означає довговічність. Ви отримуєте оновлення безпеки. Ви встановлюєте патч. Ви додаєте нову програму. Якщо ОС стає занадто роздутою або несумісною, ви можете встановити нову ОС. Ви не викидаєте комп’ютер у сміття. Ви не починаєте з нуля, купуючи нове обладнання. Поки ви знаєте, як отримати доступ до системи, ви можете змінити її поведінку.
Що насправді робить ОС?
Виберіть інтерфейс користувача. Заберіть іконки. Що лишиться?
У найпростішому випадку операційна система виконує дві критичні функції.
По-перше, вона керує ресурсами. Це стосується комп’ютерів, планшетів та смартфонів. Вона обробляє дані процесора. Вона розподіляє пам’ять. Вона керує дисковим простором. Вона все це балансує.
По-друге, вона забезпечує стабільний інтерфейс. Вона дає додаткам узгоджений спосіб взаємодії з обладнанням. Додатку не потрібно знати напруги процесора. Йому не потрібно знати карту секторів жорсткого диска. ОС абстрагує деталі. Вона дозволяє програмному забезпеченню працювати, не знаючи секретів машини.
Саме ця абстракція дозволяє вашому програмному забезпеченню працювати на різних машинах. Саме тому вам не потрібно писати новий драйвер щоразу, коли виходить нова відеокарта. ОС виконує переклад.

Уявіть центральний процесор (ЦП) як переповнену кухню під час вечірнього напливу клієнтів. Декілька програм одночасно вимагають уваги. Одним потрібно більше пам’яті, інші вимагають високої пропускної спроможності введення-виведення. Без ладу настає хаос. На допомогу приходить операційна система. Вона діє як суворий, але справедливий батько. Її завдання — розподіляти ресурси так, щоб жодна програма не «зіпсувала вечірку». Вона керує обмеженими потужностями заради загального блага всіх користувачів та програм, що працюють одночасно.
Чому важлива узгодженість
Друга ключова відповідальність – забезпечення одноманітного інтерфейсу користувача. Це стає критично важливим при розгортанні кількох комп’ютерів одного типу або заміні апаратних компонентів. Стандартизований інтерфейс прикладного програмування (API) є таємним інгредієнтом.
Розробники покладаються на це узгодженість. Вони пишуть код один раз, а потім розгортають його різними машинами. Вони роблять це з високою впевненістю в тому, що програмне забезпечення продовжуватиме функціонувати, навіть якщо цільова машина має інший обсяг оперативної пам’яті або місця на диску. API абстрагує відмінності в апаратному забезпеченні. Розробнику не потрібно переписувати основну логіку кожної конкретної конфігурації.
Обробка апаратного розмаїття
Навіть на унікальній, зібраній вручну машині операційна система забезпечує стабільність під час оновлень. Це тому, що апаратним забезпеченням управляє операційна система, а чи не додаток. Програма лише запитує послуги, а ОС надає їх.
Це створює величезне завдання для розробників. Вони повинні підтримувати гнучкість операційних систем, щоб підтримувати тисячі виробників. Сьогодні ви заходите в магазин і можете зібрати ПК із принтером від бренду A, дисковим накопичувачем від бренду B та спеціалізованим периферійним пристроєм від бренду C. ОС має обробляти будь-яку комбінацію. Вона абстрагує складність і забезпечує роботу вашого програмного забезпечення незалежно від кремнієвого чіпа, що використовується.
Типи операційних систем

Більшість людей просто клацають мишею і очікують, що екран робитиме те, що їм потрібно. Але за цим курсором ховається складна ієрархія типів програмного забезпечення. Вони не всі створені однаково. Категорія залежить від того, чим керує комп’ютер і які програми він запускає.
Системи жорсткого реального часу
Операційні системи реального часу (RTOS) не дбають про ваші шпалери робочого столу. Вони керують обладнанням. Науковими приладами. Промислова автоматизація.
RTOS – це герметичний блок. У ньому немає інтерфейсу користувача. Немає утиліт для кінцевого користувача. Лише чиста функція. Мета – точність. Конкретна операція повинна займати рівно стільки ж часу щоразу, коли вона виконується.
Чому це важливо? Уявіть складний механізм. Якщо роботизована рука рухається швидше запланованого просто тому, що система простоювала, вона може врізатися у щось. Катастрофа. Якщо вона рухається повільніше через завантаженість системи, то виробнича лінія зупиняється. Обидва результати є відмовами. Єдиним показником є консистентність (передбачуваність часу відгуку).
Виконання однієї дії за раз
Однокористувацькі, однозадачні системи в певному сенсі є реліктами, але вони існують. Вони дозволяють одній людині робити одну річ. Крапка.
MS-DOS – класичний приклад. Ви відкриваєте програму. Працюєте. Ви не можете завантажити файл у фоновому режимі, доки редагуєте текст. Це лінійно. Просто. Надзвичайно просто.
Сучасний стандарт: однокористувацькі багатозадачні системи
Це те, що ви, ймовірно, використовуєте зараз. Це стандарт для настільних комп’ютерів та ноутбуків. Microsoft Windows. Apple MacOS.
Вони дозволяють вам одночасно виконувати декілька завдань. Ви можете складати документ, завантажувати файл та роздруковувати електронний лист. ОС перемикається між цими завданнями так швидко, що це здається одночасним. Насправді, це не так. Це просто дуже добре вміє перемикати контекст.
Розподіл навантаження: розраховані на багато користувачів системи
Розраховані на багато користувачів ОС дозволяють багатьом людям одночасно отримувати доступ до ресурсів. Але це не вседозволеність.
Система має балансувати вимоги. Кожен користувач одержує окремі ресурси. Якщо програма Користувача А аварійно завершує роботу, Користувач Б цього не помітить. Unix. VMS. Мейнфрейми, такі як MVS. Це «важковаговики» для корпоративних середовищ, де стабільність для спільноти користувачів є непорушною вимогою.
Розподілені обчислення
Розподілені операційні системи управляють не однією машиною, а мережею їх.
Замість одного суперкомп’ютер вирішував велике завдання, ОС розбиває їх у частини. Ці частини відправляються на багато менших комп’ютерів. Ви бачите це у величезних серверних фермах. Але це використовується не лише корпораціями. Ентузіасти та викладачі створюють свої власні розподілені системи, використовуючи дешеві машини. Іноді навіть перепрофільовані ігрові консолі.
Це спосіб поєднати обчислювальну потужність, не купуючи суперкомп’ютер.
Не плутайте мережеві технології з розрахованим на багато користувачів доступом
Тут стає незрозуміло. Розрахована на багато користувачів система не те ж саме, що однокористувальна система в мережі.
Працюєте у компанії? Швидше за все, ви використовуєте однопользовательскую систему. Адміністратор контролює, що ви можете встановити. Ви можете друкувати на спільному принтері. Ви можете отримати доступ до файлового сервера документів відділу.
Це мережні технології. Не розрахований на багато користувачів доступ. Сама ОС не надає права одночасного доступу різним користувачам цієї конкретної локальної машині. Вона легко взаємодіє з іншими машинами.
Процес завантаження: як ОС бере управління на себе
Коли ви вмикаєте харчування, ОС не запускається відразу. Спочатку працює прошивка.
На старих ПК це був BIOS. На нових машинах використовується UEFI (Unified Extensible Firmware Interface – уніфікований інтерфейс прошивки, що розширюється). Цей код перевіряє обладнання. Чи все працює? У UEFI він також перевіряє, чи є завантажувальне програмне забезпечення легітимним. Secure Boot (безпечне завантаження). Жодних змін.
Після успішного проходження тестів прошивка передає керування завантажувачеві (bootstrap loader).
Завантажувач
Завантажувач має одне завдання. Завантажити ОС на згадку. Запустити її.
Це невелика програма. Грубо кажучи, проста. Вона настроює програми-драйвери для підсистем обладнання. Ділить пам’ять. Частина пам’яті займає ОС. Частина – інформація користувача. Частина – додатки.
Вона створює структуру даних. сигнали. Прапори. Семафори. Це лінії зв’язку між підсистемами та додатками.
Потім він передає ключі операційній системі. Управління перетворюється на інші руки.
Що насправді робить ОС
Після завантаження ОС керує основними функціями. Вони поділяються на такі категорії:
- Управління процесором
- Управління пам’яттю
- Управління пристроями
- Управління сховищем
- Інтерфейс програм
- Інтерфейс користувача
- Управління безпекою системи
Це стовпи. Кожна ОС, від вашого телефону до суперкомп’ютера, торкається цих семи областей. Інструменти, які вони використовують для виконання цих функцій, дуже різняться, але цілі залишаються незмінними. Тримати обладнання у робочому стані. Підтримувати програмне забезпечення. Не дозволяти користувачеві все зламати.
Обчислювальна потужність – це обмежений ресурс. Якщо ви хочете, щоб комп’ютер обробляв відеодзвінок, одночасно завантажуючи великий файл і запускаючи перевірку на віруси, процесору доводиться ділити свій час. Не магія. Це математика. І цим керує сувора ієрархія.
Операційна система дивиться не тільки на ваш відкритий додаток. Вона розглядає процеси. Процес – це будь-який фрагмент програмного забезпечення, що виконує дію. Ви можете вважати свій веб-браузер єдиним цілим. Але це негаразд. Так, це процес, але він породжує інші процеси для обробки мережевих запитів, виділення пам’яті та рендерингу. Також існує безліч невидимих процесів, що працюють у фоновому режимі, керують дисковим введенням-виводом або перевіряють систему на наявність шкідливих програм. Планування займається ОС, а не програми, які ви бачите на екрані.
Усередині процесу реальна робота виконується у потоках. Додаток повинен бути як мінімум один процес, і цей процес повинен мати як мінімум один потік. Планувальник управляє потоками до найменшої одиниці виконання. Ця різниця має значення, тому що перемикання потоків відбувається швидше і потребує менше ресурсів, ніж перемикання процесів. Коли ви працюєте з кількома завданнями одночасно, ви не просто перемикаєте вікна. Ви перемикаєте контекст процесора між потоками, що належать різним процесам.
Роль переривань в управлінні процесором
Плавний потік коду постійно переривається реальністю. Преривання — це сигнали, що надсилаються апаратним або програмним забезпеченням, щоб привернути увагу процесора. Уявіть собі нараду, де хтось раптово піднімає руку. Процесор припиняє те, чим він займався, щоб відреагувати на переривання.
Не всі переривання однакові. ОС може іноді маскувати переривання. Це означає, що вона тимчасово ігнорує сигнали від менш критичних джерел для завершення конкретного завдання без переривань. Але деякі переривання не можна ігнорувати. Це неперервні переривання (NMI). Вони вимагають негайних дій незалежно від того, чим процесор зайнятий.
Чому це важливо для вас? Розглянемо акумулятор вашого ноутбука. Якщо заряд падає до критично низького рівня, спрацьовує NMI. Він не чекає, поки текстовий редактор збереже документ. Він негайно ініціює процедуру вимкнення або переходу в режим сну. Ігнорування цього призвело б до втрати даних або пошкодження обладнання. У разі немаскируемых переривань ОС пріоритет віддає цілісності системи, а чи не потоку виконання додатків.
Ілюзія багатозадачності
В однозадачній системі розклад простий. Програма виконується доти, доки не відбудеться переривання або не буде отримано введення від користувача. Але сучасні системи є багатозадачними. ОС має створювати відчуття, що це відбувається одночасно. Навіть із багатоядерними процесорами кожне ядро обробляє лише одне завдання за раз. Ілюзія одночасності створюється рахунок швидкості.
ОС перемикається між процесами тисячі разів на секунду. Це відбувається досить швидко, щоб ви не помічали проміжків. Але механіка процесу точна. Ось що відбувається під час такого перемикання:
- Процес утримує певні ресурси в оперативній пам’яті, регістрах, стеках та чергах.
- ОС виділяє процесу певну кількість тактів процесора.
- Коли ці такти закінчуються, ОС зупиняє процес.
- Вона зберігає стан першого процесу: копіює всі регістри, стеки та черги на згадку. Також фіксується точне значення покажчика інструкції, у якому зупинився процес.
- Вона завантажує стан наступного процесу: відновлює його регістри та черги з пам’яті.
– Другий процес отримує свою чергу.
Це називається перемиканням контексту. Це ефективно, але не безкоштовно. Копіювання пам’яті та оновлення регістрів займає такти. Якщо ви виконуєте завдання, що інтенсивно використовує процесор, часте перемикання контексту може викликати затримки. ОС намагається мінімізувати це, групуючи пов’язані потоки або надаючи процесам з високим пріоритетом більш тривалі часові відрізки.
Чому кількість ядер не вирішує всі проблеми
Ви можете купити 16-ядерний процесор і припустити, що ваші проблеми вирішені. Але це негаразд. Кожне ядро своєю суттю залишається однопоточним виконавцем. Якщо ваше програмне забезпечення погано оптимізовано, воно не використовуватиме всі ці ядра. Воно завантажуватиме одне ядро, поки інші простоюють.
Саме тому важливою є оптимізація програмного забезпечення. Розробники повинні проектувати програми так, щоб вони породжували кілька потоків, які можуть бути заплановані незалежно. Якщо програма однопоточна, вона максимально завантажить одне ядро, залишивши інше дороге обладнання без діла. ОС може планувати запуск інших процесів на цих ядрах, що простоюють, але вона не може розділити однопоточний додаток між ними.
Взаємодія між апаратним та програмним забезпеченням – це постійні переговори. Процесор надає такти. ОС поділяє їх. Програмне забезпечення споживає їх. Коли один із рівнів не може чітко взаємодіяти з іншими, продуктивність страждає. Ви це відчуваєте як затримки. Система сприймає це як неефективність.
Завжди є межа. Незалежно від того, скільки ядер ви додасте, акт перемикання контексту вносить накладні витрати. Чим швидше ви перемикаєтеся, тим більше тактів ви витрачаєте на саме перемикання, а не на обчислення. Це компроміс. Невелика затримка задля видимості паралелізму. Ось ціна сучасних обчислень.
Коли операційна система перемикається між завданнями, вона не просто гадає, що відбувається. Вона спирається на спеціальну структуру даних, звану блоком управління процесом (Process Control Block, PCB). Уявіть цей блок як поєднання посвідчення особистості процесу та його поточного резюме. ОС потребує кожної деталі, щоб призупинити одне завдання і продовжити інше, не втративши контекст.
Кожен блок містить унікальний ідентифікатор. Він вказує, у якій частині коду та даних зупинився процес востаннє. Він фіксує точний стан регістрів та прапорів. У ньому перераховуються відкриті файли. Відстежуються межі пам’яті та стан введення-виведення. Також визначається пріоритет.
Без цих деталей ОС була б сліпа під час перемикання контексту.
Процес не завжди активний. Іноді його призупинено. Можливо, він очікує натискання кнопки. Поки він чекає, не споживає цикли процесора. Він перебуває у режимі простою. Коли надходить введення, статус змінюється. Система переводить його зі стану очікування у стан виконання. Тоді блок керування процесом стає інструкцією. Він вказує на механізм перемикання, як саме відновити виконання.
Це відбувається непомітно. Ви не бачите самого перемикання. Ви бачите лише плавні переходи. Кожному процесу виділяється достатньо часу процесора до виконання своєї роботи. Але є межа. Якщо ви відкриєте занадто багато програм, ОС почне відчувати труднощі. Вона витрачатиме більше циклів на збереження та відновлення регістрів. Черги стануть довшими. Стеки – глибші.
Зрештою система витрачає більше часу на перемикання, ніж виконання корисної роботи. Це називається “тряскою” (thrashing). Це цифровий еквівалент ментального навантаження. Комп’ютер намагається зробити дуже багато одночасно. Він «захлинається». Зазвичай доводиться втручатися. Закривати програми. Перезавантажувати систему. Відновлювати порядок у хаосі.
Розробники намагаються проектувати системи з урахуванням цієї проблеми. Вони створюють механізми захисту. Але ви також можете допомогти. Додати оперативну пам’ять. Закрийте вкладки. Дозвольте ОС ефективно управляти ресурсами.
До цього часу ми розглядали планування для однопроцесорних систем. Більшість сучасних машин мають кілька ядер. ОС має розподіляти роботу між ними. Вона балансує попит та доступні цикли.
Асиметричні операційні системи резервують один процесор лише самої ОС. Прикладні процеси одержують інші процесори. ОС виконує своє обслуговування окремо.
Симетричні операційні системи розподіляють роботу інакше. Вони балансують попит та доступність між усіма процесорами. Навіть якщо працює лише ОС, навантаження розподіляється. Пам’ять також є спільною. Це стосується і багатоядерних чіпів.
Можливо, зараз ви використовуєте симетричну систему. Це поширене у сучасних середовищах.
Якщо ОС – єдина сутність, що вимагає часу процесора, то CPU – не єдине вузьке місце. Управління пам’яттю стає наступним пріоритетом.
Зберігання та керування пам’яттю

Операційні системи насправді є «регулювальниками руху» для пам’яті вашого комп’ютера. Вони мають дві основні завдання. По-перше, вони забезпечують кожному процесу достатній простір роботи, не заважаючи іншим додаткам. По-друге, вони керують різними типами апаратної пам’яті, щоби все працювало максимально швидко.
Перше завдання стосується поділу. ОС створює строгі межі між типами програмного забезпечення та окремими програмами.
Розглянемо найпростіший приклад. Уявіть собі невелику систему з 1 мегабайтом оперативної пам’яті (ОЗУ). Під час завантаження операційна система виділяє 300 кілобайт для себе. Потім вона займає 200 кілобайт у нижній частині пулу для драйверів обладнання. Це залишає рівно 500 кілобайт для реальних додатків.
При запуску програм ОС розподіляє їм частини цього простору, що залишився. Якщо ви відкриєте нову програму, доки інші вже працюють, система може знизити активність відкритих вікон, щоб звільнити ресурси. Але що відбувається, коли ці 500 кілобайт повністю заповнені?
Ви можете придбати більше оперативної пам’яті. Більшість сучасних ПК дозволяють збільшити об’єм із 8 до 16 гігабайт або більше. Але навіть за наявності величезної кількості пам’яті процесор може звертатися лише до однієї адреси за один раз. Більшість вашої оперативної пам’яті простоює, поки центральний процесор (ЦП) обробляє активні дані.
Саме тут вступає у справу управління віртуальною пам’яттю.
ОС постійно вивантажує дані з ОЗУ, що не використовуються, і завантажує дані, які необхідні поточному процесу. Вона створює ілюзію того, що кожен процес має свій власний приватний і великий простір. Це запобігає пошкодженню даних між процесами та підтримує стабільність системи навіть за сильної нестачі фізичної пам’яті.
Але дискове сховище – не єдиний чинник. Операційна система має балансувати потреби між трьома різними рівнями пам’яті, впорядкованими за швидкістю.
Розуміння ієрархії пам’яті та підкачування сторінок
Швидкість має значення. Якщо ЦП доводиться чекати, все сповільнюється. Ієрархія виглядає так:
- Кеш високої швидкості: Це крихітна, неймовірно швидка пам’ять, розташована поряд із ЦП. Контролери кешу пророкують, які дані вам знадобляться найближчим часом, і витягують їх із основної пам’яті ще до того, як ви запросите їх. Вся річ у передбаченні та швидкості.
- Основна пам’ять: Це ваша стандартна оперативна пам’ять (ОЗП). Вона вимірюється в гігабайтах, і її ви збільшуєте, коли комп’ютер починає працювати повільно.
- Вторинна пам’ять: Це жорсткий диск (HDD) або твердотільний накопичувач (SSD). Він значно повільніший за ОЗУ, але пропонує величезний обсяг сховища. В управлінні віртуальною пам’яттю вторинне сховище діє як резервуар-переповнювач для віртуальної оперативної пам’яті.
ОС управляє цими рівнями. Вона переміщає дані блоками, званими сторінками, між доступними типами пам’яті у міру того, як процеси потребують більше ресурсів. Це постійний, невидимий акт балансування.
Одному процесу потрібно більше кешу? ОС переміщує сторінки, щоб задовольнити цю потребу. Іншому потрібно більше фізичної оперативної пам’яті? Вона вивантажує сторінки, що простоюють, на SSD.
Чому це важливо для вас? Тому що це дозволяє вашому комп’ютеру одночасно запускати кілька важких програм без збоїв. Без такого управління ваша система зупинилася в той момент, коли оперативна пам’ять заповниться. ОС підтримує роботу системи, вирішуючи, що залишається на «швидкій смузі», а що «паркується» на «повільній смузі».
Але компроміс завжди полягає у швидкості. Підкачування даних на вторинне сховище вносить затримки. Саме тому наявність більшого обсягу фізичної оперативної пам’яті часто відчувається як прямий приріст продуктивності. Ви знижуєте необхідність у цих дорогих операціях підкачування.
ОС бере на себе складність. Вам залишається лише результат: система, яка запускає кілька додатків, підтримує їхню ізольованість і не відчуває браку простору.
Прихований перекладач у вашій системі
Драйвери – це непомітні посередники у обчисленнях. Ви не бачите їх роботи, але щоразу, коли ви натискаєте клавішу або зберігаєте файл, вони зайняті справою. Шлях між операційною системою (ОС) та практично будь-яким обладнанням, не розпаяним на материнській платі, проходить безпосередньо через ці програми. Їхнє завдання – переклад. Вони перетворюють електричний хаос підсистем обладнання на високорівневу мову, яку операційна система та ваші програми можуть дійсно зрозуміти.
Подумайте про це. ОС бачить дані як файли. Принтер бачить світлові імпульси. SSD-накопичувач бачить рівні напруги у конкретних осередках пам’яті. Драйвери замикають цей розрив. Вони беруть файл, визначений ОС, і переводять його в бітові потоки, що записуються на носій, або лазерні імпульси, спрямовані на папір. Без цього шару перекладу ваш комп’ютер — це купа дорогого металу і кремнію, яка не знає, що з собою робити.
Чому драйвери живуть поза ядром
Драйвери відокремлені від основного ядра операційної системи з конкретної причини: гнучкість. Якби кожна нова вимога вимагала модифікації ядра, перекомпіляції та перерозподілу всієї ОС, ми ніколи не бачили б оновлень. Збереження драйверів у зовнішньому середовищі дозволяє виробникам додавати функціональність у підсистеми обладнання, не торкаючись фундаменту системи.
Цей поділ також означає, що розробники ОС нічого не винні писати кожен драйвер. Виробники обладнання часто створюють власні драйвери або оплачують їх розробку. Це дає їм прямий контроль над оновленням та покращенням можливостей введення-виведення (I/O). Це розподіл праці. ОС надає сцену. Виробник драйверів пише сценарій.
Розрив між драйверами спільноти та корпоративними драйверами
Очікувати на наявність актуальних драйверів легко у Windows або macOS. Великі, прибуткові компанії, що стоять за цими ОС, мають ресурси для забезпечення сумісності. Linux та інші системи з відкритим вихідним кодом вибирають інший шлях. Вони покладаються на розробників спільноти. Ці добровольці жертвують свій час та навички програмування для надання драйверів для систем та периферійних пристроїв. Це праця з кохання. І він зазвичай працює. Але узгодженість може змінюватись в залежності від того, хто саме підтримує код в даний момент.
Буфери та черги: Регулятори руху
Управління введенням-виводом – це не лише переклад. Це ще контроль темпу. ОС управляє I/O через черги та буфери. Це спеціальні сховища, що перехоплюють потік бітів від пристрою. Це може бути клавіатура. Це може бути послідовний порт. Буфер утримує ці біти і передає їх процесору з швидкістю, яку може обробити ЦП.
Чому це важливо? Тому що процеси конкурують під час процесора. ОС інструктує буфер продовжувати прийом введення від пристрою, навіть якщо зайнятий процесор. Він припиняє відправлення даних у ЦП доти, доки процес, який використовує це введення, не буде припинено. Коли цей процес відновлює роботу, буфер вивільняє накопичені дані.
Цей механізм дозволяє пристроям із високою швидкістю працювати на повну потужність. Клавіатура може обробляти швидкі натискання клавіш. Модем може впоратися з великими обсягами даних. Навіть коли процесор перевантажений і може негайно обробити введення, система дає збій. Дані чекають у буфері. Це проста концепція. Вона запобігає втраті даних в умовах високого навантаження.
Реальність реального часу
Управління усіма цими ресурсами займає більшість функцій операційної системи. В операційних системах реального часу це може бути практично вся необхідна функціональність. Для ОС загального призначення основною метою забезпечення узгодженого інтерфейсу. Програмам і людям потрібний простий спосіб доступу до можливостей обладнання. Драйвер – це ключ, який відкриває ці двері.
Це не є ідеальним. Драйвери можуть спричинити збої. Вони можуть конфліктувати. Але вони є необхідним зв’язком між вашим наміром та реакцією машини. Без них обладнання сліпо та глухо. З ними воно стає інструментом.
Складність прихована на увазі. Ви натискаєте. Драйвер перекладає. Устаткування діє. Цикл продовжується.
Прикладні програмні інтерфейси (API) вирішують конкретну проблему розробників. Вони усувають потребу розуміти тонкі деталі того, як процесор обробляє інструкції. Подібно до того, як драйвери пристроїв абстрагують складність апаратного забезпечення, API дозволяють програмістам додатків викликати функції операційної системи, не відстежуючи кожен низькорівневий стан обладнання.
Розглянемо створення файлу. Вчений, який записує дані з пристрою, повинен зберегти результати. Операційна система надає функцію API під назвою MakeFile. Програміст пише команду виду:
MakeFile [1, %Name, 2]
Цей єдиний рядок передає складний намір. Число 1 вказує на довільний доступ. Альтернативне значення 0 означало б послідовний файл. %Name безпосередньо підставляє ім’я файлу з введення користувача. Число 2 визначає поведінку зберігання. Воно вказує на файл змінного розміру. Нуль означає фіксований розмір. Одиниця означає, що файл росте разом із даними, але ніколи не зменшується.
Операційна система перебирає решту роботи. Вона запитує у дискового накопичувача першу доступну вільну область зберігання. Потім вона оновлює метадані файлової системи. Цей запис відстежує початкові та кінцеві блоки, ім’я файлу, тип файлу та статус архівації. Вона фіксує права користувача та тимчасові мітки створення.
Ця абстракція є критично важливою для розробників. Їм не потрібно керувати кодами інструкцій або типами даних для кожного можливого жорсткого диска або стрічкового накопичувача. Операційна система, що підтримується драйверами обладнання, управляє цими деталями, що змінюються. Розробник пише код для API та довіряє системі.
Але ця довіра має свою ціну. API відкривають вектори атак. Хакери можуть використовувати вразливість всередині викликів API для отримання несанкціонованого доступу. Не означає, що API власними силами погані. Це означає, що розробники повинні агресивно усувати слабкість. Безпека – це не функція; це базова вимога.
API також є економічними полями битви. Компанії розуміють, що контроль за API означає контроль над сегментом галузі. Деякі розробники безкоштовно надають засоби для читання або перегляду, щоб прив’язати споживачів. Потім вони стягують роялті з інших розробників, програмне забезпечення якого хоче інтегруватися з цими інструментами. Інші випускають API безкоштовно, щоб створювати екосистеми. Стратегія варіюється, але мета завжди одна – контроль над ринком.
Графічні інтерфейси, оболонки та робоче середовище
Якщо API стандартизують те, як програми спілкуються з системою, інтерфейс користувача (UI) структурує те, як люди спілкуються з системою. За останнє десятиліття розробка сильно віддавала перевагу графічному інтерфейсу користувача (GUI). Apple macOS і Microsoft Windows домінують у цьому просторі, захоплюючи переважну частку ринку.
Linux відрізняється. Більшість дистрибутивів включає GUI, але вибір децентралізований. Команда дистрибутива вибирає робоче середовище. Користувачі не прив’язані до неї. Вони можуть змінювати середовища, якщо віддають перевагу. Популярні варіанти включають Cinnamon, GNOME, KDE та Xfce. Ця гнучкість є відмінністю філософії Linux.
Потім командний рядок (CLI). Часто асоціюється з UNIX, цей текстовий інтерфейс покладається на команди, що вводяться. Він може здатися жахливим для користувачів, які звикли до вказівки та клацання мишею. Але він пропонує потужність та гнучкість, яких часто не вистачає GUI. Korn Shell та C Shell є класичними прикладами. Вони надають утиліти, які полегшують маніпулювання функціями ОС для тих, хто знає синтаксис.
Користувачі UNIX часто відкривають кілька вікон оболонки одночасно. Це дозволяє паралельні робочі потоки, якими складніше керувати GUI. Однак користувачі UNIX та Linux не обмежені командним рядком. Вони можуть запускати GUI разом із інструментами CLI.
Windows, macOS та Linux всі пропонують оболонки або програми терміналу. Вони призначені для користувачів, яким потрібний прямий доступ до командного рядка.
Важливо пам’ятати, де ці інтерфейси знаходяться у стеку. UI – це шар над операційною системою. Це програма чи набір програм. Основні функції управління лежать у ядрі. Ядро виконує тяжку роботу. Зв’язки між ядром, UI і допоміжним програмним забезпеченням визначають досвід користувача. Ці відносини визначають, чому macOS відчувається інакше, ніж Windows, або чому Linux пропонує такі різноманітні робочі середовища. Ядро залишається незмінним. Інтерфейс змінюється. І ця відмінність буде продовжувати формувати те, як ми взаємодіємо з комп’ютерами в найближчому майбутньому.
Підключення до мережі — це вже не просто функція. Це базовий рівень. Не можна по-справжньому говорити про сучасну ОС, не визнаючи її постійного обміну даними із серверами та іншими машинами. Розробники покладаються на інтернет як на основний канал для отримання патчів, виправлень безпеки та основних оновлень. Так, ви все ще можете використовувати DVD або USB-накопичувач. Але це стає анахронізмом. Більшість систем просто завантажують все у фоновому режимі, поки ви спите.
Однак під поверхнею назріває серйозніша суперечність. Йдеться філософії поширення програмного забезпечення. Чи може єдина модель задовольнити як корпоративних гігантів, і звичайних споживачів? Відповідь складна.
Відкритий вихідний код проти закритого
Linux змінив правила гри. Він довів, що програмне забезпечення, створене на принципах відкритого вихідного коду, дійсно може працювати в масштабах всієї індустрії. Це різко контрастує з моделлю закритого вихідного коду, яка домінує на ринку настільних систем. Більшість комерційних драйверів та утиліт поставляються у вигляді виконуваних файлів. Ви отримуєте бінарний файл. Запускаєте його. Ви не бачите вихідного коду. Ви не можете його вивчати. Ви не можете змінити його. Це чорна скринька.
Відкритий вихідний код перевертає цю ситуацію. Оригінальні вихідні матеріали доступні для всіх. Ви можете читати їх. Ви можете адаптувати їх. Ви можете створити на їх основі щось нове та поділитися цим з іншими. Це цикл прозорості. Саме ця філософія породила інструменти, які ми часто сприймаємо як належне. GIMP для обробки зображень. LibreOffice для тих, хто відмовляється платити за Word. Apache – двигун, що забезпечує роботу більшості сайтів.
Закриті сади мобільних пристроїв
Подивіться на свій телефон. Зауважте, наскільки чистим є інтерфейс? Це зроблено навмисно. Споживчі пристрої спеціально приховують операційну систему від очей користувача. Чому? Тому що користувачі можуть зламати все. Вони можуть видалити потрібні компоненти. Вони можуть перетворити свої пристрої на «цеглу», намагаючись «оптимізувати» те, що не потребує оптимізації.
Тому виробники блокують доступ. Але вони залишають щілину у дверях. “Режим розробника” або “режим програміста”. Якщо знати, куди дивитися, ви можете отримати доступ до нього. Але як тільки ви потрапляєте всередину, повідець виявляється коротким. Вам дозволено вносити зміни, але тільки в обмеженому діапазоні. Вам не дають ключів від усього царства. Тільки запасний ключ від сараю.
Це створює дивну дихотомію. На настільних комп’ютерах ви маєте свободу (і відповідальність) вносити зміни. На мобільних пристроях ви маєте зручність ціною контролю. Який підхід найкращий для довгострокового здоров’я нашої цифрової інфраструктури? Кордони розмиваються, але фундаментальний компроміс залишається незмінним. Або ви бачите, як працюють механізми, або просто полюбляєте поїздку.































































