- •Сетевые операционные системы
- •Глава 1. Эволюция операционных систем 22
- •Глава 2. Назначение и функции операционной системы 59
- •Глава 3. Архитектура операционной системы 95
- •Глава 4. Процессы и потоки 139
- •Глава 5. Управление памятью 260
- •Глава 6. Аппаратная поддержка мультипрограммирования на примере процессора Pentium 333
- •Глава 7. Ввод-вывод и файловая система 389
- •Глава 8. Дополнительные возможности файловых систем 512
- •Глава 9. Сеть как транспортная система 576
- •Глава 10. Концепции распределенной обработки в сетевых ос 686
- •Глава 11. Сетевые службы 736
- •Глава 12. Сетевая безопасность 855
- •Благодарности
- •Предисловие авторов ко второму изданию
- •Для кого эта книга
- •Структура книги
- •Глава 9 является компактным введением в сетевые технологии, о ее содержании уже рассказывалось при описании отличий второй редакции учебника.
- •От издательства
- •Глава 1. Эволюция операционных систем
- •Первые операционные системы
- •Мультипрограммные операционные системы для мэйнфреймов
- •Первые сетевые операционные системы
- •Операционные системы миникомпьютеров и первые локальные сети
- •Развитие операционных систем в 80-е годы
- •Развитие операционных систем в 90-е годы
- •Современный этап развития операционных систем персональных компьютеров
- •Надежность
- •Простота обслуживания
- •Пользовательский интерфейс
- •Средства информационной самоорганизации
- •Защита данных
- •Виртуальные распределенные вычислительные системы суперкомпьютеров
- •Задачи и упражнения
- •Глава 2. Назначение и функции операционной системы
- •Операционные системы для автономного компьютера
- •Ос как виртуальная машина
- •Ос как система управления ресурсами
- •Функциональные компоненты операционной системы автономного компьютера
- •Управление процессами
- •Управление памятью
- •Управление файлами и внешними устройствами
- •Защита данных и администрирование
- •Интерфейс прикладного программирования
- •Пользовательский интерфейс
- •Сетевые операционные системы
- •Функциональные компоненты сетевой ос
- •Сетевые службы и сетевые сервисы
- •Встроенные сетевые службы и сетевые оболочки
- •Одноранговые и серверные сетевые операционные системы
- •Ос в одноранговых сетях
- •Ос в сетях с выделенными серверами
- •Требования к современным операционным системам
- •Задачи и упражнения
- •Глава 3. Архитектура операционной системы
- •Ядро и вспомогательные модули ос
- •Ядро в привилегированном режиме
- •Многослойная структура ос
- •Аппаратная зависимость и переносимость ос
- •Типовые средства аппаратной поддержки ос
- •Машинно-зависимые компоненты ос
- •Переносимость операционной системы
- •Микроядерная архитектура Концепция
- •Преимущества и недостатки микроядерной архитектуры
- •Совместимость и множественные прикладные среды
- •Двоичная совместимость и совместимость исходных текстов
- •Трансляция библиотек
- •Способы реализации прикладных программных сред
- •Система виртуальных машин
- •Задачи и упражнения
- •Глава 4. Процессы и потоки
- •Мультипрограммирование
- •Мультипрограммирование в системах пакетной обработки
- •Мультипрограммирование в системах разделения времени
- •Мультипрограммирование в системах реального времени
- •Мультипроцессорная обработка
- •Планирование процессов и потоков
- •Понятия «процесс» и «поток»
- •Создание процессов и потоков
- •If(fork()) { действия родительского процесса }
- •Планирование и диспетчеризация потоков
- •Состояния потока
- •Вытесняющие и не вытесняющие алгоритмы планирования
- •Алгоритмы планирования, основанные на квантовании
- •Алгоритмы планирования, основанные на приоритетах
- •Смешанные алгоритмы планирования
- •Планирование в системах реального времени
- •Моменты перепланирования
- •Мультипрограммирование на основе прерываний Назначение и типы прерываний
- •Аппаратная поддержка прерываний
- •Программные прерывания
- •Диспетчеризация и приоритезация прерываний в ос
- •Функции централизованного диспетчера прерываний на примере ос семейства Windows nt
- •Процедуры обработки прерываний и текущий процесс
- •Системные вызовы
- •Синхронизация процессов и потоков Цели и средства синхронизации
- •Необходимость синхронизации и гонки
- •Критическая секция
- •Блокирующие переменные
- •Семафоры
- •Системные синхронизирующие объекты
- •Задачи и упражнения
- •Глава 1. Эволюция операционных систем 22
- •Глава 2. Назначение и функции операционной системы 59
- •Глава 3. Архитектура операционной системы 95
- •Глава 4. Процессы и потоки 139
- •Глава 5. Управление памятью 260
- •Глава 6. Аппаратная поддержка мультипрограммирования на примере процессора Pentium 333
- •Глава 7. Ввод-вывод и файловая система 389
- •Глава 8. Дополнительные возможности файловых систем 512
- •Глава 9. Сеть как транспортная система 576
- •Глава 10. Концепции распределенной обработки в сетевых ос 686
- •Глава 11. Сетевые службы 736
- •Глава 12. Сетевая безопасность 855
- •Глава 5. Управление памятью
- •Функции ос по управлению памятью
- •Типы адресов
- •Риc. 5.6. Общая и индивидуальные части виртуальных адресных пространств
- •Алгоритмы распределения памяти
- •Фиксированные разделы
- •Динамические разделы
- •Перемещаемые разделы
- •Виртуальная память
- •Страничное распределение
- •Оптимизация страничной виртуальной памяти
- •Двухуровневое страничное распределение памяти
- •Сегментно-страничное распределение
- •Разделяемые сегменты памяти
- •Кэширование данных. Универсальная концепция
- •Иерархия памяти
- •Принцип действия кэш-памяти
- •Проблема согласования данных
- •Отображение основной памяти на кэш
- •Схемы выполнения запросов в системах с кэш-памятью
- •Задачи и упражнения
- •Глава 6. Аппаратная поддержка мультипрограммирования на примере процессора Pentium
- •Регистры процессора
- •Привилегированные команды
- •Средства поддержки сегментации памяти
- •Виртуальное адресное пространство
- •Преобразование адресов
- •Защита данных при сегментной организации памяти
- •Сегментно-страничный механизм
- •Средства вызова процедур и задач
- •Вызов процедур
- •Вызов задач
- •Механизм прерываний
- •Кэширование в процессоре Pentium
- •Буфер ассоциативной трансляции
- •Кэш первого уровня
- •Совместная работа кэшей разного уровня
- •Задачи и упражнения
- •Глава 7. Ввод-вывод и файловая система
- •Задачи ос по управлению файлами и устройствами
- •Согласование скоростей обмена и кэширование данных
- •Разделение устройств и данных
- •Программный интерфейс к устройствам
- •Поддержка широкого спектра драйверов
- •Динамическая загрузка и выгрузка драйверов
- •Поддержка файловых систем
- •Синхронный и асинхронный режимы
- •Многослойная модель подсистемы ввода-вывода Общая схема
- •Менеджер ввода-вывода
- •Многоуровневые драйверы
- •Логическая организация файловой системы
- •Цели и задачи файловой системы
- •Типы файлов
- •Иерархическая структура файловой системы
- •Имена файлов
- •Монтирование
- •Атрибуты файлов
- •Логическая организация файла
- •Физическая организация файловой системы
- •Диски, разделы, секторы, кластеры
- •Физическая организация и адресация файла
- •Физическая организация fat
- •Физическая организация s5 и ufs
- •Физическая организация ntfs
- •Структура тома ntfs
- •Структура файлов ntfs
- •Каталоги ntfs
- •Файловые операции фс с запоминанием и без запоминания состояния операций
- •Открытие файла
- •Обмен данными с файлом
- •Блокировки файлов
- •Стандартные файлы ввода и вывода, перенаправление вывода
- •Контроль доступа к файлам Файл как разделяемый ресурс
- •Механизм контроля доступа
- •Контроль доступа в ос Unix
- •Контроль доступа в ос семейства Windows nt Общая характеристика
- •Разрешения на доступ к каталогам и файлам
- •Встроенные группы пользователей и их права
- •Задачи и упражнения
- •Глава 8. Дополнительные возможности файловых систем
- •Специальные файлы и аппаратные драйверы Специальные файлы как универсальный интерфейс
- •Структурирование аппаратных драйверов
- •Структура драйвера ос семейства Windows nt
- •Структура драйвера Unix
- •Блок-ориентированные драйверы
- •Байт-ориентированные драйверы
- •Отображаемые на память файлы
- •Дисковый кэш
- •Традиционный дисковый кэш
- •Дисковый кэш на основе виртуальной памяти
- •Отказоустойчивость файловых и дисковых систем
- •Восстанавливаемость файловых систем. Причины нарушения целостности файловых систем
- •Протоколирование транзакций
- •Восстанавливаемость файловой системы ntfs
- •Избыточные дисковые подсистемы raid
- •Обмен данными между Процессами и потоками
- •Конвейеры
- •Именованные конвейеры
- •Очереди сообщений
- •Разделяемая память
- •Задачи и упражнения
- •Глава 9. Сеть как транспортная система
- •Роль сетевых транспортных средств ос
- •Коммутация пакетов Пакеты
- •Буферы и очереди
- •Методы продвижения пакетов
- •Протокол и стек протоколов
- •Семиуровневая модель osi
- •Физический уровень
- •Канальный уровень
- •Сетевой уровень
- •Транспортный уровень
- •Сеансовый уровень
- •Уровень представления
- •Прикладной уровень
- •Стек tcp/ip Структура стека
- •Классы ip-адресов
- •Использование масок
- •Частные и публичные iр-адреса
- •Символьные имена и dns
- •Протокол dhcp
- •Ручное конфигурирование таблиц
- •Протоколы маршрутизации
- •Реализация стека протоколов в универсальной ос
- •Структура транспортных средств универсальной ос
- •Конфигурирование параметров стека tcp/ip
- •Функциональная схема маршрутизатора
- •Основные характеристики Cisco ios
- •Модульная структура ios
- •Прерывания и управление процессами
- •Организация памяти
- •Работа с буферами пакетов
- •Программная маршрутизация и ускоренная коммутация
- •Поддержка QoS
- •Задачи и упражнения
- •Глава 10. Концепции распределенной обработки в сетевых ос
- •Модели сетевых служб и распределенных приложений
- •Разделение приложений на части
- •Двухзвенные схемы
- •Трехзвенные схемы
- •Механизм передачи сообщений в распределенных системах
- •Синхронизация
- •Буферизация в примитивах передачи сообщений
- •Способы адресации
- •Надежные и ненадежные примитивы
- •Механизм Sockets ос Unix
- •Вызов удаленных процедур
- •Концепция удаленного вызова процедур
- •Генерация стабов
- •Формат rPp-сообщений
- •Связывание клиента с сервером
- •Особенности реализации rpc на примере систем Sun rpc и dce rpc
- •Задачи и упражнения
- •Глава 11. Сетевые службы
- •Сетевая файловая система
- •Модель неоднородной сетевой файловой системы
- •Модель загрузки-выгрузки и модель удаленного доступа
- •Архитектурные решения
- •Производительность, надежность и безопасность сетевой файловой системы
- •Семантика разделения файлов
- •Файловые stateful- и stateless-cepверы
- •Место расположения кэша
- •Способы распространения модификаций
- •Проверка достоверности кэша
- •Репликация файлов
- •Прозрачность репликации
- •Согласование реплик
- •Пример. Протокол передачи файлов ftp
- •Пример. Файловая система nfs
- •Справочная сетевая служба Назначение справочной службы
- •Архитектура справочной службы
- •Децентрализованная модель
- •Централизованная модель
- •Централизованная модель с резервированием
- •Декомпозиция справочной службы на домены
- •Распределенная модель
- •Основные концепции справочной службы Active Directory Домены, контроллеры доменов
- •Объекты
- •Глобальный каталог
- •Иерархическая структура Active Directory
- •Иерархия организационных единиц
- •Иерархия доменов. Доверительные отношения
- •Пространство имен
- •Репликация в Active Directory
- •Межсетевое взаимодействие
- •Основные подходы к организации межсетевого взаимодействия
- •Трансляция
- •Мультиплексирование стеков протоколов
- •Инкапсуляция протоколов
- •Задачи и упражнения
- •Глава 12. Сетевая безопасность
- •Основные понятия безопасности Конфиденциальность, целостность и доступность данных
- •Классификация угроз
- •Системный подход к обеспечению безопасности
- •Политика безопасности
- •Базовые технологии безопасности
- •Шифрование
- •Симметричные алгоритмы шифрования
- •Несимметричные алгоритмы шифрования
- •Криптоалгоритм rsa
- •Односторонние функции шифрования
- •Аутентификация, авторизация, аудит Аутентификация
- •Авторизация доступа
- •Технология защищенного канала
- •Технологии аутентификации Сетевая аутентификация на основе многоразового пароля
- •Аутентификация с использованием одноразового пароля
- •Синхронизация по времени
- •Использование слова-вызова
- •Аутентификация на основе сертификатов
- •Сертифицирующие центры
- •Инфраструктура с открытыми ключами
- •Аутентификация информации
- •Цифровая подпись
- •Аутентификация программных кодов
- •Система Kerberos
- •Первичная аутентификация
- •Получение разрешения на доступ к ресурсному серверу
- •Получение доступа к ресурсу
- •Достоинства и недостатки
- •Задачи и упражнения
- •Ответы к задачам и упражнениям Глава 1
- •Глава 2
- •Глава 3
- •Глава 4
- •Глава 5
- •Глава 6
- •Глава 7
- •Глава 8
- •Глава 9
- •Глава 10
- •Глава 11
- •Глава 12
- •Рекомендуемая литература
- •Сетевые операционные системы: Учебник для вузов
Программная маршрутизация и ускоренная коммутация
Маршрутизаторы Cisco поддерживают несколько вариантов маршрутизации, которые можно разделить на две группы.
В первую группу входят классические варианты маршрутизации, характерные для любого маршрутизатора на основе универсальной ОС и называемые программной маршрутизацией (например, IP- или IPX-маршрутизация).
Во вторую группу входит несколько режимов IP-маршрутизации, которых объединяет то, что они реализуют разными способами одну и ту же идею ускорения маршрутизации за счет предварительного создания дополнительных структур данных, ускоряющих поиск необходимых записей в таблице маршрутизации и ARP-таблице. В результате создается новая таблица, которая содержит не IP-адрес следующего хопа, а его МАС-адрес, то есть конечную цель продвижения пакета. Так как эта структура маршрутной информации похожа на таблицу продвижения коммутаторов, методы, использующие такие таблицы, получили название ускоренной коммутации.
Рассмотрим сначала, как происходит программная маршрутизация, на примере IP-маршрутизации. После того как кадр, содержащий пакет, подлежащий маршрутизации, попадает в локальную или системную очередь, программа обработки прерываний определяет, какому протоколу сетевого уровня соответствует пришедший пакет, и перемещает его во входную очередь процесса, реализующего этот протокол. Для нашего примера это будет очередь пакетов, ожидающих процесс IP Input, который занимается маршрутизацией IP-пакетов. Перемещение в эту очередь может потребовать для некоторых платформ физического перемещения кадра, содержащего пакет, из памяти ввода-вывода в основную память — это, естественно, значительно замедляет маршрутизацию. Для других платформ эта операция выполняется так же, как и в случае перемещения кадра из очереди Tx-ring, то есть за счет изменения значений указателей, но без физического копирования кадра.
После перемещения кадра в очередь процесса Маршрутизации работа секции обработки прерывания заканчивается. Кадр ожидает, когда процесс IP Input, в очередной раз получив управление, обнаружит данный кадр в начале очереди. Далее процесс IP Input производит необходимые операции с таблицей маршрутизации и ARP-таблицей. Просмотр таблицы маршрутизации может занять много времени, если маршрутизатор работает на магистрали Интернета, так как в этом случае таблица может включать несколько десятков тысяч записей. После определения MAC-адреса назначения и выходного интерфейса, через который нужно передать кадр в сеть, процесс IP Input формирует новый кадр, помещая найденный адрес в поле адреса назначения кадра. Кадр, готовый к отправке в сеть, процесс IP Input помещает либо сразу в очередь Tx-ring выходного интерфейса, если она содержит свободный буфер, либо в локальную или системную очередь в противном случае. В первом случае контроллер интерфейса автономно обнаруживает факт наличия нового пакета в очереди Tx-ring и переписывает его в свой буфер, а затем побитно пересылает в канал связи. Во втором случае код обработки прерывания ядра, который вызывается контроллером интерфейса каждый раз после передачи очередного кадра в сеть, переписывает кадр из локальной или системной очереди в очередь Tx-ring.
Теперь посмотрим, как работают методы ускоренной коммутации на примере двух технологий, поддерживаемых маршрутизаторами Cisco: быстрой коммутации и экспресс-продвижения Cisco.
Быстрая коммутация (fast switching) основана на кэшировании информации, находимой процессом IP Input при маршрутизации пакета с определенным адресом назначения при просмотре таблицы маршрутизации и ARP-таблицы. Эта информация связывает IP-адрес назначения с выходным интерфейсом и МАС-адресом следующего хопа, то есть содержит необходимый минимум для формирования и отправки кадра следующему маршрутизатору или узлу назначения.
Если маршрутизатор поддерживает режим быстрого кэширования (он может быть включен по умолчанию или же активизирован вручную), то при маршрутизации очередного пакета маршрутизатор сначала просматривает кэш, а в случае отсутствия там IP-адреса назначения пакета просматривается таблица маршрутизации обычным способом. В том и другом случаях аргументом поиска является IP-адрес назначения, извлеченный из маршрутизируемого пакета.
Для быстрого просмотра кэша Cisco IOS выполняет детерминированное отображение IP-адреса на элемент таблицы кэша. Ранние реализации технологии быстрой коммутации использовали для этого хэширование (см. раздел «Отображение основной памяти на кэш» в главе 5). Для получения номера элемента кэша над старшими и младшими частями IP-адреса дважды применяется побитовая операция «исключающее ИЛИ». Начиная с версии 10, IOS применяет для ускорения поиска в кэше дополнительные структуры индексов, называемые двоичными деревьями.
Сокращение времени маршрутизации при использовании кэша позволило все операции по маршрутизации пакета выполнять в режиме обработки прерывания от контроллера интерфейса без обращения к процессу IP Input. Это, в свою очередь, приводит к дополнительной экономии времени, так как исключает период ожидания очередной итерации процесса IP Input. Таким образом, программа обработки прерываний пытается выполнить все операции по маршрутизации пакета самостоятельно, используя таблицу кэша маршрутов, и только в том случае, когда в кэше нужный адрес отсутствует, пакет помещается в очередь процесса IP Input и обрабатывается так же, как и в случае программной маршрутизации.
Размер кэша для протокола IP определяется автоматически в зависимости от размера свободной памяти, оставшейся после размещения там кодов IOS и буферов пакетов. При изменении состояния таблицы маршрутизации или ARP-таблицы кэш перестраивается. Кроме того, из кэша периодически удаляются «устаревшие» записи, то есть записи, срок жизни которых превысил определенный порог.
Кэширование в режиме быстрой коммутации значительно ускоряет маршрутизацию пакетов в тех случаях, когда состояние кэша является стабильным, то есть его не нужно часто перестраивать, так как в последнем случае затраты на перестройку кэша могут превысить экономию времени от его использования. Практика показывает, что в маршрутизаторах, работающих на периферии Интернета, то есть в корпоративных сетях, набор IP-адресов, к которым обращаются пользователи, является достаточно стабильным и не очень большим. В результате все эти адреса попадают в кэш, который перестраивается редко, так что его применение для таких сетей эффективно.
Маршрутизаторы, работающие на магистрали Интернет, сталкиваются чаще всего с ситуацией, когда кэширование в режиме быстрой коммутации не дает желаемого эффекта из-за постоянной перестройки кэша. Это происходит потому, что пакеты, проходящие через магистраль, адресуются практически ко всему диапазону IP-адресов, так что стабильное подмножество IP-адресов назначения, на которое рассчитано кэширование в режиме быстрой коммутации, просто отсутствует.
Для магистральных маршрутизаторов Cisco IOS предлагает другой метод ускоренной маршрутизации, названный экспресс-продвижением Cisco (Cisco Express Forwarding, CEF). В этом методе также используются записи, аналогичные по структуре записям кэша метода быстрой коммутации, то есть записи, связывающие IP-адрес назначения с выходным интерфейсом и МАС-адресом следующего хопа. Однако основное отличие метода CEF заключается в том, что такие записи, называемые здесь записями таблицы связей (adjacency table), создаются для каждой записи таблицы маршрутизации, а не только для тех записей, которые активно использовались последними. Записи таблицы связей создаются заранее при инициации режима CEF, а не при приходе пакета с определенным адресом, как это происходит в методе быстрой коммутации. В результате таблица связей в режиме CEF перестраивается у магистральных маршрутизаторов гораздо реже, чем кэш в режиме быстрой коммутации, — она перестраивается при изменении адреса и интерфейса следующего хопа, что может произойти, например, из-за отказа линии связи или какого-либо магистрального маршрутизатора.
Для быстрого поиска нужной записи в таблице связей CEF no.IP-адресу назначения IOS использует М-деревья — древовидную структуру индексов, в которой каждому возможному значению IP-адреса соответствует свой путь до искомой записи таблицы связей. В М-дереве у каждого элемента индекса существует 256 потомков, по количеству значений одного байта IP-адреса. Корневой элемент этого дерева указывает на 256 потомков, соответствующих 256 значениям старшего байта адреса, то есть ветви, ведущие от корня, направляются к адресам, имеющим в старшем байте значение 1.0.0.0, 2.0.0.0, 3.0.0.0 и т. д. вплоть до 255.0.0.0. При использовании такого дерева индексов путь по дереву до конечного элемента, указывающего на соответствующую запись таблицы связей, состоит из одного и того же количества промежуточных ветвей, а именно из четырех (по количеству байтов в IP-адресе). Этот метод индексации может показаться слишком громоздким, так как в принципе он ведет к дереву, включающему пути ко всем возможным значениям IP-адресов, то есть более чем к 4 миллиардам конечных элементов. Однако эта громоздкость кажущаяся, многие ветви дерева заканчиваются нулевыми (то есть не ведущими далее) указателями, причем это могут быть не только ветви нижнего, четвертого, уровня, но и ветви более высоких уровней. Усечение дерева происходит благодаря тому, что оно ведет к элементам таблицы связей, а их количество равно количеству записей таблицы маршрутизации, которое даже для магистральных маршрутизаторов Интернета не превышает, как правило, нескольких десятков тысяч (результат агрегирования 1Р-адресов).
