- •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
- •Спин-блокировки
Прерывания apc (Asynchronous Procedure Call)
Позволяют выполнять пользовательские приложения и системный код ОС в одном контексте (адресном пространстве) пользовательского процесса.
Замечание: APC ставятся в очередь и выполняются при IRQL уровне ниже DPC и на работу их также накладывается ограничение. APC, как и DPC, описываются управляющим APC-объектом ядра.
APC, ждущие своего выполнения, находятся в очереди, как и DPC. Очередь рассасывается ядром.
Замечание: поскольку APC (в отличие от DPC) специфичны для конкретного процесса, у каждого своя очередь APC. При запросе на постановку в APC очередь ядро помещает его в ту очередь, которая соответствует процессу. Ядро генерирует программное прерывание, которое выполняет APC при выполнении процесса.
APC, кроме того, бывают двух видов: режима ядра и пользовательского режима.
В первом случае для его выполнения в контексте процесса не нужно разрешения процесса. APC режима ядра прерывает процесс и выполняет процедуру без вмешательства или согласия процесса. APC режима ядра, в свою очередь, тоже бывает двух типов: обычные и специальные. Процесс может отключить все APC режима ядра, повысив уровень до APC level, либо процесс может отключить обычные, некоторые.
Замечание: исполнительная система использует APC режима ядра для тех задач ОС, которые нужно выполнить в контексте (адресном пространстве) конкретного процесса. Например, через специальный APC режима ядра может быть прекращено выполнение какого-нибудь системного сервиса. APC также применяется драйверами устройств. Например, если инициирован ввод-вывод и процесс переходит в ожидание окончания ввода-вывода, может быть инициирован другой процесс, причем он может быть выполнен в контексте прерванного процесса.
Диспетчеризация исключений
Примечание: исключения, в отличие от прерываний, есть следствия выполнения какой-либо программы.
В Windows вводят понятие структурной обработки исключений, которая называется Structured Exception Handling (SEH). Его задача: передача управления приложению для того, чтобы обработать или исправить исключение. Это позволяет строить обработку исключений таким образом, что она не зависит от конкретного языка программирования, т.е. строить на основе системного механизма.
Все исключения, как и прерывания, имеют предопределенные номера прерываний, которым соответствуют записи в IDT. Записи в IDT ссылаются на обработчики ловушек конкретных исключений.
В таблице на слайде 32 представлены номера прерываний, соответствующий некоторым исключениям. Все исключения, так же как и прерывания, обслуживаются диспетчером исключений (Exception Dispatcher). Задача его – подключить обработчик, который может справиться с данным исключением, например, исправить неправильный доступ к памяти, деление на ноль и др.
Следует помнить, что ядро обрабатывает почти все исключения прозрачно, т.е. невидимо для пользовательского приложения. Если исключение невозможно устранить, приложению возвращается код возврата, свидетельствующий об ошибке. Например, команда ассемблера при возврате из процедуры ret имеет возможность указать код завершения, например ret 4. Это значит, что при возврате в вызываемый модуль в регистре eax, например, будет находится 4.
Определенные исключения могут передаваться пользовательским приложением на обработку. Для обработки этих исключений подсистема окружения может устанавливать обработчики исключений на основе SEH-фрейма. При его активизации, т.е. когда происходит исключение, начинает работать ядро, передается управление ловушке по обработке данного исключения. Ловушка создает фрейм (см. аналог прерывания). Созданный фрейм, отработав, позволяет вернуться в то место приложения, где было создано исключение. Если исключение было создано в режиме ядра, то выполняется подходящий для него имеющийся фрейм.
Диспетчеризация исключений представлена на слайде 3. Если исключение возникает в пользовательском режиме, диспетчер исключений предпринимает следующие действия: сначала анализируется, существует ли порт отладки (слайд 33) и порт исключений. Они нужны для приема и выдачи сообщений исключений на экран. Примером исключений являются точки трассировки при отладке какой-либо программы. Если исключение произошло при работе отладчика, это один тип обработки исключений. Если процесс не работает при отладке, т.е. отладчик не может отработать исключение, некому, то диспетчер исключений вызывает процедуру поиска соответствующего фрейма. Все это дает как бы два предупреждения об исключении. Если вдруг отладчик не запущен и фреймы подходящие не найдены, просто ядро посылает соответствующее сообщение.
