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