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

Терміни

Тут зібрані 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