- •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
Состоит из следующих основных элементов:
1) процесс подсистемы окружения csrss.exe, который предоставляет следующие возможности: поддержка окон (консольных и др.), поддержка создания и удаления процессов и потоков; участвует в поддержке организации и эксплуатации 16-разрядной DOS виртуальной машины; поддержка специфических функций. связанных с созданием и удалением файлов, поддержки языков и др.
2) драйвер режима ядра Win32K.sys, включающий:
а) диспетчер окон (управляет выводом окон на экран, обрабатывает ввод с клавиатуры и мыши и др.)
б) GDI (Graphic device interface) – библиотека функций для устройств графического вывода
3) DLL модули подсистем: kernel32.dll, advapi32.dll, user32.dll транслируют вызовы документированных функций API в вызовы соответсвующих сервисов ядра. Из NTOSkernel и win32K.
4) драйверы графических устройств – для применения в конкретном оборудовании. Пример: для формирования элементов пользовательского интерфейса на экране (окон и кнопок) стандартные приложения вызывают стандартные функции, а диспетчер окон передает эти вызовы GDI, а тот – драйверам графических устройств, которые форматируют запрос в зависимости от устройства. Примечание: в Windows основная часть кода, ответственного за обработку окон и графики перенесена из контекста процесса подсистемы Windows в набор вызываемых сервисов, выполняемых в режиме ядра (начиная с Windows NT 4.0 файл win32K.sys). Это связано с тем, что процесс, поддерживающий графику, в случае его клиент-серверной организации, требовал многочисленные переключения контекстов процессов с одного на другой (значительные издержки). Поэтому наибольшая эффективность достигается, когда поддержка окон и графики полностью включена и выполняется в режиме ядра.
Подсистема POSIX (слайд 19) – Portable Operating System Interface Based On Unix (переносимый интерфейс ОС на основе Unix) – совокупность международных стандартов на интерфейсы, используемые в ОС Unix.
В Windows заложен один из стандартов POSIX: POSIX.1. Требования включения POSIX в Windows не обеспечивает охвата всего стандарта POSIX, т.е. POSIX.1 – ограниченный набор стандартов, поэтому не все приложения могут выполняться, не является полной средой программирования. Альтернатива – Windows Services For Unix. Включает инструментарий и утилиты, адаптированные из Unix, позволяет переносить в Windows Unix приложения. Замечание: это надо проверить.
Подсистема OS/2, так же как и POSIX, обладает ограниченной функциональностью и поддерживает на момент написания книги Руссиновича 16-разрядные приложения OS/2. Замечание: не поддерживает обращение приложений, которые используют так называемый расширенный ввод-вывод – инструкции прямого обращения к портам: in/out. Подсистема OS/2, использующая 32-разрядную адресацию, может предоставить приложениям OS/2 до 2 ГБ памяти (слайд 20). Структура виртуальной памяти подсистемы представлена на слайде 2 – мозаичная область, зарезервированное адресное пространство, откуда передается и куда возвращается память, используемая приложениями. Ведется таблица локальных дескрипторов с возможностью совместного использования отдельных сегментов. NT.dll – специальная библиотека системной поддержки, необходимая при функционировании DLL-подсистем. Выполняет функции двух типов: интерфейсы диспетчера системных сервисов – сервис к исполнительной системе Windows.
Функции внутренней поддержки, которые используются компонентами DLL-подсистем ОС. Первая часть функций может быть вызвана из пользовательского режима. Пример: ntcreatefile (доступна через WinAPI, но есть и недокументированные, выполняются внутри ОС). Для каждой из перечисленных функций существует точка входа с именем соответствующей функции – механизм, код внутри функции содержит специфичную для аппаратуры команду перехода в режим ядра, который обеспечивает вызов диспетчера системных сервисов, который, в свою очередь, вызывает реальный сервис ядра из ntoskrnl.exe. NT.dll включает также функции поддержки некоторых системных операций: загрузка образов, диспетчера динамически выделяемых областей памяти, диспетчера исключений и др.
