Предисловие \r\r Структура книги \r\r Рекомендации по изучению материала \r\r Благодарности \r\r Глава 1. Требования к системе\r\r \r\r 1.1. Введение\r\r 1.2. Системы, параллельные по своей природе\r\r 1.2.1. Системы реального времени и встроенные системы\r\r 1.2.2. Операционные системы \r\r 1.2.3. Оконные интерфейсы\r\r 1.2.4. СУБД и системы обработки транзакций\r\r 1.2.5. Промежуточное программное обеспечение\r\r 1.2.6. Веб\r\r 1.3. Потенциально параллельные системы\r\r 1.3.1. Подходы к разработке параллельных алгоритмов\r\r 1.3.2. Доступ к общим данным и синхронизация параллельных задач\r\r 1.3.3. Области применения параллельных алгоритмов\r\r 1.3.4. Требования к системам, поддерживающим параллельные приложения\r\r 1.4. Архитектура аппаратных средств\r\r 1.5. Параллельные системы: подведение итогов\r\r 1.6. Общие требования к параллельным системам\r\r Контрольные вопросы
Часть I. Структура и принципы работы\r\r программных систем\r\r Глава 2. Структура системы и ее динамические компоненты\r\r 2.1. Концептуальное представление структуры системы\r\r 2.1.1. Понятие абстрактного типа данных\r\r 2.1.2. Интерфейс абстрактного типа данных\r\r 2.1.3. Состояние экземпляра абстрактного типа данных\r\r 2.2. Структура системы с точки зрения реализации\r\r 2.2.1. Объектно-ориентированное программирование\r\r 2.2.2. Интерфейс объекта\r\r 2.2.3. Реализация объекта\r\r 2.2.4. Взаимодействие объектов\r\r 2.2.5. Жизненный цикл объекта\r\r 2.2.6. Специализация и обобщение\r\r 2.2.7. Составные объекты\r\r 2.2.8. Взаимодействие объектов\r\r 2.3. Концепция процесса\r\r 2.3.1. Аналогии процесса\r\r 2.3.2. Многопоточные процессы\r\r 2.4. Функции операционной системы\r\r 2.5. Вызовы операционной системы и ее защита\r\r 2.6. Структура операционной системы\r\r 2.6.1. Многослойная структура\r\r 2.6.2. Микроядро\r\r 2.7. Операционные системы с поддержкой объектов и объектной структурой\r\r 2.7.1. Именование объектов\r\r 2.7.2. Защита, вызов и совместное использование объектов\r\r 2.7.3. Унифицированные механизмы управления объектами\r\r 2.8. Распределенные системы и промежуточные платформы\r\r 2.9. Защита систем\r\r 2.9.1. Объектная модель системы контроля доступа\r\r 2.10. Резюме\r\r Контрольные вопросыГлава 3. Взаимодействие с аппаратным обеспечением\r\r 3.1. Введение\r\r 3.2. Интерфейс устройств\r\r 3.2.1. Быстродействие процессора и устройств\r\r 3.2.2. Компьютеры CISC и RISC\r\r 3.2.3. Простейший интерфейс устройства\r\r 3.2.4. Опрос и прерывания\r\r 3.2.5. Обработка прерываний и их приоритеты\r\r 3.2.6. Векторы прерываний\r\r 3.2.7. RISC-подход к обработке прерываний\r\r 3.2.8. Устройства с прямым доступом к памяти\r\r 3.2.9. Ввод-вывод с отображением в память\r\r 3.2.10. Таймеры\r\r 3.3. Исключения\r\r 3.3.1. Исключения, вызванные выполнением программы\r\r 3.3.2. Системный и пользовательский режимы\r\r 3.3.3. Механизм системного вызова\r\r 3.3.4. Использование механизма исключения\r\r 3.3.5. Обработка исключений пользовательского уровня\r\r 3.4. Мультипроцессоры\r\r 3.5. Ввод-вывод на прикладном уровне\r\r 3.5.1. Буферы и синхронизация\r\r 3.5.2. Синхронный и асинхронный ввод-вывод\r\r 3.6. Управление сетевым взаимодействием\r\r 3.7. Коммуникационные сети, интерфейсы и драйверы\r\r 3.7.1. Сеть Ethernet\r\r 3.7.2. Локальные сети кольцевой топологии\r\r 3.7.3. Примеры сетевых интерфейсов\r\r 3.8. Коммуникационное программное обеспечение\r\r 3.8.1. Эталонная модель взаимодействия открытых систем\r\r 3.8.2. Взаимодействие с установкой соединения и без таковой\r\r 3.9. Прикладные и системные коммуникационные протоколы\r\r 3.10. Резюме\r\r Контрольные вопросыГлава 4. Поддержка процессов\r\r 4.1. Использование процессов в системе\r\r 4.2. Процессы и процессоры\r\r 4.3. Состояние процесса\r\r 4.3.1. Сохранение состояния процесса\r\r 4.3.2. Переключение контекста\r\r 4.4. Синхронизация с аппаратным обеспечением\r\r 4.4.1. Условия гонок\r\r 4.4.2. Объекты событий и процессов\r\r 4.5. Структуры данных, используемые при управлении процессами\r\r 4.6. Стратегия планирования процессов\r\r 4.6.1. Унарное, бинарное и общее планирование\r\r 4.6.2. Поведение процесса и его приоритет\r\r 4.7. Планирование процессов для мультипроцессоров с общей памятью\r\r 4.8. Планирование процессов в реальном времени\r\r 4.8.1. Структура системы и отклик на события\r\r 4.9. Абстракция и реализация процесса\r\r 4.10. Процессы в структуре операционной системы\r\r 4.11. Реализация многопоточных процессов\r\r 4.12. Реализация процессов в языковых и операционных системах\r\r 4.13. Состояние процесса в языковых и операционных системах\r\r 4.13.1. Записи активации в стеке времени выполнения\r\r 4.13.2. Куча и сборка мусора\r\r 4.14. Последовательные программы с системными вызовами\r\r 4.15. Эволюция параллельности в языках программирования\r\r 4.15.1. Примеры параллельных систем\r\r 4.15.2. Параллельность, обеспечиваемая средствами \r\r последовательного языка\r\r \r\r 4.15.3. Сопрограммы \r\r 4.15.4. Процессы\r\r 4.15.5. Поддержка процессов: подведение итогов\r\r 4.16. Реализация процессов в языковых системах\r\r 4.16.1. Определение, создание и завершение процессов\r\r 4.16.2. Управление дочерними процессами\r\r 4.16.3. Обработка исключений в языках программирования\r\r 4.16.4. Выделение памяти для процессов уровня \r\r языка программирования\r\r \r\r 4.17. Архитектуры управления потоками\r\r 4.18. Потоки и исключения в языке Java\r\r 4.19. Резюме\r\r Контрольные вопросыГлава 5. Управление памятью\r\r 5.1. Введение\r\r 5.2. Иерархия памяти\r\r 5.3. Адресное пространство процесса\r\r 5.3.1. Понятие преобразования адресов\r\r 5.3.2. Статическое преобразование адресов\r\r 5.3.3. Динамическое преобразование адресов\r\r 5.3.4. Аппаратно-управляемая настройка адресов и защита\r\r 5.4. Сегментация виртуальной памяти\r\r 5.4.1. Структура виртуального адреса\r\r 5.4.2. Преобразование адресов\r\r 5.4.3. Сегментация виртуальной памяти: подведение итогов\r\r 5.5. Страничная виртуальная память\r\r 5.5.1. Особенности преобразования адресов\r\r 5.5.2. Копирование при записи\r\r 5.5.3. Страничная виртуальная память: подведение итогов\r\r 5.6. Сегментация и страничная организация памяти\r\r 5.6.1. Аппаратная поддержка сегментов и страниц\r\r 5.6.2. Программная поддержка сегментов, аппаратная поддержка страниц\r\r 5.7. Структуры данных операционной системы\r\r 5.7.1. Многоуровневые таблицы страниц\r\r 5.7.2. Огражденные таблицы страниц\r\r 5.7.3. Инвертированные таблицы страниц\r\r 5.7.4. Страницы в основной памяти\r\r 5.7.5. Страницы во внешней памяти\r\r 5.7.6. Замещение страниц\r\r 5.8. Пример диспетчера памяти\r\r 5.9. Управление памятью и архитектура системы\r\r 5.10. Резюме\r\r Контрольные вопросыГлава 6. Управление файлами\r\r 6.1. Введение\r\r 6.2. Обзор функций файловой системы\r\r 6.3. Структура файла и каталога\r\r 6.3.1. Путевые имена и рабочие каталоги\r\r 6.3.2. Совместное использование объектов, права доступа и ссылки\r\r 6.3.3. Управление существованием объектов\r\r 6.4. Интерфейс файловой системы\r\r 6.4.1. Сервис каталога как менеджер типа\r\r 6.4.2. Интерфейс сервиса каталога\r\r 6.4.3. Интерфейс файлового сервиса\r\r 6.5. Реализация файловой системы\r\r 6.5.1. Жесткие и символические ссылки \r\r 6.5.2. Хранение файлов на диске\r\r 6.5.3. Хранение мультимедийных данных новых типов\r\r 6.6. Архитектура современных файловых систем\r\r 6.6.1. Управление логическими томами\r\r 6.6.2. Чередование и зазеркаливание\r\r 6.6.3. Журнальные файловые системы и протоколирование\r\r 6.7. Сетевые файл-серверы\r\r 6.7.1. Открытые и закрытые архитектуры хранения\r\r 6.7.2. Интерфейс сервиса хранения\r\r 6.7.3. Размещение функций\r\r 6.7.4. Серверы, не сохраняющие состояние\r\r 6.7.5. Системы с преобладающей записью\r\r 6.7.6. Идентификаторы файлов и защита на уровне сервиса хранения\r\r 6.8. Интеграция виртуальной и постоянной памяти\r\r 6.8.1. Отображение файлов\r\r 6.8.2. Отображение объектов\r\r 6.9. Резюме\r\r Контрольные вопросыГлава 7. Распределенные системы\r\r 7.1. Введение\r\r 7.2. Эволюция распределенных систем\r\r 7.3. Персональные системы\r\r 7.4. Модель, архитектура и конструкторские решения\r\r 7.5. Характеристики распределенных систем\r\r 7.6. Время в распределенных системах\r\r 7.6.1. Физическое земное время \r\r 7.6.2. Время и распределенные процессы\r\r 7.6.3. Логическое время и порядок событий\r\r 7.6.4. Алгоритмы синхронизации часов\r\r 7.7. Именование\r\r 7.7.1. Создание уникальных имен\r\r 7.7.2. Простые и составные имена\r\r 7.7.3. Служба доменных имен Интернета\r\r 7.7.4. Службы имен и связывание\r\r 7.7.5. Атрибуты объектов, возвращаемые службами имен\r\r 7.8. Мобильные пользователи, компьютеры и объекты\r\r 7.8.1. Мобильные компьютеры \r\r 7.8.2. Мобильные пользователи\r\r 7.9. Резюме\r\r Контрольные вопросыГлава 8. Защита\r\r 8.1. Сценарии и требования защиты\r\r 8.1.1. Взаимодействие между клиентом и сервером\r\r 8.1.2. Импорт исходного и объектного кода\r\r 8.1.3. Удаленное соединение с компьютером\r\r 8.2. Анализ рисков\r\r 8.3. Виды шифрования\r\r 8.3.1. Шифрование с секретным ключом\r\r 8.3.2. Шифрование с открытым ключом \r\r 8.3.3. Необратимые функции\r\r 8.4. Алгоритмы\r\r 8.4.1. Подстановочные шифры\r\r 8.4.2. Перестановочные шифры\r\r 8.4.3. Роторные машины\r\r 8.4.4. Шифрование с помощью компьютера\r\r 8.5. Протоколы\r\r 8.5.1. Защищенное взаимодействие\r\r 8.5.2. Сеансовые ключи в гибридных протоколах\r\r 8.5.3. Аутентификация\r\r 8.5.4. Атаки с воспроизведением и одноразовые метки\r\r 8.6. Примеры применения рассмотренных алгоритмов\r\r 8.6.1. Сертификация X.509\r\r 8.6.2. Инфраструктура сертификации SPKI\r\r 8.6.3. Аутентификация и обмен ключами\r\r 8.6.4. Программа Pretty Good Privacy\r\r 8.6.5. Протокол Secure Sockets Layer\r\r 8.7. Резюме\r\r Контрольные вопросы
Часть II. Управление взаимодействием\r\r между процессами \r\r Глава 9. Взаимодействие процессов\r\r \r\r 9.1. Системы с единым адресным пространством процессов\r\r 9.1.1. Размещение процессов, выполняющих подсистемы\r\r 9.2. Процессы с раздельными адресными пространствами\r\r 9.3. Выполнение процессами кода операционной системы\r\r 9.4. Варианты размещения процессов \r\r 9.5. Необходимость взаимодействия процессов\r\r 9.6. Типы взаимодействия процессов\r\r 9.7. Особенности взаимодействия процессов\r\r 9.7.1. Совместное использование данных в памяти\r\r 9.7.2. Отсутствие общих данных в памяти \r\r 9.7.3. Уровень структуризации параллельности\r\r 9.8. Определение одного действия процесса\r\r Контрольные вопросыГлава 10. Реализация низкоуровневой синхронизации\r\r 10.1. Синхронизация процессов и механизм “ждать-сигнализировать”\r\r 10.2. Взаимное исключение\r\r 10.3. Аппаратная поддержка взаимного исключения\r\r 10.4. Семафоры\r\r 10.5. Способы использования семафоров\r\r 10.5.1. Взаимное исключение\r\r 10.5.2. Условная синхронизация\r\r 10.5.3. Использование более одного экземпляра ресурсам\r\r 10.6. Реализация операций семафора\r\r 10.6.1. Параллельная реализация семафоров\r\r 10.6.2. Планирование очереди semWait(), инверсия приоритетов \r\r и наследование\r\r \r\r 10.6.3. Реализация семафоров на пользовательском уровне\r\r 10.7. Резюме\r\r Контрольные вопросыГлава 11. Алгоритмы низкоуровневой синхронизации\r\r 11.1. Введение\r\r 11.2. Семафоры как базовый механизм синхронизации\r\r 11.3. Проблема “производитель-потребитель” \r\r 11.3.1. Обмен данными через буфер\r\r 11.3.2. Определение циклического буфера\r\r 11.3.3. Один производитель, один потребитель\r\r 11.3.4. Много производителей, много потребителей\r\r 11.4. Надежность программ и их жизнеспособность\r\r 11.5. Проблема “писатель и читатели”\r\r 11.6. Ограничения, налагаемые на использование семафоров\r\r 11.7. Счетчики событий и секвенсоры\r\r 11.7.1. Применение счетчиков событий\r\r 11.7.2. Применение секвенсоров \r\r 11.7.3. Решение задачи “производитель-потребитель”\r\r 11.7.4. Реализация счетчиков событий и секвенсоров\r\r 11.7.5. Достоинства и недостатки счетчиков событий и секвенсоров \r\r 11.8. Потоки POSIX\r\r 11.8.1. Объекты, дескрипторы и атрибуты \r\r 11.8.2. Синхронизация\r\r 11.8.3. Операции пакета pthread\r\r 11.9. Резюме\r\r 11.10. Учебный пример: управление дисковым кэшем\r\r 11.10.1. Чтение и запись дисковых данных\r\r 11.10.2. Выделенные и свободные буферы \r\r 11.10.3. Структура буфера\r\r 11.10.4. Алгоритмы для доступа к буферу\r\r Вопросы и упражнения к учебному примеру\r\r Контрольные вопросыГлава 12. Взаимодействие между процессами с общей памятью \r\r 12.1. Критические секции в языках программирования\r\r 12.2. Мониторы\r\r 12.2.1. Средства синхронизации в языке Java\r\r 12.2.2. Критические секции в языке Java \r\r 12.2.3. Условная синхронизация в языке Java\r\r 12.2.4. Реализация мониторов в языке Java\r\r 12.2.5. Дополнительные вопросы, связанные с мониторами\r\r 12.2.6. Единый класс для доступа к ресурсам\r\r 12.2.7. Менеджер циклического буфера\r\r 12.2.8. Решение проблемы читателей и писателей\r\r 12.2.9. Практика применения мониторов\r\r 12.3. Синхронизация на уровне целых операций\r\r 12.3.1. Формулы маршрута \r\r 12.3.2. Активные объекты\r\r 12.4. Резюме\r\r Контрольные вопросыГлава 13. Взаимодействие между процессами и структура системы\r\r 13.1. Виды взаимодействия между процессами\r\r 13.2. Структура системы и IPC с общей памятью\r\r 13.3. Структура системы и IPC без общей памяти\r\r 13.4. Область применения метода взаимодействия через общую память\r\r 13.5. Системы с обязательным разделением процессов\r\r 13.6. Взаимодействие процессов в операционной системе UNIX\r\r 13.7. Обзор механизмов взаимодействия между процессами \r\r 13.8. Функциональная эквивалентность двух типов системной архитектуры\r\r 13.9. Именование в параллельных и распределенных системах\r\r 13.10. Резюме\r\r Контрольные вопросыГлава 14. Взаимодействие между процессами без общей памяти\r\r 14.1. Введение\r\r 14.2. Файлы для общих данных\r\r 14.3. Каналы UNIX\r\r 14.3.1 Конвейеризация команд\r\r 14.3.2. Недостатки каналов\r\r 14.4. Передача сообщений\r\r 14.5. Разновидности передачи сообщений\r\r 14.5.1. Сообщение от произвольного отправителя\r\r 14.5.2. Примитивы запроса и ответа\r\r 14.5.3. Несколько портов на процесс\r\r 14.5.4. Входные и выходные порты\r\r 14.5.5. Глобальные порты\r\r 14.5.6. Широковещание и мультивещание\r\r 14.5.7. Перенаправление сообщений\r\r 14.5.8. Время ожидания\r\r 14.5.9. Удаление устаревших сообщений\r\r 14.6. Реализация асинхронной передачи сообщений\r\r 14.7. Применение синхронной передачи сообщений\r\r 14.8. Поддержка передачи сообщений языками программирования\r\r 14.8.1. Каналы occam для синхронного взаимодействия\r\r 14.8.2. Абстракции языка Linda\r\r 14.9. Многопоточные клиентские и серверные процессы\r\r 14.10. Резюме\r\r Контрольные вопросыГлава 15. Отказоустойчивость и постоянные данные\r\r 15.1. Отказ системы\r\r 15.2. Модель отказа сбой-остановка\r\r 15.3. Понятие отказоустойчивости\r\r 15.4. Идемпотентные операции\r\r 15.5. Атомарные операции над постоянными объектами\r\r 15.5.1. Энергозависимая, постоянная и стабильная память\r\r 15.6. Реализация атомарных операций\r\r 15.6.1. Протоколирование\r\r 15.6.2. Теневое выполнение операций\r\r 15.7. Энергонезависимая память\r\r 15.8. Одна операция над постоянными данными\r\r 15.9. Требования СУБД к операционной системе\r\r 15.10. Резюме\r\r Контрольные вопросыГлава 16. Взаимодействие между процессами в распределенной системе\r\r 16.1. Введение\r\r 16.2. Специфические характеристики распределенных систем\r\r 16.3. Взаимодействие между процессами методом передачи сообщений\r\r 16.3.1. IPC в распределенной системе\r\r 16.3.2. Распределенная асинхронная передача сообщений\r\r 16.4. Интеграция IPC с сетевым сервисом\r\r 16.4.1. Взаимодействие между процессами через сокеты\r\r 16.5. Сокеты и потоки Java\r\r 16.5.1. Пакет java.net\r\r 16.5.2. Реализация клиента\r\r 16.5.3. Асинхронная передача сообщений\r\r 16.6. Парадигмы распределенного программирования\r\r 16.6.1. Синхронное и асинхронное взаимодействие\r\r 16.6.2. Процедурное взаимодействие и передача сообщений\r\r 16.7. Удаленный вызов процедур\r\r 16.7.1. Системы с поддержкой RPC\r\r 16.7.2. Учет вероятности перегрузки сети или сервера\r\r 16.7.3. Учет вероятности отказа отдельных узлов\r\r 16.7.4. Язык CCLU\r\r 16.7.5. RPC и эталонная модель OSI\r\r 16.8. Интеграция RPC и языков программирования\r\r 16.8.1. Прозрачность распределенной реализации\r\r 16.8.2. Маршалинг аргументов\r\r 16.8.3. Объектно-ориентированные системы\r\r 16.8.4. Проверка типов и согласованность версий \r\r 16.8.5. Представление данных в гетерогенной среде\r\r 16.9. Пакет java.rmi\r\r 16.9.1. RMI и объектная модель\r\r 16.9.2. Механизмы RMI\r\r 16.9.3. Пример использования RMI\r\r 16.9.4. Сравнение RMI с механизмом сокетов\r\r 16.10. Недостатки синхронного вызова\r\r 16.11. Именование, поиск и связывание\r\r 16.11.1. Именование объектов с использованием IPC\r\r 16.11.2. Поиск имен объектов\r\r 16.11.3. Архитектура ANSA\r\r 16.12. Резюме\r\r Контрольные вопросы
Часть III. Управление транзакциями \r\r Глава 17. Составные операции\r\r \r\r 17.1. Выполнение составной операции\r\r 17.2. Данные в основной памяти\r\r 17.3. Данные в постоянной памяти\r\r 17.3.1. Составные операции в файловых системах\r\r 17.3.2. Составные операции в СУБД\r\r 17.4. Параллельное выполнение составных операций\r\r 17.4.1. Оценка необходимости параллельного выполнения\r\r 17.5. Проблемы параллельного выполнения составных операций\r\r 17.5.1. Неконтролируемое чередование подопераций\r\r 17.5.2. Видимость результатов подопераций\r\r 17.5.3. Взаимоблокировка\r\r 17.6. Отказ системы\r\r 17.7. Резюме\r\r Контрольные вопросыГлава 18. Выделение ресурсов и взаимоблокировка\r\r 18.1. Требования к динамическому выделению ресурсов\r\r 18.2. Взаимоблокировка процессов\r\r 18.3. Активная блокировка и зависание процесса\r\r 18.4. Условия взаимоблокировки\r\r 18.4.1. Предотвращение взаимоблокировки\r\r 18.5. Проблема обедающих философов\r\r 18.6. Граф выделения ресурсов\r\r 18.7. Выявление взаимоблокировки\r\r 18.7.1. Алгоритм выявления взаимоблокировки\r\r 18.7.2. Пример выявления взаимоблокировки\r\r 18.7.3. Устранение взаимоблокировки\r\r 18.8. Предупреждение взаимоблокировки\r\r 18.8.1. Проблемы, связанные с предупреждением взаимоблокировки\r\r 18.9. Информация об освобождении объектов, многостадийные процессы\r\r 18.10. Взаимоблокировка распределенных процессов\r\r 18.10.1. Выявление взаимоблокировки распределенных процессов\r\r 18.11. Резюме\r\r Контрольные вопросы\r\r Глава 19. Транзакции\r\r 19.1. Введение\r\r 19.2. Определение транзакций в приложении\r\r 19.3. Сериализуемость\r\r 19.4. Свойства транзакций\r\r 19.5. Допустимые схемы выполнения транзакций\r\r 19.6. Модель системы и обработка транзакций\r\r 19.6.1. Некоммутативные пары операций\r\r 19.6.2. Условие сериализуемости\r\r 19.7. Граф зависимостей транзакций\r\r 19.8. История транзакций\r\r 19.9. Отмена транзакций и свойство изолированности\r\r 19.9.1. Каскадная отмена транзакций\r\r 19.9.2. Возможность восстановления состояния системы \r\r 19.10. Резюме\r\r Контрольные вопросыГлава 20. Параллельное выполнение транзакций\r\r 20.1. Введение\r\r 20.2. Обработка объектов в основной памяти\r\r 20.2.1. Централизованная система\r\r 20.2.2. Распределенная система\r\r 20.2.3. Подходы к разработке параллельных программ\r\r 20.3. Структура системы обработки транзакций\r\r 20.4. Методы на основе блокирования\r\r 20.4.1. Двухфазное блокирование\r\r 20.4.2. Пример двухфазного блокирования\r\r 20.4.3. Семантическое блокирование\r\r 20.4.4. Взаимоблокировка при использовании метода\r\r двухфазного блокирования\r\r \r\r 20.5. Упорядочение по отметкам времени\r\r 20.5.1. Изолированность транзакций\r\r 20.6. Оптимистическое управление транзакциями\r\r 20.7. Резюме\r\r Контрольные вопросыГлава 21. Восстановление состояния системы\r\r 21.1. Необходимость восстановления\r\r 21.2. Восстановление состояния объекта\r\r 21.3. Параллельное выполнение, отказы и свойства транзакций\r\r 21.4. Протоколирование и теневое выполнение\r\r 21.5. Восстановление с использованием журнала\r\r 21.5.1. Записи в журнале и их использование при восстановлении\r\r 21.5.2. Опережающая запись в журнал\r\r 21.5.3. Контрольные точки\r\r 21.6. Идемпотентные операции отмены и повтора\r\r 21.7. Состояние транзакции на момент сбоя\r\r 21.8. Алгоритм восстановления\r\r 21.9. База данных координат мобильных объектов\r\r 21.10. Резюме\r\r Контрольные вопросыГлава 22. Распределенные транзакции\r\r 22.1. Объектная модель для распределенных систем\r\r 22.2. Распределенная обработка транзакций\r\r 22.3. Взаимодействие распределенных компонентов системы\r\r 22.4. Метод двухфазного блокирования\r\r 22.5. Метод упорядочения по отметкам времени \r\r 22.6. Оптимистический метод\r\r 22.7. Фиксация и отмена транзакций\r\r 22.8. Протокол двухфазной фиксации\r\r 22.9. Протокол двухфазного подтверждения\r\r 22.10. Резюме\r\r Контрольные вопросыГлава 23. Управление распределенной обработкой\r\r 23.1. Введение\r\r 23.2. Группы процессов\r\r 23.2.1. Выборы координатора\r\r 23.3. Согласование реплик данных\r\r 23.3.1. Сбор кворума для обеспечения строгой согласованности\r\r 23.3.2. Крупномасштабные системы\r\r 23.4. Упорядочение доставки сообщений\r\r 23.4.1. Векторные часы\r\r 23.5. Взаимное исключение в распределенной системе\r\r 23.5.1. Реплицированные и распределенные объекты данных\r\r 23.5.2. Алгоритмы взаимного исключения\r\r 23.6. Резюме\r\r Контрольные вопросы
Часть IV. Примеры реальных систем \r\r Глава 24. UNIX\r\r \r\r 24.1. Эволюция UNIX\r\r 24.2. Структура системы и ядро UNIX\r\r 24.2.1. Системные вызовы и выполнение кода ядра\r\r 24.2.2. Управление устройствами\r\r 24.2.3. Буферный кэш\r\r 24.3. Файловая система\r\r 24.3.1. Монтирование файловых систем\r\r 24.3.2. Каталоги\r\r 24.4. Реализация файловой системы\r\r 24.4.1. Индексные узлы\r\r 24.4.2. Файлы каталогов\r\r 24.4.3. Защита доступа\r\r 24.4.4. Выделение дисковых блоков \r\r 24.4.5. Структуры данных в основной памяти\r\r 24.4.6. Согласованность файловой системы\r\r 24.5. Управление процессами\r\r 24.5.1. Создание процессов\r\r 24.5.2. Синхронизация между родительским и дочерним процессами\r\r 24.5.3. Создание процессов при инициализации системы\r\r 24.5.4. Создание процесса интерпретатором команд\r\r 24.5.5. Планирование процессов\r\r 24.5.6. Свопинг и страничная подкачка\r\r 24.5.7. Состояния процесса\r\r 24.6. Взаимодействие между процессами в классической UNIX \r\r 24.6.1. Каналы между командами\r\r 24.6.2. Сигналы\r\r 24.6.3. Механизмы IPC в классической UNIX\r\r 24.7. Классическая UNIX и ее современные версии\r\r 24.8. Совершенствование структуры ядра\r\r 24.8.1. Загружаемые модули ядра\r\r 24.8.2. Потоковый интерфейс ядра\r\r 24.9. Совершенствование механизма обработки прерываний\r\r 24.10. Поддержка параллельного выполнения процессов\r\r 24.10.1. Взаимодействие между процессами в SVr4\r\r 24.10.2. Сокеты и именованные каналы\r\r 24.11. Новые механизмы управления памятью\r\r 24.12. Поддержка мультипроцессорной обработки\r\r 24.13. Резюме\r\r Контрольные вопросыГлава 25. Windows 2000\r\r 25.1. Введение \r\r 25.1.1. Свойства системы\r\r 25.2. Структура системы\r\r 25.2.1. Компоненты исполнительной системы\r\r 25.3. Объектная модель и менеджер объектов\r\r 25.3.1. Использование объектов\r\r 25.3.2. Структура объекта\r\r 25.3.3. Типы объектов\r\r 25.3.4. Имена объектов и каталогов\r\r 25.3.5. Дескрипторы объектов\r\r 25.3.6. Методы объекта, специфические для конкретного типа\r\r 25.3.7. Защита объектов\r\r 25.4. Ядро\r\r 25.4.1. Объекты, процессы и потоки ядра \r\r 25.4.2. Планирование и диспетчеризация потоков\r\r 25.4.3. Обработка прерываний и исключений\r\r 25.5. Процессы, потоки, нити\r\r 25.5.1. Синхронизация потоков\r\r 25.5.2. Оповещения и асинхронные вызовы процедур\r\r 25.5.3. Управление памятью\r\r 25.6. Подсистема ввода-вывода\r\r 25.6.1. Особенности архитектуры подсистемы ввода-вывода\r\r 25.6.2. Обработка ввода-вывода\r\r 25.6.3. Модель драйверов Windows\r\r 25.7. Файловая система NTFS\r\r 25.7.1. Архитектура NTFS \r\r 25.8. Сетевое взаимодействие\r\r 25.9. Резюме\r\r Контрольные вопросыГлава 26. World Wide Web\r\r 26.1. Взаимодействие между клиентом и сервером Веб\r\r 26.2. Именование веб-страниц\r\r 26.3. Протокол HTTP\r\r 26.4. Структура документа\r\r 26.5. Выполнение программ на сервере и клиенте\r\r 26.6. Защита\r\r 26.6.1. Контроль доступа \r\r 26.6.2. Передача конфиденциальных данных \r\r 26.6.3. Мобильный код \r\r 26.7. Управление параллельным доступом\r\r 26.8. Масштабируемость\r\r 26.9. Язык XML и протокол SOAP\r\r 26.10. Резюме\r\r Контрольные вопросыГлава 27. Промежуточное программное обеспечение\r\r 27.1. Парадигмы промежуточного программного обеспечения\r\r 27.1.1. Эволюция объектно-ориентированного промежуточного программного обеспечения\r\r 27.2. Промежуточная платформа Java\r\r 27.2.1. Java как технология программирования для Веб\r\r 27.2.2. Удаленный вызов методов в Java\r\r 27.2.3. Технологии Jini и JavaSpaces\r\r 27.2.4. Компонентная модель JavaBeans\r\r 27.2.5. Сервис передачи сообщений Java\r\r 27.2.6. Технология JXTA\r\r 27.3. Технологии OMG\r\r 27.3.1. Компоненты модели OMA\r\r 27.3.2. Объектная модель OMG\r\r 27.4. Инфраструктура CORBA\r\r 27.4.1. Ядро брокера объектных запросов\r\r 27.4.2. Язык описания интерфейсов OMG\r\r 27.4.3. Остальные компоненты инфраструктуры CORBA\r\r 27.4.4. Поддержка асинхронной передачи данных в CORBA\r\r 27.5. Консорциум ODMG\r\r 27.6. Технологии COM, DCOM и .NET\r\r 27.7. Промежуточные платформы, ориентированные на передачу сообщений\r\r 27.7.1. Система передачи сообщений MQSeries\r\r 27.7.2. Система TIB/Rendezvous\r\r 27.8. РезюмеКонтрольные вопросы \r\r Литература \r\r Алфавитный указатель