
- •Unix: учебный курс Алексей Федосеев
- •Несколько слов об этом курсе
- •Методические рекомендации Введение для лектора
- •Порядок изучения материалов
- •Часть I. Лекции Глава 1. Введение в операционную систему unix
- •Основные концепции операционных систем Обзор компьютерных систем
- •Назначение операционной системы
- •Операционная система как виртуальная машина
- •Операционная система как менеджер ресурсов
- •Архитектура операционной системы
- •Монолитная операционная система
- •Микроядерная операционная система
- •Место unix в истории вычислительных систем
- •Что было до операционных систем
- •Операционные системы для мэйнфреймов
- •Появление операционной системы unix
- •Развитие операционных систем в глобальных сетях
- •Операционные системы для персональных компьютеров
- •Операционные системы для встраиваемых систем
- •Такой разный unix
- •Классификация операционных систем по назначению
- •Дополнительные материалы
- •Вопросы
- •Презентация
- •Архитектура unix. Файлы и устройства Особенности архитектуры unix
- •Два кита unix: файлы и процессы
- •Беглый взгляд на архитектуру unix
- •Ядро unix
- •Файловая система unix
- •Особенности файловой системы
- •Виртуальная файловая система
- •Дерево каталогов
- •Устройства и драйверы
- •Дополнительные материалы
- •Вопросы
- •Презентация
- •Архитектура unix. Процессы
- •Управление памятью
- •Управление процессами
- •Контекст процесса
- •Планирование процессов
- •Создание новых процессов
- •Процессы и потоки
- •Межпроцессное взаимодействие
- •Разделяемая память
- •Переменные окружения
- •Сигналы
- •Дополнительные материалы
- •Вопросы
- •Презентация
- •Глава 2. Использование unix
- •Терминал и командная строка
- •Терминал
- •Управляющие символы
- •Одновременный доступ к системе
- •Командная строка
- •Командная оболочка
- •Приглашение
- •Команды
- •Параметры
- •Шаблоны
- •Перенаправление ввода и вывода
- •Программное окружение
- •Стандартные переменные окружения
- •Служебные символы
- •Процесс выполнения команды
- •Возвращаемое значение
- •Эффективное использование командной строки
- •Редактирование командной строки
- •История команд
- •Автодополнение
- •Средства объединения команд
- •Справочная подсистема
- •Страницы руководства
- •Поиск по руководствам
- •Программа info
- •Документация, поставляемая с программой
- •Интегрированные системы документации
- •Дополнительные материалы
- •Вопросы
- •Презентация
- •Введение в безопасность unix
- •Основы информационной безопасности
- •Политика безопасности
- •Управление доступом
- •Аутентификация и авторизация
- •Концепции безопасности unix
- •Пользователи и группы
- •Права доступа
- •Разделяемые каталоги
- •Подмена идентификатора процесса
- •Ограничения базовой модели доступа и её расширения
- •Суперпользователь
- •Аутентификация пользователей
- •Управление пользователями и правами доступа База данных пользователей системы
- •Изменение базы данных пользователей
- •Изменение прав доступа
- •Ограничения сеанса пользователя
- •Дополнительные материалы
- •Вопросы
- •Презентация
- •Сеть в unix
- •Введение в сети
- •Семиуровневая модель osi
- •Физический уровень
- •Канальный уровень
- •Сетевой уровень
- •Протоколы Internet: tcp/ip
- •Сетевой интерфейс в unix
- •Конфигурация ip-сетей Сетевой адрес
- •Маршрутизация
- •Служебный протокол icmp
- •Информация о соединениях
- •Настройка сети при загрузке системы
- •Службы Internet Служба доменных имён
- •Удалённый терминал
- •Прокси-серверы
- •Межсетевой экран
- •Концепции iptables
- •Дополнительные материалы
- •Вопросы
- •Презентация
- •Глава 3. Базовое администрирование unix
- •Управление службами
- •Загрузка операционной системы Этапы загрузки системы
- •Процесс init
- •Конфигурационный файл init
- •Различия в загрузке unix-подобных систем
- •Системы, наследующие System V
- •Системы, наследующие bsd
- •Системы со смешанной схемой загрузки
- •Системные службы
- •Запуск и остановка служб
- •Автоматическая загрузка служб
- •Какие бывают службы
- •Служба планирования заданий
- •Конфигурация планировщика заданий
- •Запуск программ
- •Сетевые службы
- •Мониторинг и журналирование
- •Служба системного журнала
- •Основные системные журналы
- •Ротация системных журналов
- •Мониторинг пользователей
- •Дополнительные материалы
- •Вопросы
- •Презентация
- •Управление программным обеспечением
- •Управление программным обеспечением: роли и задачи Основные роли в создании и использовании по
- •Задачи системы управления программным обеспечением
- •Формы распространения программного обеспечения в двоичной форме или в исходных текстах?
- •Сборочные процедуры как средство управления по
- •Дистрибутивы
- •Дистрибутивы, основанные на сборке программ из исходных текстов
- •Дистрибутивы, основанные на двоичных пакетах
- •Управление пакетами
- •Задачи менеджера пакетов
- •Менеджер пакетов rpm
- •Работа с репозитариями пакетов: apt
- •Источники программ (репозитории)
- •Дополнительные материалы
- •Вопросы
- •Презентация
- •Часть II. Практические занятия
- •Глава 4. Практические занятия по командам unix
- •Методические указания по основным командам unix
- •Команды по работе с файловой системой
- •Команды по работе с текстом
- •Команды, использующие регулярные выражения
- •Практическое занятие. Работа с файлами в unix
- •Сценарий: Знакомство с каталогами unix
- •Сценарий: Изучение типов файлов в unix
- •Сценарий: Поиск системных журналов
- •Сценарий: Архивирование и деархивирование файлов и каталогов
- •Сценарий: Cоздание новых текстовых файлов
- •Сценарий: Разрезание и склеивание файлов
- •Сценарий: Быстрый анализ текстов
- •Сценарий: Поиск строк по регулярным выражениям
- •Задания для самоподготовки
- •Сценарии практического занятия на тему: Работа с файлами в unix
- •Методические указания по командам управления системой в unix Команды получения сведений о системе
- •Команды по работе с процессами
- •Практическое занятие. Сбор сведений о системе и управление процессами
- •Сценарий: Сбор сведений о системе
- •Сценарий: Управление процессами с помощью сигналов
- •Сценарий: Выполнение задач в фоновом режиме
- •Сценарий: Запуск демонов
- •Сценарий: Изменение приоритетов выполняющихся программ
- •Задания для самоподготовки
- •Сценарии практического занятия на тему: Сбор сведений о системе и управление процессами
- •Глава 5. Практическое занятие по безопасности unix
- •Методические указания по командам управления безопасностью в unix Команды по управлению правами
- •Команды по управлению пользователями
- •Практическое занятие. Управление доступом. Управление пользователями Сценарий: Вход в систему и завершение сеанса
- •Сценарий: Изучение базовых прав доступа
- •Сценарий: Переход в режим суперпользователя
- •Сценарий: Изучение базы данных пользователей
- •Сценарий: Добавление и удаление пользователей
- •Задания для самоподготовки
- •Сценарии практического занятия на тему: Управление доступом. Управление пользователями
- •Глава 6. Практические занятия по сетям в unix
- •Методические указания по командам управления сетью в unix Команды по конфигурированию сети
- •Команды по диагностике сети
- •Сценарий: Настройка таблицы маршрутизации
- •Сценарий: Изучение службы доменных имён
- •Сценарий: Простая диагностика работы сети
- •Сценарий: Работа по удалённому терминалу
- •Задания для самоподготовки
- •Сценарии практического занятия на тему: Управление сетью
- •Практическое занятие. Расширенная диагностика и настройка сети
- •Сценарий: Сканирование локальной сети
- •Сценарий: Сканирование удалённых хостов
- •Сценарий: Настройка сетевого экрана
- •Задания для самоподготовки
- •Сценарии практического занятия на тему: Расширенная диагностика и настройка сети
- •Глава 7. Обзор прикладных программ
- •Программы сетевого обмена sendmail: программа отправления почты
- •Параметры команды
- •Wget: консольный загрузчик файлов
- •Параметры команды
- •Настройка
- •Глава 8. Практические занятия по базовому администрированию unix
- •Методические указания по командам управления службами и журналами Текстовые редакторы
- •Рабочий экран
- •Управляющие клавиши
- •Встроенные команды
- •Настройка
- •Рабочий экран
- •Управляющие клавиши
- •Встроенные команды
- •Настройка
- •Режимы работы
- •Команды по управлению службами
- •Команды по мониторингу пользователей
- •Практическое занятие. Управление службами
- •Сценарий: Загрузка системы
- •Команды по работе с репозитарием пакетов
- •Установка или обновление пакета
- •Удаление установленного пакета
- •Обновление всех установленных пакетов
- •Поиск пакетов
- •Приложение a. Список вопросов
Основные концепции операционных систем Обзор компьютерных систем
Презентация 1-01: обзор компьютерных систем
Все современные компьютерные системы построены по трём принципам Джона фон Неймана: программного управления, однородности памяти и адресности. Эти принципы можно раскрыть следующим образом: программа, состоящая из набора команд, и исходные данные хранятся в общей памяти, каждая ячейка которой имеет свой адрес (набор всех адресов, к которым может обращаться программа, называется адресным пространством); каждая команда вместе с данными выбирается из памяти и исполняется процессором, выбор команды осуществляется с помощью специального счётчика команд, который содержит в себе адрес исполняемой в данный момент команды; команды расположены в памяти друг за другом, за счёт чего организуется последовательная выборка из памяти цепочки команд.
На основании этого можно выделить три основных структурных элемента компьютера (см. Рисунок 1.1, «Компоненты компьютерных систем»):
Процессор
Осуществляет контроль за действиями компьютера, а также выполняет функцию обработки данных согласно программе. В современных системах может быть один и больше центральных процессоров.
Основная память
В ней хранятся программы и данные. Как правило является временной (информация сохраняется, пока подаётся питание).
Устройства ввода-вывода
Служат для передачи данных между компьютером и внешним окружением, состоящим из переферийных устройств, в число которых входят внешняя память, коммуникационное оборудование, терминалы.
Перечисленные компоненты вычислительной системы объединяются с помощью системной шины. Термином шина принято обозначать структуры и механизмы, обеспечивающие взаимодействие между разными компонентами системы, в данном случае — процессором, основной памятью и устройствами ввода-вывода.
Рисунок 1.1. Компоненты компьютерных систем
Презентация 1-02: центральный процессор
Центральный процессор извлекает программу из памяти, декодирует и исполняет машинные команды. Обычно команды исполняются последовательно, но иногда возможны переходы к другим участкам программы, например, по заданному условию.
В каждый момент времени процессор может испонять только одну программу. Многие современные операционные системы относятся к многозадачным, т. е. в системе одновременно может исполняться несколько задач, число которых заранее неизвестно. Так как число процессоров конечно, необходимы алгоритмы, позволяющие чередовать исполнения процессов так, чтобы каждый из них получал процессорное время. Этот подход называется псевдопараллелизмом (см. Рисунок 1.2, «Пример пcевдопараллелизма»): каждому процессу выделяется квант процессорного времени, по истечении которого управление передается другому процессу (это действие называют переключением контекста). Также управление может быть передано другому процессу, если исполняемый процесс ожидает появления некоего системного ресурса, например, завершения операции ввода-вывода.
В случае многопроцессорных компьютеров принцип остаётся прежним — на каждом процессоре исполняется только один процесс в каждый момент времени, повышение эффективности достигается «экстенсивным путём», за счёт нескольких одновременно работающих процессоров. Логика алгоритмов псевдопараллелизма несколько усложняется на многопроцессорных архитектурах за счёт необходимости балансировать нагрузку между несколькими процессорами, минимизируя время простоя каждого. Это означает, что каждый следующий квант процессорного времени может быть выдан процессу на любом из доступных процессоров.
Рисунок 1.2. Пример пcевдопараллелизма
Презентация 1-03: память
Конфигурация памяти компьютера определяется в основном тремя параметрами: объём, быстродействие, стоимость. Очевидно, между этими противоречивыми характеристиками существует компромисс, который представляет собой иерархию памяти (см. Рисунок 1.3, «Иерархия видов памяти»). Таким образом, к дорогим устройствам с высокой производительностью и малым объёмом добавляются дешёвые устройства с меньшей скоростью доступа и большим объёмом. При этом ярко выражена функция каждого из уровней: регистровая память хранит операнды команд, кэш используется для хранения самых используемых участков памяти, основная память хранит исполняющиеся программы, внешняя — сохраняет данные и программы между запусками.
Рисунок 1.3. Иерархия видов памяти
Особое значение имеет основная память — в ней хранятся все исполняющиеся программы и данные к ним. Программа может обращаться к любой ячейке памяти из доступного множества (которое называется адресным пространством). Существует несколько видов адресных пространств: реальные (соответствуют ячейкам физической памяти или портам ввода-вывода) и виртуальные (определённым образом проецируемые на реальные адресные пространства). В современных операционных системах каждый процесс обладает своим собственным адресным пространством, так что не может нанести вред памяти других процессов. Подробнее виртуальная память рассматривается в разделе «Управление памятью».
Презентация 1-04: управление вводом-выводом
Современные компьютеры состоят из большого числа узлов. С аппаратной точки зрения, внешние устройства — это все компоненты компьютера за исключением процессора и оперативной памяти. Взаимодействие с внешними устройствами (или устройствами ввода-вывода) осуществляется через специальные устройства, которые называются шинами и представляют собой по сути набор проводов с заданными характеристиками и правилами использования. В современных компьютерах как правило одновременно представлено несколько шин: например, PCI, PCI-Express, USB.
Взаимодействие с устройствами ввода-вывода может происходить тремя способами: программируемый ввод-вывод, ввод-вывод с помощью прерываний, прямой доступ к памяти (Direct Memory Access, DMA).
В первом случае процессор явно обращяется к контроллеру внешнего устройства, вызывая управляющие команды и обмениваясь данными. Так как скорость работы процессора значительно превышает скорость работы внешних устройств, при таком способе обмена простои в работе процессора будут очень велики. Для избежания этой ситуации используется механизм прерываний: выполнение программы в процессоре может быть прервано, когда данные на внешнем устройстве готовы для чтения или записи — при этом запускается специальная функция-обработчик прерывания, затем выполнение исходной программы возобновляется. При использовании прямого доступа к памяти, процессор не участвует в процессе ввода-вывода — за копированием данных из устройства в основную память следит специальный контроллер прямого доступа к памяти.