Различия между версиями 11 и 12
Версия 11 от 2017-02-20 00:22:52
Размер: 6582
Редактор: FrBrGeorge
Комментарий:
Версия 12 от 2017-03-01 14:01:41
Размер: 6666
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 58: Строка 58:
|| 02 || [[/02_Shell|Кодандная оболочка]]|| FrBrGeorge|| || || ||

Программный интерфейс 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) + перезапуск, запуск по событиям, прочее (systemd) (пример — minimal system)
  • Проблема выдачи прав: root / sudo / демон+утилита / polkit / capabilities
  • Проблема изоляции: просто права доступа, cgroups
  • Графическая подсистема: XOrg, стандарты Freedesktop.org (seat), Wayland
  • Ограничения доступа: SE (а также appArmor / RSBAC )

Материалы

Тема

Лектор

Конспект

Аудио

Видео

01

Командный интерфейс GNU/Linux

FrBrGeorge

02

Кодандная оболочка

FrBrGeorge

Ссылки

photo_2017-02-07_16-00-33.jpg


CategoryLectures

LecturesCMC/Kerrisk2017 (последним исправлял пользователь FrBrGeorge 2017-09-19 14:07:31)