Перейти до вмісту

Терміни

Тут зібрані 192 терміни курсу разом з англійськими відповідниками. Відповідники тут не для краси: документація, man-сторінки й повідомлення про помилки майже завжди англійською, і треба знати, що саме там шукати.

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

I. Основи

операційна система — operating system
Програма, яка керує залізом і дає всім застосункам однаковий спосіб ним користуватися. модуль 1
ядро — kernel
Частина ОС, що працює з повними правами й напряму розпоряджається залізом. модуль 1
застосунок — application
Програма, написана заради користувача, а не заради обслуговування самої системи. модуль 1
апаратне забезпечення — hardware
Фізична частина машини — процесор, пам'ять, диски, контролери пристроїв. модуль 1
багатозадачність — multitasking
Здатність системи виконувати кілька задач так, ніби вони йдуть одночасно. модуль 1
мультипрограмування — multiprogramming
Тримати в пам'яті кілька програм, щоб процесор не простоював, поки одна з них чекає. модуль 1
поділ часу — time-sharing
Режим, у якому кожен користувач по черзі отримує процесор на короткий проміжок. модуль 1
пакетна обробка — batch processing
Виконання завдань пачками, без участі людини під час самої роботи. модуль 1
система реального часу — real-time system
Система, де важливо не лише що буде зроблено, а й до якого моменту. модуль 1
вбудована система — embedded system
Комп'ютер усередині пристрою, який робить одну задачу й не має звичного інтерфейсу. модуль 1
центральний процесор — CPU
Пристрій, що виконує інструкції програм. модуль 2
режим ядра — kernel mode
Режим процесора, у якому дозволені всі інструкції й доступна вся пам'ять. модуль 2
режим користувача — user mode
Обмежений режим процесора, у якому працюють звичайні програми. модуль 2
кільце захисту — protection ring
Рівень привілеїв процесора; з чотирьох кілець x86 сучасні системи використовують два. модуль 2
переривання — interrupt
Сигнал від пристрою, який змушує процесор відкласти поточну роботу й зайнятися ним. модуль 2
виняток — exception
Подія, породжена самою інструкцією — ділення на нуль, звернення до відсутньої сторінки. модуль 2
пастка — trap
Навмисний виняток, яким програма просить ядро про послугу. модуль 2
обробник переривання — interrupt handler
Код ядра, що виконується у відповідь на переривання. модуль 2
вектор переривань — interrupt vector
Таблиця, у якій за номером переривання лежить адреса його обробника. модуль 2
апаратний таймер — hardware timer
Пристрій, що регулярно перериває процесор і в такий спосіб повертає керування ядру. модуль 2
блок керування пам'яттю — MMU
Вузол процесора, що перетворює віртуальні адреси на фізичні й перевіряє права доступу. модуль 2
кеш — cache
Швидка пам'ять поруч із процесором, де осідають нещодавно використані дані. модуль 2
рядок кешу — cache line
Найменша порція, якою кеш обмінюється з пам'яттю, зазвичай 64 байти. модуль 2
прямий доступ до пам'яті — DMA
Передавання даних між пристроєм і пам'яттю без участі процесора. модуль 2
ядро процесора — core
Окремий обчислювальний блок усередині процесора. модуль 2
когерентність кешів — cache coherence
Узгодження кешів різних ядер, щоб усі бачили одне й те саме значення комірки. модуль 2
NUMA — NUMA
Архітектура, де кожен процесор має власну пам'ять, а до чужої звертається помітно повільніше. модуль 2
системний виклик — system call
Спосіб попросити ядро зробити те, чого програма не має права зробити сама. модуль 3
двійковий інтерфейс застосунків — ABI
Домовленість про регістри, вирівнювання й формат викликів на рівні машинного коду. модуль 3
монолітне ядро — monolithic kernel
Ядро, у якому всі підсистеми працюють в одному адресному просторі. модуль 3
мікроядро — microkernel
Ядро, що лишає в собі мінімум, а драйвери й служби виносить у простір користувача. модуль 3
гібридне ядро — hybrid kernel
Монолітне за будовою ядро, від якого частину служб винесено назовні. модуль 3
уніядро — unikernel
Образ, де застосунок і потрібні йому шматки ядра зібрані в одну програму. модуль 3
модуль ядра — kernel module
Частина коду ядра, яку можна завантажити й вивантажити на працюючій системі. модуль 3
простір користувача — user space
Пам'ять і код звичайних програм, звідки до структур ядра не дотягнутися. модуль 3
простір ядра — kernel space
Пам'ять і код ядра, куди програма не має прямого доступу. модуль 3
контекстне перемикання — context switch
Заміна одного виконуваного процесу на інший зі збереженням і відновленням стану. модуль 3

II. Unix і Linux

POSIX — POSIX
Набір стандартів на системні виклики й утиліти, спільний для Unix-подібних систем. модуль 4
дистрибутив — distribution
Готовий комплект із ядра, набору програм і способу їх оновлювати. модуль 4
оболонка — shell
Програма, яка читає команди й запускає замість вас інші програми. модуль 4
вільне програмне забезпечення — free software
Програми, які дозволено вивчати, змінювати й поширювати далі. модуль 4
відкритий код — open source
Модель розробки з доступним усім вихідним кодом. модуль 4
завантажувач — bootloader
Програма, що знаходить ядро на диску й передає йому керування. модуль 5
таблиця розділів GPT — GPT
Сучасний формат опису розділів диска, без обмежень MBR. модуль 5
головний завантажувальний запис — MBR
Старий формат розділів у першому секторі диска. модуль 5
початковий RAM-диск — initramfs
Тимчасова файлова система в пам'яті з драйверами, потрібними, щоб дістатися справжнього кореня. модуль 5
система ініціалізації — init system
Перший процес системи, який запускає всі служби й наглядає за ними. модуль 5
юніт — unit
Опис керованого systemd об'єкта — служби, монтування, сокета, таймера. модуль 5
ціль — target
Група юнітів, що описує стан, до якого систему треба привести. модуль 5
демон — daemon
Фонова служба, яка працює без термінала й без користувача поруч. модуль 5

III. Процеси і конкурентність

процес — process
Програма, що виконується, разом із власною пам'яттю, відкритими файлами й правами. модуль 6
образ процесу — process image
Вміст пам'яті процесу — код, дані, купа й стек. модуль 6
дескриптор процесу — process control block
Структура ядра, у якій зберігається все, що ядро знає про процес. модуль 6
стан процесу — process state
Позначка того, що процес робить зараз — виконується, чекає, завершився. модуль 6
готовий — ready
Процес міг би виконуватися, але процесор зайнятий кимось іншим. модуль 6
виконується — running
Процес просто зараз займає ядро процесора. модуль 6
заблокований — blocked
Процес чекає на подію й до її настання процесор йому не потрібен. модуль 6
породжений процес — child process
Процес, створений іншим процесом. модуль 6
батьківський процес — parent process
Процес, який створив цей процес і має забрати його код повернення. модуль 6
зомбі-процес — zombie process
Процес уже завершився, але запис про нього лишається, доки батько не забере результат. модуль 6
процес-сирота — orphan process
Процес, чий батько завершився раніше; його усиновлює перший процес системи. модуль 6
сигнал — signal
Коротке асинхронне повідомлення процесу від ядра або від іншого процесу. модуль 6
група процесів — process group
Набір процесів, яким термінал може надіслати сигнал одним рухом. модуль 6
планувальник — scheduler
Частина ядра, яка вирішує, хто виконуватиметься наступним і як довго. модуль 7
планування — scheduling
Розподіл процесорного часу між задачами, що на нього претендують. модуль 7
витісняльне планування — preemptive scheduling
Планувальник може відібрати процесор у задачі, не питаючи її згоди. модуль 7
невитісняльне планування — non-preemptive scheduling
Задача віддає процесор лише тоді, коли сама цього захоче. модуль 7
квант часу — time quantum
Проміжок, який задача виконується до можливого витіснення. модуль 7
черга готових — ready queue
Задачі, які чекають лише на процесор і більше ні на що. модуль 7
час очікування — waiting time
Скільки часу задача провела в черзі, не виконуючись. модуль 7
час обороту — turnaround time
Час від появи задачі до її завершення. модуль 7
час відгуку — response time
Час від появи задачі до моменту, коли вона вперше отримала процесор. модуль 7
пропускна здатність — throughput
Скільки задач система встигає завершити за одиницю часу. модуль 7
спорідненість із ядром — CPU affinity
Прив'язка процесу до певних ядер, щоб не втрачати прогрітий кеш. модуль 7
голодування — starvation
Задача не отримує процесор, бо її постійно обходять інші. модуль 7
старіння — aging
Поступове підвищення пріоритету задачі, яка задовго чекає. модуль 7
потік — thread
Окрема лінія виконання всередині процесу; пам'ять у потоків одна на всіх. модуль 8
багатопотоковість — multithreading
Виконання кількох потоків в одному процесі. модуль 8
потік користувача — user-level thread
Потік, про який ядро не знає; перемикає його бібліотека в самій програмі. модуль 8
потік ядра — kernel-level thread
Потік, який ядро бачить і планує нарівні з процесами. модуль 8
пул потоків — thread pool
Заздалегідь створені потоки, які розбирають задачі зі спільної черги. модуль 8
цикл подій — event loop
Один потік, що по черзі обробляє готові події замість того, щоб блокуватися на кожній. модуль 8
корутина — coroutine
Функція, яку можна зупинити й продовжити, не тримаючи під час паузи цілий потік. модуль 8
локальна пам'ять потоку — thread-local storage
Змінні, у яких кожен потік має власну копію. модуль 8
стан гонитви — race condition
Результат залежить від того, який потік устиг першим. модуль 9
критична секція — critical section
Ділянка коду, у якій одночасно має бути не більше одного потоку. модуль 9
взаємне виключення — mutual exclusion
Гарантія, що до спільного ресурсу звертається лише хтось один. модуль 9
м'ютекс — mutex
Замок, який утримує один потік, а решта на ньому засинають. модуль 9
семафор — semaphore
Лічильник дозволів, що блокує потік, коли дозволів не лишилося. модуль 9
двійковий семафор — binary semaphore
Семафор з одним-єдиним дозволом. модуль 9
лічильний семафор — counting semaphore
Семафор, що пускає всередину наперед задану кількість потоків. модуль 9
умовна змінна — condition variable
Спосіб заснути до настання умови й бути розбудженим, коли вона настане. модуль 9
спін-блокування — spinlock
Замок, на якому потік не спить, а крутиться в циклі й перевіряє знову. модуль 9
атомарна операція — atomic operation
Операція, яку решта потоків бачить або цілком виконаною, або не початою. модуль 9
порівняти й обміняти — compare-and-swap
Атомарно замінити значення за умови, що воно від останнього читання не змінилося. модуль 9
бар'єр пам'яті — memory barrier
Заборона процесору й компілятору переставляти звернення до пам'яті через цю точку. модуль 9
модель пам'яті — memory model
Правила про те, у якому порядку потоки бачать чужі записи в пам'ять. модуль 9
взаємоблокування — deadlock
Кілька потоків тримають ресурси й чекають одне на одного вже назавжди. модуль 9
інверсія пріоритетів — priority inversion
Важлива задача чекає на другорядну, бо та тримає потрібний замок. модуль 9
без блокувань — lock-free
Алгоритм, у якому зупинка одного потоку не спиняє решту. модуль 9
проблема обмеженого буфера — bounded-buffer problem
Класична задача про виробника й споживача, що ділять чергу скінченного розміру. модуль 9
проблема філософів — dining philosophers problem
Класична задача про взаємоблокування, коли для роботи потрібні два ресурси одразу. модуль 9
проблема читачів і письменників — readers-writers problem
Класична задача про доступ, де читати можна разом, а писати лише на самоті. модуль 9

IV. Пам'ять

логічна адреса — logical address
Адреса, яку бачить програма. модуль 10
фізична адреса — physical address
Адреса, яку бачить сама мікросхема пам'яті. модуль 10
адресний простір — address space
Усі адреси, доступні процесу, разом із тим, що за ними лежить. модуль 10
трансляція адрес — address translation
Перетворення логічної адреси на фізичну під час кожного звернення до пам'яті. модуль 10
базовий регістр — base register
Початок ділянки пам'яті процесу при безперервному розподілі. модуль 10
межовий регістр — limit register
Розмір ділянки процесу; звернення за межу дає виняток. модуль 10
безперервний розподіл — contiguous allocation
Схема, за якої процес займає один суцільний шматок пам'яті. модуль 10
внутрішня фрагментація — internal fragmentation
Місце, втрачене всередині виділеного блоку. модуль 10
зовнішня фрагментація — external fragmentation
Вільної пам'яті вистачає, але вона розкидана дрібними шматками. модуль 10
ущільнення — compaction
Переміщення зайнятих блоків, щоб зібрати вільне місце докупи. модуль 10
пейджинг — paging
Розбиття пам'яті на сторінки однакового розміру, які лягають у будь-які вільні фрейми. модуль 11
сторінка — page
Блок віртуальної пам'яті фіксованого розміру, зазвичай 4 КіБ. модуль 11
фрейм — frame
Блок фізичної пам'яті того ж розміру, що й сторінка. модуль 11
таблиця сторінок — page table
Відповідність сторінок фреймам, своя в кожного процесу. модуль 11
багаторівнева таблиця сторінок — multi-level page table
Таблиця, розбита на рівні, щоб не тримати запис для кожної адреси простору. модуль 11
інвертована таблиця сторінок — inverted page table
Один запис на фрейм замість запису на сторінку в кожного процесу. модуль 11
хешована таблиця сторінок — hashed page table
Пошук фрейма за хешем номера сторінки. модуль 11
буфер трансляції адрес — TLB
Невеликий кеш готових перекладів адрес усередині процесора. модуль 11
промах TLB — TLB miss
Готового перекладу в кеші немає, тож доводиться йти в таблицю сторінок. модуль 11
велика сторінка — huge page
Сторінка на 2 МіБ або 1 ГіБ — менше записів у таблиці й менше промахів TLB. модуль 11
сегментація — segmentation
Поділ пам'яті на частини за змістом — код, дані, стек. модуль 11
таблиця сегментів — segment table
Опис початку й довжини кожного сегмента процесу. модуль 11
віртуальна пам'ять — virtual memory
Кожен процес бачить власний адресний простір, більший за наявну фізичну пам'ять. модуль 12
сторінковий виняток — page fault
Процес звернувся до сторінки, якої зараз немає в пам'яті; ядро її туди приносить. модуль 12
підкачка на вимогу — demand paging
Сторінка потрапляє в пам'ять лише тоді, коли до неї справді звернулися. модуль 12
заміщення сторінок — page replacement
Вибір сторінки, яку витіснити, коли вільних фреймів більше немає. модуль 12
біт дійсності — valid-invalid bit
Позначка в таблиці сторінок про те, чи лежить сторінка в пам'яті просто зараз. модуль 12
копіювання під час запису — copy-on-write
Спільну сторінку копіюють лише тоді, коли хтось у неї пише. модуль 12
робочий набір — working set
Сторінки, якими процес користується в поточний період роботи. модуль 12
трешинг — thrashing
Система майже весь час перекачує сторінки замість корисної роботи. модуль 12
свопінг — swapping
Витіснення сторінок на диск заради вільної фізичної пам'яті. модуль 12
файл підкачки — swap file
Місце на диску, куди йдуть витіснені сторінки. модуль 12
кеш сторінок — page cache
Пам'ять, у якій ядро тримає вже прочитані з диска дані про запас. модуль 12
розподільник пам'яті — memory allocator
Код, що видає програмі шматки пам'яті й веде облік вільного місця. модуль 12
механізм відсіву при нестачі пам'яті — OOM killer
Ядро обирає й убиває процес, коли пам'ять вичерпано остаточно. модуль 12

V. Зберігання і ввід-вивід

ввід-вивід — I/O
Обмін даними між програмою й зовнішнім щодо процесора світом. модуль 13
блоковий пристрій — block device
Пристрій, з яким працюють блоками однакового розміру й у довільному порядку. модуль 13
символьний пристрій — character device
Пристрій, з якого читають потік байтів підряд, без довільного доступу. модуль 13
драйвер пристрою — device driver
Код ядра, який знає, як розмовляти з конкретною залізякою. модуль 13
опитування — polling
Періодична перевірка стану пристрою замість очікування переривання від нього. модуль 13
буферизація — buffering
Накопичення даних у пам'яті, щоб рідше турбувати пристрій. модуль 13
блокуючий ввід-вивід — blocking I/O
Виклик не повертається, доки дані не будуть готові. модуль 13
неблокуючий ввід-вивід — non-blocking I/O
Виклик повертається одразу, навіть якщо даних ще немає. модуль 13
мультиплексування вводу-виводу — I/O multiplexing
Одне очікування одразу на багатьох дескрипторах замість потоку на кожен. модуль 13
сектор — sector
Найменша одиниця, яку диск уміє адресувати. модуль 14
логічна адресація блоків — LBA
Наскрізна нумерація блоків диска без згадок про його геометрію. модуль 14
планування запитів до диска — disk scheduling
Порядок, у якому накопичені запити подаються на пристрій. модуль 14
рівень трансляції флеш-пам'яті — FTL
Прошивка SSD, що ховає стирання блоків за звичним інтерфейсом диска. модуль 14
вирівнювання зносу — wear leveling
Рознесення записів по комірках, щоб вони зношувалися рівномірно. модуль 14
смугування — striping
Розкладання даних по кількох дисках заради швидкості. модуль 14
дзеркалювання — mirroring
Той самий вміст на двох дисках одночасно. модуль 14
парність — parity
Надлишкові дані, за якими відновлюють вміст утраченого диска. модуль 14
логічний том — logical volume
Розділ, зібраний із простору кількох фізичних дисків і незалежний від їхніх меж. модуль 14
знімок — snapshot
Зафіксований стан тому на певний момент, який лишається доступним попри подальші зміни. модуль 14
файлова система — file system
Спосіб розкласти файли й каталоги по блоках пристрою і знайти їх потім. модуль 15
віртуальна файлова система — VFS
Шар ядра, що дає всім файловим системам спільний інтерфейс. модуль 15
індексний вузол — inode
Запис із метаданими файлу й переліком його блоків; імені файлу в ньому немає. модуль 15
дескриптор файлу — file descriptor
Число, за яким процес звертається до відкритого ним файлу. модуль 15
жорстке посилання — hard link
Ще одне ім'я для того самого inode. модуль 15
символьне посилання — symbolic link
Файл, усередині якого лежить шлях до іншого файлу. модуль 15
монтування — mounting
Приєднання файлової системи до каталогу в спільному дереві. модуль 15
точка монтування — mount point
Каталог, у якому стає видно вміст приєднаної файлової системи. модуль 15
журналювання — journaling
Запис намірів наперед, щоб після збою було з чого відновити узгодженість. модуль 15
екстент — extent
Суцільний діапазон блоків, описаний одним записом замість переліку. модуль 15
права доступу — permissions
Хто може читати файл, писати в нього й виконувати його. модуль 15
список контролю доступу — ACL
Права для конкретних користувачів понад звичну трійку власник-група-решта. модуль 15

VI. Ізоляція і безпека

автентифікація — authentication
Підтвердження того, що ви саме той, ким назвалися. модуль 16
авторизація — authorization
Перевірка того, чи дозволено вам робити те, що ви просите. модуль 16
дискреційний контроль доступу — DAC
Права на файл визначає його власник. модуль 16
мандатний контроль доступу — MAC
Права визначає системна політика, і власник файлу її не обходить. модуль 16
привілей — capability
Окреме право з тих, що має root, видане процесу без усіх інших. модуль 16
ескалація привілеїв — privilege escalation
Отримання прав, більших за ті, що вам належать. модуль 16
рандомізація адресного простору — ASLR
Випадкове розташування ділянок пам'яті при кожному запуску програми. модуль 16
канарка стека — stack canary
Контрольне значення перед адресою повернення; зіпсоване, воно виказує переповнення. модуль 16
пісочниця — sandbox
Обмежене середовище, у якому програмі дозволено рівно необхідне. модуль 16
модель загроз — threat model
Список того, від кого й від чого ви взагалі захищаєтеся. модуль 16
віртуалізація — virtualization
Виконання цілої операційної системи як програми поверх іншої. модуль 17
гіпервізор — hypervisor
Шар, що створює віртуальні машини й ділить між ними справжнє залізо. модуль 17
гостьова система — guest OS
Операційна система, що працює всередині віртуальної машини. модуль 17
хост — host
Машина, на якій виконуються віртуальні машини або контейнери. модуль 17
паравіртуалізація — paravirtualization
Гостьова система знає, що вона віртуальна, і звертається до гіпервізора напряму. модуль 17
простір імен — namespace
Механізм, що показує процесу лише частину системних ресурсів замість усіх. модуль 17
контрольна група — cgroup
Механізм обмеження й обліку ресурсів для групи процесів. модуль 17
контейнер — container
Процес у власних просторах імен і під обмеженнями cgroups; ядро в нього спільне з хостом. модуль 17
образ контейнера — container image
Набір шарів файлової системи, з яких піднімають контейнер. модуль 17
трасування — tracing
Спостереження за подіями всередині працюючої системи без її зупинки. модуль 18
конфіденційні обчислення — confidential computing
Захист даних під час обробки, зокрема й від власника заліза. модуль 18
жорсткий реальний час — hard real-time
Пропущений строк означає відмову системи. модуль 18
м'який реальний час — soft real-time
Пропущений строк псує якість, але систему не ламає. модуль 18