Программный интерфейс GNU/Linux
Лектор: Георгий Курячий
Время и место проведения: пятница, 18:00, П-5
Первая лекция: 17/II 2017
Лицам, не имеющим пропуск на факультет ВМК МГУ, рекомендуется на первую лекцию принести одну матовую фотографию 3×4 и паспортные данные для оформления пропуска.
Аннотация
- Название: Программный интерфейс GNU/Linux
- Title: GNU/Linux programming interface
В курсе рассматривается три аспекта организации современных операционных систем и других программных комплектов на базе ядра Linux:
- Программный интерфейс ядра Linux (системные вызовы)
- Командный интерфейс в классическом POSIX-стиле (командная строка)
- Программный интерфейс системообразующих прикладных компонентов операционной системы (шина данных, графическая подсистема и т. п.)
Дополнительно изучаются инструменты построения программных комплектов различной сложности на базе GNU/Linux, а также даётся обзор основных положений архитектуры операционных систем в приложении к GNU/Linux.
Планируется демонстрация и практическое ознакомление с примерами таких программных комплектов.
Требования к слушателям: знание основ языка программирования Си, представление об архитектуре операционных систем вообще, и основанных на GNU/Linux в частности.
Рекомендуемая предварительная литература: учебник по основам GNU/Linux, например Books/LinuxIntro.
Тематический план курса
Концепция: как программы взаимодействуют с компьютером под управлением Linux?
Возможно, стоит начать с командного интерфейса, а затем «спуститься» к ядру и далее в досистемную часть, после чего «подняться» к прикладным системообразующим компонентам.
- Досистемная загрузка: PC-style, EFI, embedded-style (пример — загрузка и запуск какой-нибудь standalone программы)
- Ядро: программный интерфейс (пример — тривиальная программа, вызывающая system call)
- Минимальная программная начинка (примерно в объёме того, что видно в Android-е):
- Больше функций: приложения, утилиты+shell для управления
- Многозадачность: процессы, сигналы, /proc
- Много пользователей: права доступа, root
- Различное аппаратное обеспечение: /dev, /sys
- хранение настроек в /etc
- (пример — какой-нибудь busybox)
- Взаимодействие приложений: D-Bus (пример то же + dbus и приложения, которые через него общаются ??)
- Динамическое изменение аппаратной конфигурации (udev) — что видят приложения (то же + udev и приложения, которые на него реагируют ??)
- Старт всех процессов: (init) + перезапуск (supervise), запуск по событиям (cron), прочее (systemd) (пример — minimal system)
- Проблема выдачи прав: root / sudo / демон+утилита / polkit / capabilities
- Проблема изоляции: просто права доступа, namespaces, cgroups
- Графическая подсистема: X.org, стандарты Freedesktop.org (seat), Wayland
- Ограничения доступа: SE (а также appArmor / RSBAC, yama)
Материалы
№ |
Тема |
Лектор |
Конспект |
Видео |
01 |
|
|||
02 |
|
|||
03 |
|
|
||
04 |
|
|
||
05 |
|
|
||
06 |
|
|
||
07 |
|
|
||
08 |
|
|
Ссылки