Архитектура компьютера и операционные системы
Описание
При разработке высоконагруженных систем невозможно не обращать внимание на то, в каком окружении работает код. В компаниях типа Яндекса это, как правило, многочисленные серверы с несколькими многоядерными x86 процессорами под операционной системой Linux. Знание того, как работает процессор и операционная система, позволяет понять некоторые особенности работы реального кода.
В курсе будет разобрана работа ядра миниатюрной UNIX-подобной операционной системы — xv6. Начнём с того как работает процессор и язык ассемблера, далее разберём управление процессами, памятью, работу в мультипроцессорной среде.
Программа:
- UNIX и программирование на языке С: командная строка, управление процессами, каналы, сигналы.
- Реализация оболочки командной строки.
- Ассемблер x86: арифметика, переходы, условия и вызовы функций. Стек, перемещение вверх по стеку.
- Линковка программ и формат ELF. Динамическая линковка.
- Понятие контекста и потока исполнения. Реализация легковесных потоков.
- Вытесняющая многозадачность: поддержка со стороны процессора x86 и реализация процессов в ядре UNIX.
- Многоядерная архитектура: когерентность кешей и модели памяти. Примитивы синхронизации в многопоточных программах.
- Планирование процессов на одном ядре и на многих ядрах.
- Внешняя память: жёсткие диски и твердотельные накопители. Принципы работы файловых систем.
- Виртуализация: аппаратная и программная. Двоичная трансляция.