- •Сетевые операционные системы
- •Глава 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
- •Рекомендуемая литература
- •Сетевые операционные системы: Учебник для вузов
Уровень представления
Уровень представления (presentation layer), как явствует из его названия, обеспечивает представление передаваемой по сети информации, не меняя при этом ее содержания. За счет уровня представления информация, передаваемая прикладным уровнем одной системы, всегда понятна прикладному уровню другой системы. С помощью средств данного уровня протоколы прикладных уровней могут преодолеть синтаксические различия в представлении данных или же различия в кодах символов, например кодов ASCII и EBCDIC. На этом уровне могут выполняться шифрование и дешифрирование данных, благодаря которым секретность обмена данными обеспечивается сразу для всех прикладных служб. Примером такого протокола является протокол SSL (Secure Socket Layer — слой защищенных сокетов), который обеспечивает секретный обмен сообщениями для протоколов прикладного уровня стека TCP/IP.
Прикладной уровень
Прикладной уровень (application layer) — это в действительности просто набор разнообразных протоколов, с помощью которых пользователи сети получают доступ к разделяемым ресурсам, таким как файлы, принтеры или гипертекстовые веб-страницы, а также организуют свою совместную работу, например, по протоколу электронной почты. Единица данных, которой оперирует прикладной уровень, обычно называется сообщением.
Существует очень большое разнообразие протоколов и соответствующих служб прикладного уровня. Приведем в качестве примера несколько наиболее распространенных реализаций сетевых файловых служб: NFS и FTP в стеке TCP/IP, SMB в Microsoft Windows, NCP в операционной системе Novell NetWare.
Ethernet
Ethernet является сегодня доминирующей технологией канального уровня в локальных сетях, где она практически вытеснила все остальные технологии, популярные в конце 80-х начале 90-х. Более того, эта технология становится все более и более популярной в глобальных сетях, где пока еще преобладают два протокола, РРР и HDLC, специально разработанные для учета специфики территориальных двухточечных каналов1.
Технология Ethernet прошла длинный путь развития с тех пор, как была изобретена в 1973 году сотрудником компании Xerox PARC Робертом Меткалфом (Robert Metcalf). После этого в технологии многое изменилось, так что некоторые специалисты высказывают сомнения, имеем ли мы дело с Ethernet, когда сталкиваемся с сетевым адаптером Ethernet-1000Т, работающим со скоростью 1 Гбит/с через локальную сеть Ethemet-коммутаторов. И дело не только в совершенном новом диапазоне скоростей, поддерживаемым сегодня Ethernet (от классической скорости в 10 Мбит/с до 10 Гбит/с и не так уж далекой перспективой в 100 Гбит/с).
Изменился принцип доступа компьютеров, оснащенных сетевыми Ethernet-адаптврами, к сети или точнее к среде передачи данных, используемой сетью. В классической технологии Ethernet использовался общий коаксиальный кабель для объединения компьютеров в сеть, так что среда передачи данных была разделяемой. Для того чтобы обеспечить доступ к этой среде в каждый момент времени только одного компьютера, для Ethernet был разработан алгоритм, получивший длинное название CSMA/CD (Carrier Sense with Multiple Access and Collision Detection). Этот алгоритм реализуется МАС-уровнем каждого Ethemet-узла. Собственно, алгоритм доступа к разделяемой среде долгое время был самым главным отличительным признаком для разных технологий локальных сетей, то есть тем, чем технология Token Ring отличалась от Ethernet, a Arcnet — от FDDI.
Сегодня в единственном «выжившем» представителе технологий локальных сетей 80-90-х годов, Ethernet, практически не используются разделяемые среды и, соответственно, алгоритм CSMA/CD. Технология Ethernet стала коммутируемой.
Принципиальное отличие коммутируемой (switched) технологии Ethernet от Ethernet на разделяемой среде состоит в том, что связи компьютера с коммутатором стали индивидуальными. Пример такой сети показан на рис. 9.8.
Рис. 9.8. Коммутируемая технология Ethernet
Индивидуальный характер связей означает, что, например, сетевой Ethernet-адаптер компьютера А может в любой момент послать кадр любому другому компьютеру сети, например, компьютеру F через Ethemet-коммутатор S1, к которому он подключен индивидуальным кабелем, поддерживающим дуплексный режим работы (то есть позволяющим передавать кадры от компьютера и в компьютер одновременно). Коммутатор S1 обязан принять кадр от компьютера А и передать его следующему коммутатору, через который проходит маршрут от компьютера А к компьютеру F.
Для того чтобы передавать кадры через сеть по рациональным маршрутам, которые обеспечивают, в конечном счете, доставку кадров адресатам, Ethemet-коммутаторы автоматически строят таблицы продвижения (forwarding tables) на основании информации, получаемой при слежении за кадрами, проходящими через коммутаторы. Этот алгоритм построения таблицы продвижения был разработан давно для так называемых прозрачных мостов локальных сетей (алгоритм закреплен стандартом IEEE 802.1D). Мост называется прозрачным, потому что конечный узел «не замечает» присутствия такого моста в сети и ведет себя совершенно так же, как если бы он непосредственно был соединен с узлом-адресатом. То есть компьютер А в нашем примере просто выдает на свой выходной порт кадр с двумя МАС-адресами: МАС-А (собственный адрес) в качестве адреса источника и MAC-F (адрес компьютера F) в качестве адреса назначения. В классической сети с разделяемой средой, где все компьютеры сети были объединены одним и тем же коаксиальным кабелем, кадр попал бы в буферы сетевых адаптеров всех компьютеров, но только компьютер F распознал бы свой собственный адрес MAC-F и начал бы обработку принятого кадра.
В сети с коммутаторами процесс передачи кадра является более сложным. В начальном состоянии после первого включения в сеть каждый коммутатор имеет пустую таблицу продвижения, так как администратор сети не конфигурирует ее вручную, оставляя эту работу самим коммутаторам. Если коммутатор S1 получает кадр с адресами {МАС-А, MAC-F}, то он просто копирует его на все порты, кроме того, на который он получил этот кадр. В нашем примере коммутатор S1 копирует кадр на порты 2 и 3. Первое копирование получается очевидно безрезультатным, так как кадр попадает компьютеру В, которому он не предназначался (и который отбрасывает этот кадр). А вот копирование на порт 3 имеет смысл, так как кадр попадает в коммутатор S2, который находится на пути кадра к компьютеру F.
Читатель может самостоятельно продолжить цепочку рассуждений, которая приводит, в конечном счете, к тому, что кадр достигает компьютера F.
Однако это не очень эффективный способ передачи кадров, так как сеть оказывается буквально затопленной копиями исходного кадра — подобный режим работы прозрачного моста поэтому и называют «затоплением» (flooding). Но этот режим не является основным, он нужен только для того, чтобы коммутаторы начали строить свои таблицы продвижения. Таблица строится на основании адресов источника кадров, проходящих через коммутатор. Так, коммутатор S1, передавая кадр на порты 2 и 3, запоминает тот факт, что кадр от компьютера с адресом МАС-А пришел На порт 1. Поэтому он помещает в свою пустую таблицу продвижения первую запись.
-
Адрес
Порт
МАС-А
1
Имея такую таблицу, коммутатор S1 сможет обрабатывать кадр, пришедший от любого компьютера сети для компьютера А, более рационально: он не будет копировать его на все порты, а передаст единственную копию на порт 1. Именно так он поступит с ответом компьютера F на кадр компьютера А, если такой ответ придет (напомним, что поддержание осмысленного взаимодействия компьютеров, в ходе которого устанавливается логический сеанс и на кадры-запросы присылаются кадры-ответы, обычно является делом прикладного, а не канального уровня).
Ответ от компьютера F поможет коммутатору 51 добавить новую запись, в результате его таблица приобретет следующий вид.
Адрес |
Порт |
МАС-А |
1 |
MAC-F |
3 |
После этого кадры, посланные для компьютера F, также начинают продвигаться коммутатором 51 рационально: единственная копия передается только на порт 3.
Как видно из описания, Ethernet-коммутаторы действительно прозрачны для компьютеров, кроме того, их способность к самообучению без какого-либо предварительного ручного конфигурирования удобна администратору сети.
Коммутируемая технология Ethernet явилась большим шагом вперед в отношении сетевой производительности по сравнению с Ethernet на разделяемой среде, так как она исключила периоды ожидания среды за счет параллельного продвижения кадров от всех компьютеров сети. Высокие скорости работы коммутаторов по обработке кадров и возросшие с 10 до 100 и даже до 1000 Мбит/с скорости передачи битов по каналам связи привели к тому, что локальные сети стали очень эффективной и сравнительно простой средой взаимодействия компьютеров.
Однако простота организации коммутируемых сетей Ethernet имеет и ряд недостатков.
Появление кадров с неизвестными ранее адресами приводит к так называемым широковещательным штормам, так как эти кадры затопляют сеть своими копиями. Сеть Ethernet не может эффективно предотвращать такие ситуации, если какой-либо из компьютеров начинает работать некорректно и генерирует кадры с ошибочным адресом. Говорят, что сеть, построенная на Ethemet-коммутаторах, является «плоской», имея в виду тот факт, что в сети нет естественных барьеров на пути распространения ошибочного широковещательного трафика.
Плоские Ethernet-адреса не очень удобны для адресации узлов больших сетей, так как в этом случае таблицы продвижения включают слишком много записей. Как уже отмечалось, многоуровневый адрес сетевого уровня в этом отношении гораздо более эффективен.
Самообучение Ethernet-коммутаторов на основе наблюдения за проходящим трафиком приводит к тому, что коммутируемые сети Ethernet эффективно работают только при древовидной топологии сети, когда в сети нет петель. Иначе кадры начинают зацикливаться и размножаться, а таблицы продвижения не достигают устойчивого состояния, постоянно перестраиваясь, что, конечно, не дает сети нормально работать. Алгоритм покрывающего дерева (spanning tree) решает задачу автоматического нахождения и активизации древовидных структур в сети с произвольной топологией, но не решает проблему полностью, так как в этом случае невозможно использовать альтернативные маршруты, если они существуют в сети, для повышения ее производительности. Кроме того, при отказах каналов или коммутаторов новая древовидная топология находится алгоритмом покрывающего дерева достаточно медленно.
Ограничения
Ethernet
приводят к тому, что на основе этой
технологи
строят отдельные сети, пока в основном
локальные, а для организации крупной
сети используют сетевой уровень и
строят составную сеть.
Протоколом номер один для построения составных сетей благодаря своей мощной функциональности (а также успеху Интернета) является сегодня протокол IP (Internet Protocol). Вместе с ним работают также другие протоколы стека TCP/IP, которые рассматриваются в следующем разделе.
