Архитектура компьютера и операционные системы

Описание

При разработке высоконагруженных систем невозможно не обращать внимание на то, в каком окружении работает код. В компаниях типа Яндекса это, как правило, многочисленные серверы с несколькими многоядерными x86 процессорами под операционной системой Linux. Знание того, как работает процессор и операционная система, позволяет понять некоторые особенности работы реального кода.

В курсе будет разобрана работа ядра миниатюрной UNIX-подобной операционной системы — xv6. Начнём с того как работает процессор и язык ассемблера, далее разберём управление процессами, памятью, работу в мультипроцессорной среде.

Программа:

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

Предварительные требования:

Используется в:

Ссылки

ШАД