- •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 предусмотрена поддержка симметричной многопроцессорной обработки (SMP). Особенность этой модели – нет главного процессора, код ОС как и код приложений может выполняться на любом процессоре. Все процессоры используют общую память (виртуальную, которая отображается на реальную память всех процессоров). Примечание: асимметричная многопроцессорная обработка (ASMP). Особенность: ОС выполняется целиком на одном процессоре, а приложения – на других (слайд 9).
ОС Windows XP и Windows 2003 Server.поддерживают два новых типа многопроцессорной обработки: логические процессоры (multithreading, hyperthreading, см. аппаратные средства и обработку NUMA).
Логические процессоры – технологии Intel, на одном процессоре эмулируются два и более логических процессоров, позволяют одному логическому процессору работать, другому – ожидать. При этом в реальном процессоре механизм выполнения (Executive Engine) один и кэш тоже один (общий).
Технология приводит к специфичным алгоритмам планирования и диспетчирования процессов. Идея: в NUMA системах процессоры группируются в блоки, называемые узлами. В каждом узле имеется своя память. Узлы связываются специальной шиной. Примечание: в случае NUMA систем Windows работает в них как в SNP системах. Идея: ОС повышает производительность, выделяя потокам время на процессорах, которые менее загружены или по каким-то другим соображениям. Windows, функционирующая на 32-разрядной платформе, поддерживает 32 процессора (32-разрядная маска, каждый бит – подпроцессор). 64-разрядный Windows поддерживает до 64 процессоров. Реальное количество процессоров зависит от версии Windows или его выпуска. Число поддерживаемых процессоров хранится в параметре реестра. Кто искусственным способом внес изменения в число поддерживаемых процессоров для конкретной установки ОС – нарушитель лицензионного соглашения. В силу этого ядро и HAL также имеет одно- и многопроцессорные версии. В Windows 2000 другие шесть системных файлов, в Windows Server 2003 и XP в трех системных файлах. В 64-разрядных версиях отличия только в ядре и HAL. Соответствующие версии файлов копируются при установке ОС в системный каталог Windows / system32. Чтобы посмотреть, что скопировалось при установке, надо посмотреть журнал установки. Примечание: отдельная разработка и компиляция этих файлов необходима для повышения производительности системы в целом. Например, возникает задача синхронизации работы нескольких процессоров и их загрузки. Задача сложная, в однопроцессорных системах ее нет. Замечание: согласно Руссиновичу, однопроцессорные и многопроцессорные версии ядра ntoskernel создаются засчет компиляции одного и того же исходного кода. При этом в случае многопроцессорных версий машинные команды lock и unlock используются для синхронизации множества потоков, заменяются командой ассемблера nop (нет операции). Остальные файлы одинаковые для тех и других систем.
Масштабируемость – одна из ключевых задач многопроцессорных систем, т.е. возможность функционирования независимо от количества работающих в текущий момент процессоров. Это достигается в ОС Windows следующими способами:
1) код ОС может выполняться на любом процессоре в случае его доступности. Все потоки одного процесса могут выполняться параллельно на отдельных процессорах;
2) тонкая синхронизация процессоров ядром – мьютексы, семафоры, спин-блокировки и др.
Механизмы поддержки многопроцессорных систем улучшались от версии к версии. Например в Windows 2003 Server планирование процессов и потоков, их параллельное выполнение осуществляются для каждого процессора.
