Различия между версиями 25 и 26
Версия 25 от 2017-04-21 15:32:42
Размер: 7314
Редактор: FrBrGeorge
Комментарий:
Версия 26 от 2017-04-21 15:33:36
Размер: 7316
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 64: Строка 64:
|| 08 || [[/08_TLPIMisc|О полезных возможнотях ядра]] || FrBrGeorge || || || || 08 || [[/08_TLPIMisc|О полезных возможностях ядра]] || 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) + перезапуск (supervise), запуск по событиям (cron), прочее (systemd) (пример — minimal system)
  • Проблема выдачи прав: root / sudo / демон+утилита / polkit / capabilities
  • Проблема изоляции: просто права доступа, namespaces, cgroups
  • Графическая подсистема: X.org, стандарты Freedesktop.org (seat), Wayland
  • Ограничения доступа: SE (а также appArmor / RSBAC, yama)

Материалы

Тема

Лектор

Конспект

Видео

01

Обзор

FrBrGeorge

youtube

02

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

FrBrGeorge

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

03

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

FrBrGeorge

04

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

FrBrGeorge

05

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

FrBrGeorge

06

Межпроцессное взаимодействие

FrBrGeorge

07

О полезных инструментах

FrBrGeorge

08

О полезных возможностях ядра

FrBrGeorge

Ссылки

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


CategoryLectures

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