Симметричная многопроцессорная обработка
Архитектура ОС Windows Структура ОС представляет собой вертикально организованную систему из следующих модулей: 1) Уровень аппаратных абстракций (HAL) виртуализирует аппаратные интерфейсы, обеспечивая тем самым независимость остальной части OS от аппаратных особенностей. Такой подход обеспечивает переносимость Windows NT с одной аппаратной платформы на другую. HAL скрывает от верхних слоев операционной системы особенности и различия аппаратуры. Тем самым снимается необходимость специальной настройки ОС на используемое оборудование. HAL позволяет также “скрывать” от остальных, более высоких уровней особенности мультипроцессорных систем. HAL вызывается как средствами OS включая ядро, так и драйверами устройств. 2) Ядро (Kernel) является центром системы и работает в тесном контакте с HAL. Этот модуль занимается планированием действий процессора (при наличии нескольких процессоров синхронизирует их работу с целью достижения максимальной производительности). Основная задача ядра это диспетчеризация всех потоков (threads-нитей управления) которые являются основными объектами в системе. Работа ядра оптимизирует объем и эффективность функционирования оборудования. Ядро отвечает за планирование, выполнения потоков, синхронизацию работы нескольких процессоров, обработку аппаратных прерываний и исключительных ситуаций. Ядро производит диспетчеризацию с целью максимально загрузить все процессоры системы и обеспечить первоочередную обработку потоков с более высоким приоритетом. Исполняющая система обеспечивает работу системного сервиса, лежащего на рисунке выше ядра и состоящего из: § Диспетчера объектов (Object Manager); § Диспетчера виртуальной памяти (Virtual Memory Manager);
§ Диспетчера процессов (Process Manager); § средства вызова локальных процедур (Local Procedure Call Facility); § Диспетчера ввода-вывода (I/O Manager); § Монитора безопасности (Security Reference Monitor); Диспетчер процессов отслеживает два типа объектов: объекты процессов и объекты потоков. Процесс - это адресное пространство, в виде набора доступных процессу объектов и совокупность выполняемых в контексте потоков Поток управления имеет собственный набор регистров, собственный стек ядра, блок среды потока и стек пользователя в адресном пространстве процесса. Диспетчер процессов управляет созданием и завершением процессов и предоставлению набора стандартных услуг по созданию и использованию потоков управления и процессов в контексте специфической подсистемы. Модель процессов работает параллельно с моделью безопасности и диспетчером виртуальной памяти для обеспечения безопасности процессов путем присвоения каждому процессу маркера безопасного доступа (security access token), используемый для проверки правильности доступа, когда потоки обращаются к защищенным объектам.. Диспетчер виртуальной памяти. Архитектура Windows NT основана на плоском линейном адресном пространстве с 32-х разрядным доступом и подкачиваемой по запросу виртуальной памятью. Каждый процесс размещается в уникальном адресном пространстве разделённом на равные страницы или блоки (pages). Каждый процесс может использовать до 4 Гб собственного виртуального пространства, причем 2 Гб из них зарезервированы для нужд программы, а 2 Гб для системы. Средства вызова локальных процедур. Приложение и подсистемы среды реализуют свои взаимоотношения на основе клиент-сервер. Это означает, что для удовлетворения запроса клиент обращается к серверу среды. Исполняющая система представляет средства для прохождения сообщений, которые и называются средствами вызова локальных процедур (LPC) функционирующие аналогично удаленным процедурам (RPC).
Прикладные программы взаимодействуют с подсистемами среды через LPC. Причем сам процесс прохождения скрыт от клиентского приложения функциональными заглушками (stubs), которые являются невыполняемыми фрагментами. Заглушки реализованы в виде DLL библиотек. Когда приглашение выполняет запрос к интерфейсу прикладных программ (API) подсистемы среды, то заглушка клиентского процесса упаковывает параметры для вызова и направляет их серверному процессу (подсистеме), осуществляющее их выполнение. Диспетчер в/в является частью исполняющей среды Windows NT, поддерживает все драйверы файловой системы, сетевые, драйверы аппаратных устройств и обеспечивает для них гетерогенную среду выполнения. Диспетчер в/в предоставляет формальный интерфейс доступный всем драйверам, без какой либо информации о фактическом управлении устройств. Это обеспечивается путем организации многоуровневой архитектуры, позволяющей драйверам устройств отвечать за целостность операций в/в с каждым устройством отдельно. Система безопасности представлена монитором безопасности и обеспечивает: авторизированный процесс входа в систему, работу программ в безопасных защищенных подсистемах. § Процесс входа в систему принимает все запросы от пользователей как локальные так удаленные. § Распорядитель локальной безопасности гарантирует что пользователь имеет разрешение на обращение к системе. § Диспетчер бюджета безопасности поддерживает базу данных бюджетов пользователя. § Монитор безопасности проверяет права доступа к объекту и любые действия пользователя. Модель безопасности Windows NT поддерживает требования к защите данных согласно классу С2 правительства США. § Владелец ресурса должен иметь возможность управлять доступом к ресурсу. § ОС должна защищать объекты от несанкционированного пользования другими процессами. Память после освобождения не должна читаться другими процессами, уничтоженный файл на диске не должен читаться другими процессами. § Перед получением доступа к системе каждый пользователь должен себя идентифицировать. § Администратор системы должен иметь возможность контроля событий связанных с безопасностью системы.
§ Система должна защищать себя от внешнего вмешательства, типа модификации выполняющейся системы или хранимых на диске системных файлов.
Рабочие станции и серверы Windows NT В состав архитектуру Windows NT включены 2 компонента называемые сервером и редиректором. Эти компоненты позволяют приложениям пользователей получать доступ к файлам независимо от места расположения файла. Редиректоры. Представляют собой программную компоненту, посредством которой один компьютер получает доступ к другому компьютеру. Кроме этого в обязанности редиректора входит восстановление связи между компьютерами при разрыве соединений.
Идеология работы редиректора, показанная на рисунке проходит в следующей последовательности: § Приложение или процесс обращается к Менеджеру ввода/вывода с запросом на открытие файла (при этом процессу безразлично где этот файл находится). § Менеджер ввода/вывода определяет куда сделан запрос и если запрос сделан на удаленный компьютер то этот запрос передается редиректору. § Редиректор передает запрос низкоуровневым драйверам, а затем в сеть по схеме описанной выше. Серверы. Компонента сетевой архитектуры Windows NT, называемая сервером, необходима для поддержания соединений, установленных с клиентской стороны, и обеспечивает им доступ к запрашиваемым ресурсам. § При получении низкоуровневыми сетевыми драйверами запроса по сети, запрос передается на уровень драйвера сервера. § Сервер передает запрос на чтение файла соответствующему драйверу локальной файловой системы. § Драйвер системы передает запрос к низкоуровнему драйверу диска. § Полученные данные передаются в обратной последовательности на компьютер клиент.
Характеристики ОС Windows Переносимость Windows рассчитана на разные аппаратные платформы, включая как CISC-системы Intel, так и RISC-системы. Windows NT первого выпуска поддерживала архитектуры х8б и MIPS. Спустя некоторое время была добавлена поддержка Alpha АХР производства
DEC. Хотя Alpha АХР был б4-разрядным процессором, Windows NT работала с ним в 32-разрядном режиме. В ходе разработки Windows 2000 была создана ее 64-разрядная версия специально под Alpha АХР, но в свет она так и не вышла.) В Windows NT 3.51 ввели поддержку четвертой процессорной архитектуры — Motorola PowerPC. В связи с изменениями на рынке необходимость в поддержке MIPS и PowerPC практически отпала еще до начала разработки Windows 2000. Позднее Compaq отозвала поддержку архитектуры Alpha АХР, и в Windows 2000 осталась поддержка лишь архитектуры х8б. В самые последние выпуски — Windows ХР и Windows Server 2003 — добавлена поддержка трех семейств 64-разрядных процессоров: Intel Itanium IA-64, AMD x86-64 и Intel 64-bit Extension Technology (EM64T) для x86 (эта архитектура совместима с архитектурой AMD х8б-б4, хотя есть небольшие различия в поддерживаемых командах). Последние два семейства процессоров называются системами с 64-разрядными расширениями и обозначаются как хб4. Переносимость Windows между системами с различной аппаратной архитектурой и платформами достигается главным образом двумя способами. § Windows имеет многоуровневую структуру. Специфичные для архитектуры процессора или платформы низкоуровневые части системы вынесены в отдельные модули. Благодаря этому высокоуровневая часть системы не зависит от специфики архитектур и аппаратных платформ. Ключевые компоненты, обеспечивающие переносимость ОС, — ядро (содержится в файле Ntoskrnl.exe) и уровень абстрагирования от оборудования (HAL) (содержится в файле Hal.dll). Функции, специфичные для конкретной архитектуры (переключение контекста потоков, диспетчеризация ловушек и др.), реализованы в ядре. Функции, которые могут отличаться на компьютерах с одинаковой архитектурой (например, в системах с разными материнскими платами), реализованы в HAL. Еще один компонент, содержащий большую долю кода, специфичного для конкретной архитектуры — диспетчер памяти (memory manager), но если рассматривать систему в целом, такого кода все равно немного. § Подавляющее большинство компонентов Windows написано на С и лишь часть из них — на C++. Язык ассемблера применяли только при создании частей системы, напрямую взаимодействующих с системным оборудованием (например, при написании обработчика ловушек прерываний) или требующих исключительного быстродействия (скажем, при переключении контекста). Ассемблерный код имеется не только в ядре и HAL, но и в составе некоторых других частей ОС: процедур, реализующих взаимоблокировку, механизма вызова локальных процедур (LPC), части подсистемы Windows, выполняемой в режиме ядра, и даже в некоторых библиотеках пользовательского режима (например, в коде запуска процессов в Ntdll.dll — системной библиотеке).
Симметричная многопроцессорная обработка Многозадачность (multitasking) — механизм ОС, позволяющий использовать один процессор для выполнения нескольких потоков. Однако истинно одновременное выполнение, например, двух потоков возможно, только если на компьютере установлено два процессора. При многозадачности система лишь создает видимость одновременного выполнения множества потоков, тогда как многопроцессорная система действительно выполняет сразу несколько потоков — по одному на каждом процессоре. Windows является операционной системой, поддерживающей симметричную многопроцессорную обработку (symmetric multiprocessing, SMP). В этой модели нет главного процессора; ОС, как и пользовательские потоки, может выполняться на любом процессоре. Кроме того, все процессоры используют одну и туже память. При асимметричной многопроцессорной обработке (asymmetric multiprocessing, ASMP) система, напротив, выбирает один из процессоров для выполнения кода ядра ОС, а другие процессоры выполняют только пользовательский код. Различия между этими двумя моделями показаны на рисунке. Windows XP и Windows Server 2003 поддерживают два новых типа многопроцессорных систем: логические процессоры (hyperthreading) и NUMA (Non-Uniform Memory Architecture). Логические процессоры — это технологии, созданная Intel; благодаря ей на одном физическом процессоре может быть несколько логических. Каждый логический процессор имеет свое состояние, но исполняющее ядро (execution engine) и набортный кэш (onboard cache) являются общими. Это позволяет одному из логических процессоров продолжать работу, пока другой логический процессор занят (например, обработкой прерывания, которая не дает потокам выполняться на этом логическом процессоре). Алгоритмы планирования в Windows XP были оптимизированы под компьютеры с такими процессорами. В NUMA -системахпроцессоры группируются в блоки, называемые узлами (nodes). В каждом узле имеются свои процессоры и память, и он соединяется с остальными узлами специальной шиной. Windows в NUMA-системе по-прежнему работает как SMP-система, в которой все процессоры имеют доступ ко всей памяти, — просто доступ к памяти, локальной для узла, осуществляется быстрее, чем к памяти в других узлах. Система стремится повысить производительность, выделяй потокам время на процессорах, которые находятся в том же узле, что и используемая память. Она также пытается выделять память в пределах узла, но при необходимости выделяет память и из других узлов. Хотя Windows изначально разрабатывалась для поддержки до 32 CPU, многопроцессорной модели не свойственны никакие внутренние особенности, которые ограничивали бы число используемых процессоров до 32. Просто это число легко представить битовой маской с помощью машинного 32-разрядного типа данных. И действительно, 64 разрядные версии Windows поддерживают до 64 процессоров, потому что размер слова на 64-разрядных процессорах равен 64 битам. Реальное число поддерживаемых процессоров зависит от конкретного выпуска Windows. Это число хранится в параметре реестра HKLM\SYSTEM\CurrentControlSet\Control\Session\Manager\Licensed-Processors. Для большей производительности ядро и HAL, имеют одно- и многопроцессорную версии. В случае Windows 2000 это относится к шести ключевым системным файлам, а в 32-разрядных Windows XP и Windows Server 2003 — только к трем. В 64-разрядных системах Windows ядра РАЕ нет, поэтому одно- и многопроцессорные системы отличаются лишь ядром и HAL. Соответствующие файлы выбираются и копируются в локальный каталог \Windows\System32 на этапе установки. Чтобы определить, какие файлы были скопированы, см. файл \Windows\Repair\Setup.log, где перечисляются все файлы, копировавшиеся на локальный системный диск, и каталоги на дистрибутивном носителе, откуда они были взяты. Масштабируемость Масштабируемость (scalability) — одни из ключевых целей многопроцессорных систем. Для корректного выполнения в SMP-системах ОС должна строго соответствовать определенным требованиям. Решить проблемы конкуренции за ресурсы и другие вопросы в многопроцессорных системах сложнее, чем в однопроцессорных, и это нужно учитывать при разработке системы. Некоторые особенности Windows оказались решающими для ее успеха как многопроцессорной операционной системы: § способность выполнять код ОС на любом доступном процессоре и на нескольких процессорах одновременно; § несколько потоков одного процесса можно параллельно выполнять на разных процессорах; § тонкая синхронизация внутри ядра (спин-блокировки, спин-блокировки с очередями и др.), драйверов устройств и серверных процессов позволяет выполнять больше компонентов на нескольких процессорах одновременно; § механизмы вроде портов завершения вводя-вывода, облегчающие эффективную реализацию многопоточных серверных процессов, хорошо масштабируемых в многопроцессорных системах. Масштабируемость ядра Windows со временем улучшалась. Например, в Windows Server 2003 имеются очереди планирования, индивидуальные для каждого процессора, что дает возможность планировать потоки параллельно на нескольких машинах.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|