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