- •Сетевые операционные системы
- •Глава 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, так как и к маршрутизаторам других производителей (рис. 9.14).
Рис. 9.14. Функциональная схема маршрутизатора
Как видно на этой схеме, все функции маршрутизатора делятся на уровни в соответствии с многоуровневым подходом, принятым при построении стека коммуникационных протоколов. Однако на рисунке показаны укрупненные уровни, которыми при описании работы маршрутизатора удобнее оперировать, чем семиуровневой моделью.
Нижний уровень — уровень интерфейсов. Он представлен портами маршрутизатора и драйверами протоколов канального уровня. Порт маршрутизатора представляет собой аппаратный элемент, с помощью которого маршрутизатор через соответствующий кабель соединяется с сетью и обменивается данными со своими непосредственными соседями — компьютерами, коммутаторами и другими маршрутизаторами. Порт оснащен контроллером — устройством, которое управляет логикой работы порта совместно с соответствующим драйвером.
Разделение функций между контроллером и драйвером зависит от реализации порта, в данной книге мы не будем вдаваться в детали этого разделения. Для нас главное здесь то, что контроллер и драйвер вместе обеспечивают поддержку некоторого протокола канального уровня, например Ethernet. На рис. 9.14 показаны также порты s1-sN, которые поддерживают такие протоколы глобальных каналов связи, как РРР и Frame Relay.
Работа порта (контроллера и драйвера) по приему пакетов заключается в том, что он принимает из канала связи биты кадра, инкапсулирующего пакет в соответствии с правилами канального протокола, который он реализует. Так, порт Ethernet принимает в свой внутренний буфер биты Ethernet-кадра, и в том случае, когда МAC-адрес назначения кадра совпадает с собственным МАС-адресом порта, выполняет дальнейшую обработку кадра — проверяет его целостность и корректность по контрольной сумме, имеющейся в кадре. Если полученный кадр корректен, он помещается в один из буферов пакетов, организованных в памяти маршрутизатора. Буферы пакетов являются одними из важнейших элементов маршрутизатора, они позволяют ему обрабатывать пульсации трафика в тех случаях, когда скорость поступления пакетов временно превышает возможности маршрутизатора по их продвижению.
Аналогично работают и порты других протоколов, разница только в том, что они поддерживают адресацию и форматы кадров другого стандарта.
После того как пакет попадает в буфер памяти, с ним начинают работать модули, реализующие функции сетевого уровня. Естественно, основной функцией сетевого уровня является маршрутизация. Сегодня это в подавляющем большинстве случаев IP-маршрутизация, но встречаются и другие сетевые протоколы, например IPX, поэтому маршрутизатор обычно является многопротокольным (этот термин применяется к протоколам сетевого уровня).
Если маршрутизатор определяет, что пришедший пакет является IP-пакетом, то для его обработки вызывается модуль протокола IP. Этот модуль выполняет все описанные ранее действия по маршрутизации пакета: Он анализирует таблицу маршрутизации и пытается найти в ней номер сети, совпадающий с номером сети, взятым из адреса назначения обрабатываемого пакета. При совпадении этих номеров маршрут считается найденным, и сетевой протокол извлекает из таблицы маршрутизации IP-адрес следующего хопа — по этому адресу определяется порт маршрутизатора, на который нужно передать пакет. Затем просматривается ARP-таблица1 и в ней по найденному IP-адресу ищется МАС-адрес следующего хопа, необходимый для формирования кадра и отправки его в сеть через выходной порт. Если в ARP-таблице нет соответствия для искомого IP-адреса, то сетевой протокол инициирует ARP-запрос, в результате чего ARP-таблица пополняется новым отображением.
Работа сетевого протокола заканчивается тем, что пакет помещается в выходной буфер соответствующего порта, куда также помещается найденный МАС-адрес. Далее этот пакет, инкапсулированный в кадр соответствующего канального протокола, порт побитно передает в канал связи.
Помимо описанной основной функции по маршрутизации пакетов, сетевой уровень выполняет также ряд дополнительных функций, из которых наиболее важными являются фильтрации пакетов и управление перегрузками.
Фильтрация заключается в проверке дополнительных условий продвижения пакета, которые администратор сети может сконфигурировать для какой- либо подсети назначения или отдельного хоста. Это очень мощный механизм первичного рубежа защиты сети, так как он позволяет, например, пропускать во внутреннюю сеть организации пакеты, исходящие только от филиалов этой организации. Обычно такие фильтры строятся на основе известных диапазонов IP-адресов, поэтому проверка условий таких фильтров — прямая обязанность сетевого уровня маршрутизатора.
Управление перегрузками (congestion management) требуется в тех случаях, когда маршрутизатор не успевает своевременно обрабатывать потоки поступающих пакетов, в результате чего возникают очереди в буферах пакетов, а при их переполнении — и потери пакетов (то есть пакеты, для которых нет места в буфере, отбрасываются). Такие ситуации могут временно возникать в маршрутизаторе даже в том случае, когда в среднем его производительность оказывается достаточной для обработки входящего трафика — причиной являются уже упомянутые пульсации компьютерного трафика. Для того чтобы справляться с временными перегрузками, в маршрутизаторах реализуются так называемые механизмы поддержания качества-обслуживания (Quality of Service, QoS). Мы не будем здесь останавливаться на их детальном описании, отсылая интересующегося читателя к специальной литературе по этой теме (см., например, [1] или [8]), а ограничимся только краткой характеристикой этого подхода.
Механизмы QoS основаны на существовании нескольких выходных очередей к каждому порту вместо одной очереди, как при обычной обработке пакетов. Применяются два основных механизма обслуживания набора очередей — приоритетное обслуживание и взвешенное обслуживание. При приоритетном обслуживании очереди имеют различный приоритет, так что пакеты, помещаемые в более приоритетную очередь, передаются в выходной порт раньше пакетов из менее приоритетных очередей. В самую приоритетную очередь направляются пакеты приложений, которые наиболее чувствительны к задержкам и потерям пакетов, например приложений видеоконференций или 1Р-телефонии. Очевидным недостатком этого механизма является возможность дискриминации пакетов в менее приоритетных очередях, время ожидания в которых теоретически может достигать бесконечности. Для предотвращения таких ситуаций маршрутизаторы ограничивают входной поток высокоприоритетного трафика до уровня, заданного администратором, то есть логика здесь такая: «ваши пакеты будут обслуживаться лучше, чем пакеты других приложений, но только в том случае, если ваш трафик не окажется слишком интенсивным и не будет вытеснять все другие потоки».
Взвешенное обслуживание является более «справедливым» механизмом, так как все очереди обслуживаются циклически, причем у каждой очереди есть свой «вес», соответствующий доле времени, которая выделяется этой очереди для передачи ее пакетов в выходной порт в каждом цикле. Например, администратор может организовать три взвешенные очереди к порту eth1, задав для них веса 10, 50 и 40 % соответственно. Если, например, eth1 имеет пропускную способность 100 Мбит/с, то первой очереди достанется 10 Мбит/с, второй — 50 Мбит/с, а третьей — 40 Мбит/с пропускной способности в среднем. Зная эти доли, администратор может направлять в различные очереди трафик различных приложений, обеспечивая приемлемое время ожидания пакетов в каждой из очередей в соответствии с типом приложений. Например, в первую очередь администратор может направить трафик очень чувствительных к задержкам приложений с суммарной интенсивностью в 5 Мбит/е, обеспечив тем самым трафику достаточно комфортные условия обслуживания, так как эта очередь может обслуживать пакеты с максимальной скоростью в 10 Мбит/с. Во вторую очередь администратор может направить трафик менее чувствительных приложений, ограничив суммарную интенсивность потоков в 40 Мбит/с. Это создаст для пакетов второй очереди не такие комфортные условия, как для пакетов первой очереди, так как пропускная способность этой очереди будет использоваться в среднем на 80 % (40 Мбит/с при требуемом значении в 50 Мбит/с), но, по крайней мере, приемлемые и контролируемые. В третью очередь целесообразно направить трафик всех остальных приложений без контроля интенсивности суммарного потока, так что перегрузки в этой очереди могут быть значительными, а задержки и потери пакетов неконтролируемыми.
Как видно из описания, маршрутизатор предоставляет в распоряжение администратора несколько базовых механизмов QoS, таких как приоритетные и взвешенные очереди. Эти механизмы служат для ограничения потоков пакетов, направляемых в каждую очередь, однако их применение требует продуманной стратегии и дополнительного ручного конфигурирования.
На прикладном уровне маршрутизатора реализуется несколько функций, к наиболее важным из которых относятся создание и модификация таблицы маршрутизации, а также поддержка интерфейса с администратором.
Таблица маршрутизации создается и поддерживается двумя способами: ручным конфигурированием, то есть администратором с использованием текстового или графического интерфейса, и автоматически, протоколами маршрутизации. Протоколов маршрутизации может работать несколько, даже если маршрутизатор сконфигурирован на поддержку только одного сетевого протокола IP (как чаще всего происходит сегодня). Это связано с тем, что интерфейсы маршрутизатора могут быть подключены к сетям, в которых используются различные протоколы маршрутизации, кроме того, маршрутизатор может дополнительно поддерживать протокол BGP, если он участвует в маршрутизации трафика между автономными системами.
Интерфейс администратора обеспечивает доступ к параметрам операционной системы маршрутизатора локально (через текстовый или графический терминал, подключенный к консольному порту маршрутизатора) или удаленно, через сеть. В последнем случае обычно используется протокол удаленного управления telnet стека TCP/IP. Telnet поддерживает эмуляцию алфавитно-цифрового экрана и практически является стандартом при удаленном управлении коммуникационными устройствами через IP-сеть. Графические интерфейсы поддерживаются реже, так как требуют больших затрат пропускной способности сети и усложняют программное обеспечение маршрутизатора.
Описанные функции составляют базовый набор функций любого маршрутизатора; естественно, помимо них могут поддерживаться и дополнительные функции, например управление по протоколу SNMP или CMIP, сбор статистики о передаваемом трафике и т. д.
