Сводный план курса «Архитектура операционных систем 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. Сущности и протоколы, им определяемые.
  • Инструментарий.

LecturesCMC/GnuLinuxArchitecture2012/CoursePlan (последним исправлял пользователь FrBrGeorge 2012-05-30 13:21:33)