Сводный план курса «Архитектура операционных систем GNU/Linux»
Linux как инструмент решения задач. Архитектура «цветочек»
- Программное решение пользовательских задач. «Набор решений» vs. «набор инструментов»
- POSIX как инструментарий: программное и инструментальной окружение, командная строка и сценарии, файлы и процессы
- Решение задач переработки информации в стиле «чёрный ящик» (ввод → переработка → вывод)
- Архитектура GNU/Linux системы с точки зрения пользователя. Инструментальное окружение Linux.
- Влияние свободного лицензирования и открытой разработки на Linux как на инструмент решения задач
ДЗ
- Из чего состоит POSIX?
- Чего не хватает «чистому» POSIX-инструментарию
Файловая система. Монтирование. chroot. Инструменты для работы с ФС
- FHS. Выделение каталогов и файловых систем сообразно использованию.
- ФС, поддерживаемые в Linux. Отчего их так много?
Виртуальные ФС: /proc, /sys, tmpfs, aufs, …
- ФС как пространство имён системных объектов
ДЗ
- Команды работы с файлами и каталогами ФС
Файловая система. Индексные дескрипторы. Концепция «текст + файл»
Достоинста и недостатки концепции «текст+файл» (к прошлой лекции )
Типичная архитектура UNIX-подобной ФС («с inode-ами» )
- «Классические» недостатки ФС: фрагментация, единая точка уязвимости, излишний объём метаданных vs. хранение маленьких файлов, медленная работа vs. ненадёжность при сбоях. Борьба с этими недостатками в ФС Ext3.
- Недостатки и legacy «классических» ФС. BTRFS и ZFS.
ДЗ
- Преимущества Ext4 перед Ext3
- Команды работы с файловыми системами (создание, проверка, настройка и т. п.)
Регулярные выражения
- Для чего нужно регулярное выражение?
- Синтаксис базового и расширенного РВ
- Алгоритм сопоставления подстроки РВ по правилу «самый первый самый длинный» (с возвратом к предыдущему состоянию при неудачной гипотезе)
Утилиты, использующие РВ. Использование sed
- Роль РВ в концепции «текст+файл»
ДЗ
- PCRE-подобные РВ: достоинства и недостатки
(это если кому интересно) Реализация РВ с помощью детерминированных конечных автоматов
Обработка нетекстовой информации
- Нетекстовые данные и принцип «текст+файл»
- Перевод в текстовое представление и обработка
- Значащие имена файлов
- Принцип «чёрного ящика» и интерактивность. Диалоговые библиотеки для использования в sh.
- Пакетные обработчики определённых нетекстовых форматов
ДЗ
- Примеры использования значащих имён файлов и перевода в текстовое представление при обработке нетекстовой информации в sh
Vi и Vim
- Задачи интерактивной обработки структурированных текстов
- Vi. Три режима работы: командный, вставки, командной строки и (Vim:) визуальный
- Vi. Команды перемещения
- Vi. Гнездовые команды
- Vi. Командная строка и (Vim:) работа с окнами
- Vi. Карманы.
ДЗ
- Основные отличия Vi от Vim
Vi. Настройки :set
Vi. Теги и (Vim:) работа с подсистемой помощи
Vi: Подсветка синтаксиса; :make и :grep, разное
Vim: Поддержка цикла разработки: :make и :grep
Shell: язык программирования и оболочка
- Основные элементы ЯП и их особенности в shell
- Переменные
- Условные операторы
- Цикл
- Функции
- …
- Возможности по интеграции утилит. Принцип «чёрного ящика».
- Понятие «сценарий» в Linux
- Недостатки «чёрного ящика» и классы задач, для решения которых этот принцип неудобен
ДЗ
- Что -такое «bash-измы»? Зачем нужно/не нужно?
Shell: интерпретатор командной строки и … оболочка. Zsh, Bash и т. п.
- Шаблоны и генерация имён файлов
- Терминалы, termcap / terminfo
- Редактирование командной строки «из коробки» и «удобное»
- История. Что делать с историей нескольких одновременных сеансов?
- Сокращения (aliases) vs. сценарии
- Достраивание
- Настроечные файлы sh (bash? zsh?)
ДЗ
- Настройка современного sh (bash, zsh, …) для комфортного использования
Программируемое достраивание
Взаимодействие процессов: каналы, сигналы и IPC. Группы процессов
- Задачи межпроцессного взаимодействия в концепции «чёрный ящик».
- Поддержка «классического» IPC в Linux. Какие виды IPC используются часто, а какие редко и почему?
- Сигналы. Обработка сигналов в sh.
- Сокеты. Достоинства и недостатки использования сокетов для IPC.
- CGROUPS как инструмент управления процессами
ДЗ
- Достоинства и недостатки введения стандарта на обмен типизированными межпроцессными сообщениями (на примере dbus)
Ядро и модули
- Чем заниматся ядро ОС и зачем ему модули?
- Что такое «стартовый виртуальный диск» (initrd), и что он содержит
- Подгрузка и выгрузка модулей. Зависимость модулей.
- Расположение ядра, initrd и модулей в файловой системе
Параметры ядра (/proc/cmdline) и модулей; «безопасный» режим загрузки
Управление загрузкой модулей: udev, чёрные списки, параметры по умолчанию, загрузка при старте
/proc и sysctl
ДЗ
- Как обеспечивается выбор ядра при загрузке системы?
Примеры использования sysctl в повседневности
Загрузка системы
- Досистемная загрузка, её влияние на последующую загрузку системы
- «Классический» init (sysV init)
/etc/inittab
/etc/rc.d: rc.sysonit, /etc/rc
Старт-стопные сценарии /etc/[rc.d/]init.d/*, аз
Уровни выполнения; старт-стопные сценарии в /etc/[rc.d/]rc#.d/: K##- и S##- ссылки и порядок запуска/останова служб
Утилита chkconfig, зачем нужна. Поддержка chkconfig в старт-стопных сценариях
- Расширеня sysV init и chkconfig: зависимости между службами, параллельный запуск независимых служб и т. п.
- Возможности SystemD и для чего они нужны
ДЗ
Структура /etc/inittab
Возможности xinetd
Виртуализация и изоляция
- Размещение компонентов решения пользовательской задачи в изолированных окружениях: достоинства и недостатки
- Средства полной эмуляции и их применение
- воспроизводящие аппаратные особенности платформы
- достаточные для запуска ПО и ОС
- Средства паравиртуализации и их применение:
- С отказом от эмуляции процесса
- С отказом от виртуализации некоторых периферийных устройств
- Какие виртуальные внешние устройства всё ещё необходимы?
- Средства полной изоляции с частичной виртуализацией и их применение:
- Недостатки и преимущества изоляции в сравнении с паравиртуализацией
- Какие виртуальные внешние устройства всё ещё необходимы?
- Средства частичной изоляции
- Гипервизоры
- Подсистемы запуска «неродных» исполняемых программ (например. Wine)
ДЗ
Возможности cgroups
X.org. Freedesktop.org. Утилиты, реализующие стандарт
- X11. Описание, структура. X.Org как реализация X11.
- Freedesktop.org. Сущности и протоколы, им определяемые.
- Инструментарий.