Различия между версиями 18 и 19
Версия 18 от 2017-03-16 11:27:24
Размер: 6891
Редактор: FrBrGeorge
Комментарий:
Версия 19 от 2017-03-16 11:27:47
Размер: 6911
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 60: Строка 60:
|| 04 || [[/04_Access|Объекты системы]] || FrBrGeorge || || || || 04 || [[/04_Access|Объекты и субъекты системы]] || 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

Обзор

FrBrGeorge

youtube

02

Запуск процессов

FrBrGeorge

конспект Ивана Уварова

03

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

FrBrGeorge

04

Объекты и субъекты системы

FrBrGeorge

Ссылки

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


CategoryLectures

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