- •Сетевые операционные системы
- •Управление процессами
- •Управление процессами
- •Файловая система
- •Эволюция ос Первый период (1945 -1955)
- •Второй период (1955 - 1965)
- •Третий период (1965 - 1980)
- •Особенности алгоритмов управления ресурсами
- •Четвертый период (1980 - настоящее время)
- •Классификация ос
- •Особенности аппаратных платформ
- •Особенности областей использования
- •Особенности методов построения
- •Сетевые операционные системы Структура сетевой операционной системы
- •Одноранговые сетевые ос и ос с выделенными серверами
- •Ос для рабочих групп и ос для сетей масштаба предприятия
- •Управление локальными ресурсами
- •Управление процессами
- •Состояние процессов
- •Контекст и дескриптор процесса
- •Алгоритмы планирования процессов
- •Вытесняющие и невытесняющие алгоритмы планирования
- •Средства синхронизации и взаимодействия процессов
- •Управление памятью
- •Типы адресов
- •Методы распределения памяти без использования дискового пространства
- •Распределение памяти фиксированными разделами
- •Распределение памяти разделами переменной величины
- •Перемещаемые разделы
- •Методы распределения памяти с использованием дискового пространства Понятие виртуальной памяти
- •Страничное распределение
- •Сегментное распределение
- •Странично-сегментное распределение
- •Свопинг
- •Иерархия запоминающих устройств. Принцип кэширования данных
- •Средства аппаратной поддержки управления памятью и многозадачной среды в микропроцессорах Intel 80386, 80486 и Pentium
- •Средства поддержки сегментации памяти
- •Сегментно-страничный механизм
- •Средства вызова подпрограмм и задач
- •Управление вводом-выводом
- •Физическая организация устройств ввода-вывода
- •Организация программного обеспечения ввода-вывода
- •Обработка прерываний
- •Драйверы устройств
- •Независимый от устройств слой операционной системы
- •Пользовательский слой программного обеспечения
- •Файловая система
- •Имена файлов
- •Типы файлов
- •Логическая организация файла
- •Физическая организация и адрес файла
- •Права доступа к файлу
- •Кэширование диска
- •Общая модель файловой системы
- •Отображаемые в память файлы
- •Современные архитектуры файловых систем
- •Управление распределенными ресурсами Базовые примитивы передачи сообщений в распределенных системах
- •Способы адресации
- •Блокирующие и неблокирующие примитивы
- •Буферизуемые и небуферизуемые примитивы
- •Надежные и ненадежные примитивы
- •Вызов удаленных процедур (rpc) Концепция удаленного вызова процедур
- •Базовые операции rpc
- •Этапы выполнения rpc
- •Динамическое связывание
- •Семантика rpc в случае отказов
- •Синхронизация в распределенных системах
- •Алгоритм синхронизации логических часов
- •Алгоритмы взаимного исключения
- •Неделимые транзакции
- •Процессы и нити в распределенных системах Понятие "нить"
- •Различные способы организации вычислительного процесса с использованием нитей
- •Вопросы реализации нитей
- •Нити и rpc
- •Распределенные файловые системы
- •Интерфейс файлового сервиса
- •Интерфейс сервиса каталогов
- •Семантика разделения файлов
- •Вопросы разработки структуры файловой системы
- •Кэширование
- •Репликация
- •Проблемы взаимодействия операционных систем в гетерогенных сетях Понятия "internetworking" и "interoperability"
- •Гетерогенность
- •Основные подходы к реализации взаимодействия сетей
- •Мультиплексирование стеков протоколов
- •Использование магистрального протокола
- •Вопросы реализации
- •Сравнение вариантов организации взаимодействия сетей
- •Службы именования ресурсов и проблемы прозрачности доступа
- •Доменный подход
- •Основной и резервные контроллеры домена
- •Четыре модели организации связи доменов
- •Современные концепции и технологии проектирования операционных систем Требования, предъявляемые к ос 90-х годов
- •Расширяемость
- •Переносимость
- •Совместимость
- •Безопасность
- •Многоуровневые системы
- •Тенденции в структурном построении ос
- •Монолитные системы
- •Модель клиент-сервер и микроядра
- •Объектно-ориентированный подход
- •Множественные прикладные среды
- •Сетевой пакет dce фирмы osf
- •Концепции unix System V Release 4 Управление процессами Образ, дескриптор, контекст процесса
- •Порождение процессов
- •Планирование процессов
- •Файловые системы unix System V Release 4
- •Традиционная файловая система s5
- •Виртуальная файловая система vfs
- •Сетевая файловая система nfs
- •Управление памятью. Свопинг
- •Система ввода-вывода
- •Подсистема буферизации
- •Драйверы
- •Коммерческие реализации unix
- •Дополнительные свойства UnixWare по сравнению с unix System V Release 4
- •I. Поддержка мультипроцессирования
- •Микроядро Mach
- •Введение в Mach История Mach
- •Цели Mach
- •Основные концепции Mach
- •Сервер Mach bsd unix
- •Управление процессами в Mach Процессы
- •Примитивы управления процессами
- •Планирование
- •Управление памятью в Mach
- •Виртуальная память
- •Разделение памяти
- •Внешние менеджеры памяти
- •Распределенная разделяемая память в Mach
- •Коммуникации в ядре Mach
- •Отправка и получение сообщений
- •Сервер сетевых сообщений
- •Сетевые продукты фирмы Novell История и версии сетевой ос NetWare
- •Версия NetWare 4.1
- •Концепции построения NetWare Структура NetWare и обзор особенностей
- •Способы повышения производительности
- •Способы обеспечения открытости и расширяемости
- •Способы обеспечения надежности
- •Защита информации
- •Управление процессами
- •Файловая система
- •Основные направления развития NetWare Поддержка мультипроцессирования
- •Обеспечение процессорной независимости
- •Сетевые системные утилиты NetWare Connect 1.0 фирмы Novell
- •WinView for Networks v2.2 фирмы Citrix Systems
- •Шлюзы ip-сетей
- •Системы обработки сообщений mhs и GroupWise
- •Семейство сетевых ос компании Microsoft Сетевые продукты Microsoft
- •История Windows nt
- •Версии Windows nt
- •Области использования Windows nt
- •Концепции Windows nt Структура: nt executive и защищенные подсистемы
- •Множественные прикладные среды
- •Объектно-ориентированный подход
- •Процессы и нити
- •Алгоритм планирования процессов и нитей
- •Сетевые средства
- •Совместимость Windows nt с NetWare
- •Средства BackOffice
- •Сервер баз данных sql Server
- •Шлюз sna Server
- •Почтовые системы Microsoft Mail и система коллективной работы Microsoft Exchange
- •Система управления компьютерами System Management Server
- •Операционная система os/2 История развития os/2 и ее место на рынке
- •Битва Microsoft - ibm на рынке настольных ос
- •Os/2 - постепенные улучшения
- •Общая характеристика
- •Внутренняя организация os/2 Warp
- •Файловая система hpfs
- •Общая характеристика
- •Сетевые возможности
- •Управление сервером lan Server 4.0
- •Совместимость с NetWare
Алгоритмы взаимного исключения
Системы, состоящие из нескольких процессов, часто легче программировать, используя так называемые критические секции. Когда процессу нужно читать или модифицировать некоторые разделяемые структуры данных, он прежде всего входит в критическую секцию для того, чтобы обеспечить себе исключительное право использования этих данных, при этом он уверен, что никакой процесс не будет иметь доступа к этому ресурсу одновременно с ним. Это называется взаимным исключением. В однопроцессорных системах критические секции защищаются семафорами, мониторами и другими аналогичными конструкциями. Рассмотрим, какие алгоритмы могут быть использованы в распределенных системах.
Централизованный алгоритм
Наиболее очевидный и простой путь реализации взаимного исключения в распределенных системах - это применение тех же методов, которые используются в однопроцессорных системах. Один из процессов выбирается в качестве координатора (например, процесс, выполняющийся на машине, имеющей наибольшее значение сетевого адреса). Когда какой-либо процесс хочет войти в критическую секцию, он посылает сообщение с запросом к координатору, оповещая его о том, в какую критическую секцию он хочет войти, и ждет от координатора разрешение. Если в этот момент ни один из процессов не находится в критической секции, то координатор посылает ответ с разрешением. Если же некоторый процесс уже выполняет критическую секцию, связанную с данным ресурсом, то никакой ответ не посылается; запрашивавший процесс ставится в очередь, и после освобождения критической секции ему отправляется ответ-разрешение. Этот алгоритм гарантирует взаимное исключение, но вследствие своей централизованной природы обладает низкой отказоустойчивостью.
Распределенный алгоритм
Когда процесс хочет войти в критическую секцию, он формирует сообщение, содержащее имя нужной ему критической секции, номер процесса и текущее значение времени. Затем он посылает это сообщение всем другим процессам. Предполагается, что передача сообщения надежна, то есть получение каждого сообщения сопровождается подтверждением. Когда процесс получает сообщение такого рода, его действия зависят от того, в каком состоянии по отношению к указанной в сообщении критической секции он находится. Имеют место три ситуации:
Если получатель не находится и не собирается входить в критическую секцию в данный момент, то он отсылает назад процессу-отправителю сообщение с разрешением.
Если получатель уже находится в критической секции, то он не отправляет никакого ответа, а ставит запрос в очередь.
Если получатель хочет войти в критическую секцию, но еще не сделал этого, то он сравнивает временную отметку поступившего сообщения со значением времени, которое содержится в его собственном сообщении, разосланном всем другим процессам. Если время в поступившем к нему сообщении меньше, то есть его собственный запрос возник позже, то он посылает сообщение-разрешение, в обратном случае он не посылает ничего и ставит поступившее сообщение-запрос в очередь.
Процесс может войти в критическую секцию только в том случае, если он получил ответные сообщения-разрешения от всех остальных процессов. Когда процесс покидает критическую секцию, он посылает разрешение всем процессам из своей очереди и исключает их из очереди.
Алгоритм Token Ring
Совершенно другой подход к достижению взаимного исключения в распределенных системах иллюстрируется рисунком 3.7. Все процессы системы образуют логическое кольцо, т.е. каждый процесс знает номер своей позиции в кольце, а также номер ближайшего к нему следующего процесса. Когда кольцо инициализируется, процессу 0 передается так называемый токен. Токен циркулирует по кольцу. Он переходит от процесса n к процессу n+1 путем передачи сообщения по типу "точка-точка". Когда процесс получает токен от своего соседа, он анализирует, не требуется ли ему самому войти в критическую секцию. Если да, то процесс входит в критическую секцию. После того, как процесс выйдет из критической секции, он передает токен дальше по кольцу. Если же процесс, принявший токен от своего соседа, не заинтересован во вхождении в критическую секцию, то он сразу отправляет токен в кольцо. Следовательно, если ни один из процессов не желает входить в критическую секцию, то в этом случае токен просто циркулирует по кольцу с высокой скоростью.
Сравним эти три алгоритма взаимного исключения. Централизованный алгоритм является наиболее простым и наиболее эффективным. При его использовании требуется только три сообщения для того, чтобы процесс вошел и покинул критическую секцию: запрос и сообщение-разрешение для входа и сообщение об освобождении ресурса при выходе. При использовании распределенного алгоритма для одного использования критической секции требуется послать (n-1) сообщений-запросов (где n - число процессов) - по одному на каждый процесс и получить (n-1) сообщений-разрешений, то есть всего необходимо 2(n-1) сообщений. В алгоритме Token Ring число сообщений переменно: от 1 в случае, если каждый процесс входил в критическую секцию, до бесконечно большого числа, при циркуляции токена по кольцу, в котором ни один процесс не входил в критическую секцию.
К сожалению все эти три алгоритма плохо защищены от отказов. В первом случае к краху приводит отказ координатора, во втором - отказ любого процесса (парадоксально, но распределенный алгоритм оказывается менее отказоустойчивым, чем централизованный), а в третьем - потеря токена или отказ процесса.
Рис. 3.7. Средства взаимного исключения в распределенных системах а - неупорядоченная группа процессов в сети; б - логическое кольцо, образованное программным обеспечением
