- •Сетевые операционные системы
- •Глава 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
- •Рекомендуемая литература
- •Сетевые операционные системы: Учебник для вузов
Конфигурирование параметров стека tcp/ip
В рассмотренном ранее примере мы затронули вопросы конфигурирования стека TCP/IP компьютера, упомянув о необходимости задания адреса маршрутизатора по умолчанию. Однако это не единственный параметр, который нужен ОС компьютера, чтобы ее стек TCP/IP работал нормально. Рассмотрим типичный случай конфигурирования параметров стека TCP/IP компьютера на примере сети, изображенной на рис. 9.13.
Рис. 9.13. Параметры стека TCP/IP универсальной ОС
Рассмотрим два случая: ручного конфигурирования стека TCP/IP компьютера U1 и вариант использования для этого DHCP-сервера, работающего на маршрутизаторе R1. Все коммутаторы, показанные на рисунке, являются Ethernet-коммутаторами, а маршрутизаторы — IР-маршрутизаторами.
В первом случае администратор должен решить, какие значения должны быть статически назначены по крайней мере следующим параметрам стека IP компьютера U1.
IP-адрес сетевого адаптера компьютера;
маска IP-адреса компьютера;
IP-адрес маршрутизатора по умолчанию;
IР-адрес DNS-сервера, который будет обслуживать запросы данного компьютера.
IP-адрес компьютера U1 должен принадлежать диапазону IP-адресов подсети, в которую входит данный компьютер, и иметь уникальное значение номера узла в пределах этой подсети. Как видно из рисунка, компьютер U1 принадлежит подсети 212.100.10.0 с маской 255.255.255.0, в которой номер узла 1 уже использован для интерфейса маршрутизатора Ri. Предположим, что администратор выбрал для компьютера U1 следующий номер узла, тогда он должен присвоить IP-адресу значение 212.100.10.2 с маской 255.255.255.0.
Что касается IP-адреса маршрутизатора по умолчанию, то он известен — это 212.100.10.1, так как это должен быть интерфейс маршрутизатора, который подключен к той же подсети, что и сетевой адаптер компьютера. В то же время если бы администратор задал в качестве такого адреса, например, значение 212.100.30.3, то пакеты от компьютера U1 не смогли бы уходить за пределы его подсети. Причина в том, что сетевой адаптер компьютера использует IР-адрес маршрутизатора по умолчанию только для того, чтобы с помощью ARP-запроса найти его МАС-адрес и отправить IP-пакет, который предназначен для отправки за пределы его подсети, упакованным в Ethernet-кадр с корректным МАС- адресом интерфейса маршрутизатра. Если бы администратор задал IР-адрес 212.100.30.3 в качестве адреса маршрутизатора по умолчанию, то сетевой адаптер компьютера U1 просто не получил бы ответа на ARP-запрос с этим адресом, так как ARP-запросы распространяются только в пределах сети Ethemet-коммутаторов, которые обязаны распространять запросы с широковещательным МАС-адресом назначения через все свои порты. Эти запросы доходят до интерфейса маршрутизатора (в данном случае — до интерфейса 212.100.10.1) и дальше не распространяются, так как маршрутизатор обрабатывает только кадры, направленные непосредственно одному из интерфейсов маршрутизатора по его МАС-адресу.
После задания адреса маршрутизатора по умолчанию стек TCP/IP компьютера U1 может работать, но только в том случае, если не заданы символьные имена хостов, то есть если пользователь или приложение обращается, например, к сайту компании Cisco не по его имени http://www.cisco.com, а непосредственно по IP-адресу, например, задав URL-адрес http://198.133.219.25. Если адрес корректен (он был корректен на момент написания этих строк), то стек будет работать. Однако намного удобнее и надежнее работать с символьными именами (поскольку адрес может измениться или же сайт для баланса нагрузки и обеспечения надежности может поддерживать несколько IP-адресов, что без символьных имен невозможно).
Для того чтобы стек TCP/IP компьютера U1 начал работать с символьными именами IP-хостов, нужно задать, по крайней мере, один адрес DNS-сервера, который будет принимать от компьютера U1 запросы, содержащие искомое символьное имя (например, www.cisco.com), и разрешать их, используя иерархию DNS-серверов Интернета или же данные своего кэша, если запрошенное имя в нем имеется. В данном, случае администратор может задать адрес 212. 100.40.7 DNS-сервера, который относится к той же организации. Принадлежность DNS-сервера к какой-либо сети или организации не принципиальна, но нужно иметь в виду, что многие администраторы конфигурируют свои DNS- серверы так, чтобы те не обслуживали запросы от «чужих» клиентов, выполняя фильтрацию на основе диапазона IP-адресов. Поэтому при конфигурировании клиентов нужно использовать адрес того DNS-сервера, про который точно известно, что он обслуживает запросы данной подсети.
Желательно также указать не один, а как минимум два адреса различных DNS-серверов, просто на тот случай, если один из них временно окажется неработоспособным. В данном случае это должен быть адрес внешнего DNS-сервера, так как в сети организации нет второго DNS-cервера. Таким DNS-сервером чаще всего служит DNS-сервер провайдера, обеспечивающего подключение данной сети к Интернету. На этом ручное конфигурирование стека TCP/IP заканчивается.
При использовании DHCP-сервера (а им в данном случае является маршрутизатор R1) администратор должен задать пул IP-адресов, который затем этот сервер задействует для ответов на запросы клиентов-компьютеров. Мы ограничимся рассмотрением только режима автоматического назначения динамических адресов, наиболее часто используемого при конфигурировании клиентских компьютеров (для серверов статические адреса удобнее, так как они позволяют упростить работу службы DNS; что касается клиентов, для них это обстоятельство не имеет большого значения, так как к клиентским компьютерам обычно никто по сети не обращается).
В нашем примере администратор должен задать пул адресов 212.100.10.0 с маской 255.255.255.0 и исключить из него те адреса, которые использованы или должны быть использованы при ручном конфигурировании. В данном случае необходимо из пула исключить адрес 212.100.10.1, принадлежащий интерфейсу маршрутизатора. Возможно, администратор захочет исключить также несколько младших адресов для ручного назначения в будущем, например, если в сети 212.100.0.0 появится сервер. После задания пула адресов клиентов на DHCP-сервере для этого пула необходимо задать адрес маршрутизатора по умолчанию и адреса DNS-серверов. Вся эта конфигурационная информация будет передаваться клиентским компьютерам подсети в ответ на их DHCP-запросы. Для того чтобы клиентский компьютер начал генерировать эти запросы, достаточно активизировать на нем режим DHCP — это будет единственное ручное действие по конфигурированию стека TCP/IP на клиентском компьютере, все остальное происходит в автоматическом режиме.
Cisco IOS
Маршрутизаторы представляют собой ключевой элемент любой современной крупной сети. Интернет построен на IP-маршрутизаторах, которые объединяют в единое целое сотни тысяч сетей. Компания Cisco Systems была и остается лидером в этом секторе сетевого оборудования, большая часть маршрутизаторов, работающих в Интернете, представляют собой продукты именно этой компании.
Сердцем маршрутизаторов Cisco является специализированная операционная система IOS (Internetwork Operating System — межсетевая операционная система), которая, как и любая ОС, выполняет функции по организации программного обеспечения и экранированию его от особенностей аппаратной платформы. Особенности Cisco IOS в том, что само прикладное программное обеспечение решает весьма узкоспециализированные задачи, а именно задачи маршрутизации пакетов, делая это в реальном времени, так как задержка маршрутизации пакета может серьезно ухудшить качество работы распределенного сетевого приложения, например приложения интернет-телефонии.
