
- •Сетевые операционные системы
- •Управление процессами
- •Управление процессами
- •Файловая система
- •Эволюция ос Первый период (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
Неделимые транзакции
Все средства синхронизации, которые были рассмотрены ранее, относятся к нижнему уровню, например, семафоры. Они требуют от программиста детального знания алгоритмов взаимного исключения, управления критическими секциями, умения предотвращать клинчи (взаимные блокировки), а также владения средствами восстановления после краха. Однако существуют средства синхронизации более высокого уровня, которые освобождают программиста от необходимости вникать во все эти подробности и позволяют ему сконцентрировать свое внимание на логике алгоритмов и организации параллельных вычислений. Таким средством является неделимая транзакция.
Модель неделимой транзакции пришла из бизнеса. Представьте себе переговорный процесс двух фирм о продаже-покупке некоторого товара. В процессе переговоров условия договора могут многократно меняться, уточняться. Пока договор еще не подписан обеими сторонами, каждая из них может от него отказаться. Но после подписания контракта сделка (transaction) должна быть выполнена.
Компьютерная транзакция полностью аналогична. Один процесс объявляет, что он хочет начать транзакцию с одним или более процессами. Они могут некоторое время создавать и уничтожать разные объекты, выполнять какие-либо операции. Затем инициатор объявляет, что он хочет завершить транзакцию. Если все с ним соглашаются, то результат фиксируется. Если один или более процессов отказываются (или они потерпели крах еще до выработки согласия), тогда измененные объекты возвращается точно к тому состоянию, в котором они находились до начала выполнения транзакции. Такое свойство "все-или-ничего" облегчает работу программиста.
Для программирования с использованием транзакций требуется некоторый набор примитивов, которые должны быть предоставлены программисту либо операционной системой, либо языком программирования. Примеры примитивов такого рода:
BEGIN_TRANSACTION |
|
команды, которые следуют за этим примитивом, формируют транзакцию. |
END_TRANSACTION |
|
завершает транзакцию и пытается зафиксировать ее. |
ABORT_TRANSACTION |
|
прерывает транзакцию, восстанавливает предыдущие значения. |
READ |
|
читает данные из файла (или другого объекта) |
WRITE |
|
пишет данные в файл (или другой объект). |
Первые два примитива используются для определения границ транзакции. Операции между ними представляют собой тело транзакции. Либо все они должны быть выполнены, либо ни одна из них. Это может быть системный вызов, библиотечная процедура или группа операторов языка программирования, заключенная в скобки.
Транзакции обладают следующими свойствами: упорядочиваемостью, неделимостью, постоянством.
Упорядочиваемость гарантирует, что если две или более транзакции выполняются в одно и то же время, то конечный результат выглядит так, как если бы все транзакции выполнялись последовательно в некотором (в зависимости от системы) порядке.
Неделимость означает, что когда транзакция находится в процессе выполнения, то никакой другой процесс не видит ее промежуточные результаты.
Постоянство означает, что после фиксации транзакции никакой сбой не может отменить результатов ее выполнения.
Если программное обеспечение гарантирует вышеперечисленные свойства, то это означает, что в системе поддерживается механизм транзакций.
Рассмотрим некоторые подходы к реализации механизма транзакций.
В соответствии с первым подходом, когда процесс начинает транзакцию, то он работает в индивидуальном рабочем пространстве, содержащем все файлы и другие объекты, к которым он имеет доступ. Пока транзакция не зафиксируется или не прервется, все изменения данных происходят в этом рабочем пространстве, а не в "реальном", под которым мы понимаем обычную файловую систему. Главная проблема этого подхода состоит в больших накладных расходах по копированию большого объема данных в индивидуальное рабочее пространство, хотя и имеются несколько приемов уменьшения этих расходов.
Второй общий подход к реализации механизма транзакций называется списком намерений. Этот метод заключается в том, что модифицируются сами файлы, а не их копии, но перед изменением любого блока производится запись в специальный файл - журнал регистрации, где отмечается, какая транзакция делает изменения, какой файл и блок изменяется и каковы старое и новое значения изменяемого блока. Только после успешной записи в журнал регистрации делаются изменения в исходном файле. Если транзакция фиксируется, то и об этом делается запись в журнал регистрации, но старые значения измененных данных сохраняются. Если транзакция прерывается, то информация журнала регистрации используется для приведения файла в исходное состояние, и это действие называется откатом.
В распределенных системах фиксация транзакций может потребовать взаимодействия нескольких процессов на разных машинах, каждая из которых хранит некоторые переменные, файлы, базы данных. Для достижения свойства неделимости транзакций в распределенных системах используется специальный протокол, называемый протоколом двухфазной фиксации транзакций. Хотя он и не является единственным протоколом такого рода, но он наиболее широко используется.
Суть этого протокола состоит в следующем. Один из процессов выполняет функции координатора (рисунок 3.8). Координатор начинает транзакцию, делая запись об этом в своем журнале регистрации, затем он посылает всем подчиненным процессам, также выполняющим эту транзакцию, сообщение "подготовиться к фиксации". Когда подчиненные процессы получают это сообщение, то они проверяют, готовы ли они к фиксации, делают запись в своем журнале и посылают координатору сообщение-ответ "готов к фиксации". После этого подчиненные процессы остаются в состоянии готовности и ждут от координатора команду фиксации. Если хотя бы один из подчиненных процессов не откликнулся, то координатор откатывает подчиненные транзакции, включая и те, которые подготовились к фиксации.
Выполнение второй фазы заключается в том, что координатор посылает команду "фиксировать" (commit) всем подчиненным процессам. Выполняя эту команду, последние фиксируют изменения и завершают подчиненные транзакции. В результате гарантируется одновременное синхронное завершение (удачное или неудачное) распределенной транзакции.
Рис. 3.8. Двухфазный протокол фиксации транзакции