КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Структура операционной системы
Общая схема: Пользовательский режим 1.процессы поддержки системы 2.процессы сервисов DLL подсистем 3.пользовательские приложения DLL подсистем 4.подсистемы окружения Режим ядра исполнительная система ядро драйверы устройств уровень абстрагирования от оборудования HAL поддержка окон и графики Существует 4 типа пользовательских процессов: 1 – фиксированные процессы поддержки системы, например, процесс входа в систему, диспетчер сеансов; 2 – процессы сервисов, то есть запускаемые диспетчером управления сервисами (многие серверные приложения MS SQL Server тоже имеют компоненты, выполняемые как сервисы); 3 – пользовательские приложения одного из типов: Win 32, Windows 3.1, MS-DOS, POSIX, OS/2 (1.2); 4 – подсистемы окружения, которые представляют пользовательским приложениям сервисы, встроенные в ОС, через набор вызываемых функций (3 подсистемы:Win32, POSIX, OS/2). В Windows2000 польз приложения не могут напрямую вызывать встроенные сервисы ОС. Вместо этого они работают с одной или несколькими динамическими библиотеками (DLL) подсистем. Назначение последних (DLL) состоит в трансляции документированных функций в недокументированные вызовы системных сервисов. Cтруктура Windows 2000 более подробно показана на рисунке ниже. На рисунке голубым цветом отмечена исполняющая система. Уровень аппаратных абстракций. Два нижних уровня программного обеспечения, уровень аппаратных абстракций (HAL Hardware Abstraction Layer) и ядро написаны на языке С и почти полностью аппаратно независимы. Верхние системы написаны на С++. Причина – совместимость, но недостаток – не объектно ориентированная … HAL – позаимствовано из фильма Стенли Кубрика "2001: Космическая Одиссея", а он взял из имени IBM, каждую букву заменив на предыдущую в алфавите. Нижние уровни операционной системы работают с регистрами устройств, прерываниями, прямым доступом к памяти (DMA) и другими аппаратными особенностями, которые очень сильно отличаются на разных машинах. Даже написание кода на языке С не позволяет перенести программу с одного на другой процессор, так как особенности команд (даже при одинаковых названиях) не дают возможности оставить код программы неизменным. Тем не менее, такая концентрация аппаратно-зависимого текста в одном месте облегчает задачу переноса. В качестве примера того, что делает уровень аппаратных абстракций, рассмотрим вопрос работы устройств ввода-вывода с отображаемыми на память регистрами и устройств, работа которых осуществляется через порты. На некоторых машинах используется один способ доступа к устройствам ввода-вывода, а на других машинах - другой. Как должен быть написан драйвер устройства? Вместо того, чтобы ограничивать переносимость драйвера за счет выбора только одного способа, уровень аппаратных абстракций предоставляет три процедуры для чтения регистров устройств и еще три для записи в них. Эти процедуры читают и пишут 8-, 16- и 32-разрядные целые числа без знака в указанный порт. Реализацией этих действий в виде обращения к портам или к регистрам, отображаемым на память, занимается уровень HAL! Драйверам часто бывает нужно получить доступ к специфическим устройствам ввода-вывода. На аппаратном уровне у драйверов есть один или несколько адресов определенной шины. Поскольку у современных компьютеров часто есть несколько шин (ISA, PCI, SCSI, USB и т.п.) может случиться, что два или более устройств имеют один и тот же адрес шины, поэтому требуется некий способ отличать их. Уровень HAL предоставляет службу для идентификации устройств, отображая адреса на шине на логические системные адреса. В результате драйверам не нужно следить за тем, какое устройство, на какой шине находится. Такая логическая адресация аналогична дескрипторам, выдаваемым операционной системой программам пользователя для обращения к файлам и другим системным ресурсам. Этот механизм также защищает более высокие уровни от свойств структур шин и соглашений об адресации. С прерываниями та же картина. Здесь уровень HAL предоставляет службы для именования прерываний уникальным в пределах всей системы способом, а также службы, позволяющие драйверам связывать процедуры обработки прерываний с прерываниями переносимым способом. Другая служба HAL занимается управлением операциями DMA (Direct Memory Access). Обращения к устройствам осуществляется по их логическим адресам. Уровень HAL управляет часами и таймерами, обеспечивая переносимость работающих с ними программ. Наконец, уровень HAL общается с BIOS и инспектирует память CMOS, если она используется, чтобы определить, какие шины и устройства ввода-вывода содержатся в системе и как следует их настроить. Затем эта информация помещается в реестр, чтобы другие компоненты системы могли просматривать их, не обращаясь к BIOS. Поскольку уровень HAL является аппаратно-зависимым, то на установочном диске имеется несколько различных вариантов HAL. Во время установки системы выбирается подходящий HAL и записывается на жесткий диск в каталог \winnt\system32\hal.dll. Хотя эффективность уровня HAL является довольно высокой, для мультимедийных приложений ее бывает недостаточно. По этой причине корпорация Microsoft производит также пакет программного обеспечения, называемый DirectX, расширяющий функциональность HAL дополнительными процедурами и предоставляющий пользовательским процессам прямой доступ к аппаратному обеспечению. Пакет DirectX является специализированным (под конкретное оборудование). Уровень ядра. Над уровнем аппаратных абстракций находится уровень ядра. Windows 2000 обладает ядром весьма условно, так как практически все компоненты системы работают в режиме ядра. Часть ядра и большая часть уровня HAL постоянно находится в оперативной памяти. Назначение ядра заключается в том, чтобы сделать всю остальную часть операционной системы независимой от аппаратуры. Например, на уровне HAL есть вызовы связывания процедур обработки прерываний с прерываниями, HAL также устанавливает приоритеты этих процедур, и все. Ядро же предоставляет полный механизм для переключения контекста. Оно должным образом сохраняет регистры центрального процессора, изменяет таблицы страниц, сохраняет кэш центрального процессора и т.п. Когда все эти действия сделаны, работавший ранее поток оказывается полностью сохраненным в таблицах, расположенных в памяти. затем ядро настраивает карту памяти нового потока и загружает его регистры, после чего новый поток готов к работе. Программа планирования потоков также находится в ядре.
Помимо этого ядро предоставляет низкоуровневую поддержку двум классам объектов – управляющим объектам и объектам диспетчеризации. Эти объекты не относятся к объектам, к которым пользовательские процессы получают дескрипторы, но представляют собой внутренние объекты, на основе которых исполняющая система строит объекты пользователя. Управляющие объекты – это объекты, управляющие системой, включая примитивные объекты процессов, объекты прерываний, объект "отложенный вызов процедуры" (DPC), "асинхронный вызов процедуры" (APC). Объект DPC служит для того, чтобы отделить ту часть обработки прерывания, для которой время является критичным, от той, для которой время не критично. APC отличается тем, что он выполняется в контексте определенного процесса. Пример: при нажатии клавиши код клавиши кладется в буфер ядра, поэтому для этого прерывания используется DPC. Если же прерывание поступило от модема, то результат следует положить в буфер пользовательского процесса, поэтому используется APC. Объекты диспетчеризации – это семафоры, события, таймеры и другие объекты, изменения состояния которых могут ждать потоки. Причина, по которой они должны частично обрабатываться ядром, заключается в том, что они тесно переплетены с планированием потоков. Исполняющая (исполнительная) система. Над ядром и драйверами располагается верхняя часть операционной системой, называемая исполняющей системой (супервизором, диспетчером) Исполняющая система состоит из 10 компонент, каждый из которых представляет собой просто набор процедур. Между отдельными компонентами нет жестких границ, процедуры одного компонента могут вызывать процедуры другого. Менеджер объектов управляет всеми объектами, известными операционной системе. К ним относятся процессы, потоки (нити), файлы, каталоги, семафоры, устройства ввода-вывода, таймеры и многое другое. При создании объекта менеджер объектов получает в адресном пространстве блок виртуальной памяти и возвращает этот блок в список свободных блоков при удалении объекта. Менеджер объектов также управляет пространством имен. Все остальные компоненты исполняющей системы активно используют объекты во время своей работы. Менеджер объектов не является процессом или потоком, это просто набор процедур. Менеджер ввода-вывода предоставляет остальной системе независимый от устройств слой программного обеспечения, вызывая для физического выполнения операций ввода-вывода требуемый драйвер. Менеджер процессов управляет процессами и потоками. Он не занимается стратегией, он предлагает механизмы для реализации управления. Менеджер памяти реализует архитектуру виртуальной памяти. Менеджер безопасности приводит в исполнение весь сложный механизм организации безопасности Windows 2000. Менеджер кэша осуществляет кэширование обращений к жесткому диску, хранит в памяти блоки диска, определяет время их хранения. Он один может обслуживать несколько файловых систем. Менеджер plug-and-play получает все уведомления об установленных новых устройствах. Это – реальный процесс. Менеджер энергопотребления выключает монитор, диски, следит за состоянием батарей на переносных компьютерах. Менеджер конфигурации отвечает за состояние реестра. Он добавляет новые записи, ищет запрашиваемые ключи. Менеджер вызова локальной процедуры обеспечивает высокоэффективное взаимодействие между процессами и их подсистемами. Так как скорость такого взаимодействия определяет скорость работы операционной системы, то для взаимодействия системных процессов не используются стандартные механизмы межпроцессного взаимодействия. Интерфейс графических устройств GUI занимается управлением графическим изображением на мониторе и принтере. Системные службы. Функция этого уровня состоит в предоставлении интерфейса к исполняющей системе. Он принимает системные вызовы и вызывает другие части исполняющей системы для их выполнения.
Где, что расположено. Основная часть операционной системы, состоящая из ядра и исполняющей системы, хранится в файле Ntoskrnl.exe. Как уже говорилось ранее, уровень HAL хранится в файле hal.dll, а интерфейс Win32 и интерфейс графических устройств хранится в win32k.sys (часть подсистемы Win32, работающая в режиме ядра). NTdll.dll - внутренние функции поддержки и интерфейсы (stubs) диспетчера системных сервисов с функциями исполнительной системы. Kernel32.dll, Advapi32.dll, User32.dll, Gdi32.dll – основные dll подсистемы Win32. Большинство драйверов имеют расширение.sys.
Дата добавления: 2014-01-11; Просмотров: 626; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |