Сводный план курса ?Архитектура операционных систем 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
Собственные наработки по vim
- .vimrc
- файлы, используемые в .vimrc (каталог .vim)
- map
- set
- colors/george.vim
Shell: язык программирования и оболочка
- Основные элементы ЯП и их особенности в shell
- Переменные
- Условные операторы
- Цикл
- Функции
- ?
- Возможности по интеграции утилит. Принцип ?черного ящика?.
- Понятие ?сценарий? в Linux
- Недостатки ?черного ящика? и классы задач, для решения которых этот принцип неудобен
- Что -такое ?bash-измы?? Зачем нужно/не нужно?
Собственные наработки
- Сборник собственноручно изготовленных велосипедов (по большей части на shell)
- Библиотека деталей для изготовления велосипедов на shell
Shell: интерпретатор командной строки и ? оболочка. Zsh, Bash и т. п.
- Шаблоны и генерация имен файлов
- Терминалы, termcap / terminfo
- Редактирование командной строки ?из коробки? и ?удобное?
- История. Что делать с историей нескольких одновременных сеансов?
- Сокращения (aliases) vs. сценарии
- Достраивание
- Настроечные файлы sh (bash? zsh?)
- Настройка современного sh (bash, zsh, ?) для комфортного использования
Программируемое достраивание
Собственные наработки (zsh)
- .zlogin
- .zloginout
- .zlogout
- .zprofile
- .zsh_aliases
- .zsh_bind
- .zshenv
- .zshrc
Взаимодействие процессов: каналы, сигналы и 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