- •1. Понятие вычислительной системы
- •1.1. Модель вычислителя
- •1.2. Модель коллектива вычислителей
- •1.3. Понятие параллельных алгоритмов
- •1.4. Принципы технической реализации модели коллектива вычислителей
- •1.9. Распределенные вычислительные системы
- •1.5. Классификация архитектур вычислительных систем
- •1.6. Конвейерные вычислительные системы
- •1.7. Матричные вычислительные системы
- •1.8. Мультипроцессорные системы
- •1.10. Вычислительные системы с программируемой структурой
- •1.11. Примеры реализаций вычислительных систем.
- •2. Аппаратные средства вс
- •2.1. Прерывания
- •2.2. Многомодульное программирование
- •2.3. Реализация архитектурных решений. Обзор технологий процессоров Intel
- •3. Ос. Основные понятия и типы операционных систем
- •3.1. Основные технологии программирования
- •3.2. Общие подходы к построению ос. Классификация ос.
- •3.3. Основные функции ос
- •3.4. Подходы к построению ос.
- •3.5. Виртуализация
- •3.6. Подходы Oracle
- •3.7. Центры обработки данных (цод)
- •Инструментарий ос (на основе Windows)
- •Основные базовые понятия: процессы и потоки
- •Инструментарий
- •Режим ядра и пользовательский режим
- •Средства изучения внутреннего устройства Windows
- •Основные концепции построения Windows
- •Архитектура современных ос
- •Лекция Основные требования при проектировании
- •Модель ос Windows
- •Обзор архитектуры
- •Многопроцессорная обработка
- •Различия между клиентскими и серверными версиями ос Windows
- •Лекция. Проверочный выпуск ос
- •Ключевые компоненты системы
- •Подсистема окружения
- •Подсистема окружения Windows
- •Исполнительная система Windows
- •Объекты ядра
- •Поддержка оборудования
- •Уровень абстрагирования от оборудования (Hardware Abstraction Layer)
- •Драйверы устройств в ос Windows
- •Недокументированные интерфейсы
- •Системные процессы
- •Прерывания (interrupts) и dpc (deferred procedure calls)
- •Процесс system и его потоки
- •Диспетчер сеансов
- •Диспетчер управления сервисами
- •Системные механизмы Windows
- •Виртуальная память
- •Режим ядра и пользовательский режим
- •Другие механизмы
- •Уровни запросов программных прерываний
- •Объекты прерывания
- •Программные прерывания
- •Прерывания apc (Asynchronous Procedure Call)
- •Диспетчеризация исключений
- •Необработанные исключения
- •Поддержка отчетов об ошибках
- •Диспетчеризация системных сервисов
- •Диспетчеризация 32-разрядных системных сервисов
- •Диспетчеризация системных сервисов режима ядра
- •Диспетчер объектов
- •Объекты исполнительной системы
- •Структура объектов в Windows
- •Заголовки и тела объектов
- •Объекты типа
- •Атрибуты объекта типа
- •Методы объекта
- •Описатели объектов и таблица описателей
- •Глобальные флаги Windows
- •Трассировка событий ядра
- •Управление процессами и потоками
- •Внутреннее устройство процессов
- •Создание процессов
- •Внутреннее устройство процессов. Структуры данных
- •Внутреннее устройство потоков
- •Основные блоки описания потоков в ос Windows
- •Взаимодействие процессов (ipc)
- •Взаимоисключения
- •Синхронизация в Windows
- •Спин-блокировки
Синхронизация в Windows
Концепция взаимоисключения является одной из ключевых при разработке Windows. Идея: в каждый момент времени к конкретному ресурсу может обращаться один и только один поток.
Взаимоисключение предназначено для разделения обращения к ресурсам, если это может привести к непредсказуемым последствиям.
Разделы кода, обращающиеся к ресурсам, которые не являются разделяемыми, называются критической секцией. В критической секции может выполняться только один поток (доступ других потоков при выполнении одного запрещен).
В Windows поддержка механизмов, с помощью которых можно предотвратить одновременное изменение двумя потоками одной и той же структуры, возлагается на ядро. Ядро предоставляет специальные примитивы синхронизации (взаимоисключения), которые используются исполнительной системой и другими участниками вычислительного процесса при доступе к глобальным данным. Таким образом, критическими секциями ядра ОС являются те, которые модифицируют глобальные структуры данных ядра, например, базы данных диспетчера ядра или очередь DPC. Ввиду того. что осуществляется многопоточность, гарантия должна быть 100%, что взаимные исключения доступа потоков к этим структурам исключена.
Считается, что наибольшая проблема в момент обработки прерываний. При обработке информации из глобальных структур данных может возникнуть прерывание, которое, в свою очередь, тоже изменит эту структуру, т.е. сложность возрастает лавинообразно.
Чтобы исключить эту ситуацию, один из механизмов, реализованный в ОС Windows – увеличение приоритета того или иного потока до максимального, чтобы невозможно было его прервать. Недостаток этой структуры: работает только в однопроцессорных системах. В противном случае на другом процессоре возможна своя система приоритетов.
Спин-блокировки
Для многопроцессорных систем применяется механизм взаимоисключения, который называется spin-lock.
Спин-блокировка – блокирующий примитив, сопоставленный с какой-то структурой данных (слайд 62).
