- •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
- •Спин-блокировки
Лекция Основные требования при проектировании
Расширяемость – код ОС должен быть написан так, чтобы его можно было легко модифицировать, минимально затрагивая компоненты системы.
Переносимость – система должна работать на разных аппаратных платформах и легко переходить на другую аппаратную платформу.
Отказоустойчивость – система должна быть защищена как от внутренних сбоев (например, электропитание), так и внешних деструктивных воздействий.
Совместимость – ОС должна иметь возможность запускать приложения, которые модифицировались по «вертикали» (старые и новые версии приложений) и по «горизонтали» (производители фирм-конкурентов слева и справа).
Производительность – ОС должна максимально эффективно выполнять программы, загружать имеющиеся ресурсы (старая версия -> целевая функция f(X1, …, Xn)->max -> новая версия).
Модель ос Windows
Руссинович «Windows Internals»
Windows является ОС монолитной архитектуры – большая часть ее кода использует единое адресное пространство. разлделяемое компонентами ОС. Замечание: с точки зрения безопасности не есть хорошо, т.к. если есть ошибка в системном компоненте, возможно разрушение в системе, а также в случае подмены компонента на чужой возможно разрушение сисстемы к определенному моменту времени.
Примечание: Windows не является ОС в классическом понимании микроядерной архитектуры. В целом, микроядерная архитектура имеет высокую надежность, но при увеличении функций ОС большие системные затраты.. В силу этого все компоненты Windows имеют сертификат (подпись) надежности. Кроме того, компоненты ОС защищены от воздействия приложений, которые не имеют прямого доступа к коду и данным привилегированной части ОС.
Компоненты ядра построены на принципах объектно-ориентированного программирования. Для получения информации о состоянии какого-либо компонента они обращаются к структурам, описывающим данный компонент. При обращении к структурам (чтение, запись) ипользуются стандартные интерфейсы.
Замечание: несмотря на использование объектной модели в целом представление ресурсов не является в строгом понимании объектно-ориентированного подхода. Это связано с тем, что в целом ОС написана на C|/C++, которые не позволяют полностью реализовать концепцию ООП (нет механизмов ООП по динамическому связыванию данных, полиморфных функций и др.).
Обзор архитектуры
Обобщенная схема архитектуры ОС Windows представлена на слайде 7.
Замечание: не все компоненты.
Особенность: разделение всех исполняемых процессов на пользовательские и ядра.
Потоки пользовательских процессов выполняются в защищенных адресных пространствах процессов и могут получать доступ к системному пространству с помощью сервисов ОС. Кроме того, процессы системы также имеют свое адресное пространство.
В ОС Windows можно выделить следующие четыре типа пользовательских процессов:
1) фиксированные процессы поддержки системы (System Support Processes) – процессы, не являющиеся сервисами Windows (не запускаются диспетчером сервисов);
2) процессы сервисов (Service Processes) – выполняют задачи Windows сервисов;
3) пользовательские приложения (User Applications) – на момент написания книги различалось шесть типов:
а) 32-ращзрядный Windows;
б) 64-разрядный Windows;
в) 16-разрядный Windows 3.1;
г) 16-разрядный MSDOS.
д) 32-разрядный POSIX;
е) 32-разрядный OS/2;
4) процессы подсистемы окружения (Environment subsystem processes) – реализованы для поддержки пользователей по обращению к функциям ОС.
Изначально Windows поставлялась с тремя подсистемами окружения: Windows, POSIX, OS/2.
OS/2 была изъята в Windows 2000. В Windows XP поддерживается только подсистемы Windows, а поддержка POSIX реализована в продукте Services for Unix (можно найти на майкрософте).
5) DLL подсистемы. Пользовательские приложения, работающие в ОС Windows не могут вызывать некоторые сервисы ОС напрямую. DLL подсистемы являются посредником для обращения к выполнению функций ОС, т.е. трансляция API во внутренние вызовы системных сервисов ОС Windows.
Компоненты режима ядра:
1) исполнительная система (Executive system) содержит базовые сервисы ОС (управление процессами, потоками, памятью, вводом-выводом и другими ресурсами). Включает ядро (Kernel). Выполняет низкоуровневые функции ОС (планирование потоков, диспетчеризация прерываний исключений, синхронизация и др.). Предоставляет набор процедур и объектов более высокому уровню.
2) Драйверы устройств – драйверы аппаратной части ЭВМ.
3) Уровень абстрагирования от оборудования HAL (Hardware Abstraction Level) – изолирует ядро, драйверы и всю исполнительную систему в целом от специфики аппаратуры. Замечание: особенностью ОС Windows является то, что подсистема поддержки окон и графики выполняется в режиме ядра.
Основные системные файлы Windows изображены на слайде 8. NT SYS Kernel – , расширенная поддержка адресации памяти (до 64 ГБ).
Переносимость. Изначально Windows проектировалась на платформы фирмы Intel и платформы Risk-систем.
Первоначально поддерживались платформы X86 (Intel) и MIPS (Risk). Впоследствии была введена поддержка Alpha Dec.
В Windows NT 3.51 была введена поддержка четвертой платформы, которая называлась PowerPC.
Использование той или иной версии платформы мониторилось в связи с той или иной конъюнктурой рынка. Поэтому MIPS, Aplha и PowerPC были сняты.
В Windows 2000 осталась поддержка только X86 (Intel Architecture 32).
В дальнейшем в Windows XP и Windows 2003 Server была добавлена поддержка 64-разрядных процессоров: IA-64, AMD-64, EM64T (расширенная Intel Architecture).
Замечание: различие поддерживаемых платформ заключалось в следующем: различный набор машинных команд, различное количество регистров и другой внутрипроцессорной аппаратуры.
Переносимость Windows обеспечивается следующими способами:
1) ОС имеет многоуровневую архитектуру: низкоуровневые части ОС вынесены в отдельные модули, высокоуровневая часть ОС таким образом не зависит от специфики аппаратной части. Ключевые компоненты, обеспечивающие переносимость – ядро (ntoskrnl.exe) и HAL (hal.dll). Функции, которые отличаются в зависимости от аппаратуры, реализованы в HAL. Функции, не зависящие от аппаратуры (переключение контекста потоков, диспетчеризация) реализованы в ядре.
2) язык ассемблера применяется, как правило, для той части, которая непосредственно связана с оборудованием. Примечание: ассемблерный код также имеется в некоторых других частях ОС.
