Абстрагирование от оборудования в архитектуре windows

Работа по теме: ОСиСП ответы на некоторые вопросы. Глава: Уровень абстрагирования от оборудования. ВУЗ: БГУИР.

Уровень абстрагирования от оборудования

Другая
важная задача ядра — абстрагирование
или изоляция исполнитель­ной системы
и драйверов устройств от различий между
аппаратными архи­тектурами,
поддерживаемыми Windows
(т. е. различий в обработке преры­ваний,
диспетчеризации исключений и синхронизации
между несколькими процессорами).

Архитектура
ядра нацелена на максимальное обобщение
кода — даже в случае аппаратно-зависимых
функций. Ядро поддерживает набор
семанти­чески идентичных и переносимых
между архитектурами интерфейсов.
Боль­шая часть кода, реализующего
переносимые интерфейсы, также идентична
для разных архитектур.

Но
одна часть этих интерфейсов по-разному
реализуется на разных ар­хитектурах,
а другая включает код, специфичный для
конкретной архитек­туры.
Архитектурно-независимые интерфейсы
могут быть вызваны на лю­бой машине,
причем семантика интерфейса будет
одинаковой — независи­мо от
специфического кода для той или иной
архитектуры. Некоторые ин­терфейсы
ядра (например, процедуры спин-блокировки,
описанные в гла­ве 3) на самом деле
реализуются в HAL
(см. следующий раздел), поскольку их
реализация может отличаться даже в
пределах семейства процессоров с
одинаковой архитектурой.

В
ядре также содержится небольшая порция
кода с х8б-специфичными интерфейсами,
необходимыми для поддержки старых
программ MS-DOS.
Эти интерфейсы не являются переносимыми
в том смысле, что их нельзя вызывать на
машине с другой архитектурой, где они
попросту отсутствуют. Этот х8б-специфичный
код, например, поддерживает манипуляции
с GDT
(global
descriptor
tables)
и LDT
(local
descriptor
tables)
— аппаратными сред­ствами x86.

Другим
примером архитектурно-специфичного
кода ядра может служить интерфейс,
предоставляющий поддержку буфера
трансляции и процес­сорного кэша. Эта
поддержка требует разного кода на разных
архитектурах, поскольку кэш в них
реализуется различным образом.

Еще
один пример — переключение контекста.
Хотя на высоком уровне для выбора потоков
и переключения контекста применяется
один и тот же алгоритм (сохраняется
контекст предыдущего потока, загружается
контекст нового и запускается новый
поток), существуют архитектурные различия
между его реализациями для разных
процессоров. Поскольку контекст
опи­сывается состоянием процессора
(его регистров и т. д.), сохраняемая и
заг­ружаемая информация зависит от
архитектуры.

Уровень
абстрагирования от оборудования

Как
отмечалось в начале этой главы, одной
из важнейших особенностей архи­тектуры
Windows
является переносимость между различными
аппаратными платформами. Ключевой
компонент, обеспечивающий такую
переносимость, — уровень абстрагирования
от оборудования (hardware
abstraction
layer,
HAL).
HAL
— это загружаемый модуль режима ядра
(Hal.dll),
предоставляющий низ­коуровневый
интерфейс с аппаратной платформой, на
которой выполняется Windows.
Он скрывает от операционной системы
специфику конкретной ап­паратной
платформы, в том числе ее интерфейсов
ввода-вывода, контроллеров прерываний
и механизмов взаимодействия между
процессорами, т. е. все функ­ции,
зависимые от архитектуры и от конкретной
машины.

Когда
внутренним компонентам Windows
и драйверам устройств нужна
платформенно-зависимая информация, они
обращаются не к самому обо­рудованию,
а к подпрограммам HAL,
что и обеспечивает переносимость этой
операционной системы. По этой причине
подпрограммы HAL
документиро­ваны в Windows
DDK,
где вы найдете более подробные сведения
о HAL
и о его использовании драйверами.

Хотя
в Windows
имеется несколько модулей HAL
(см. таблицу 2-6), при ус­тановке на
жесткий диск компьютера копируется
только один из них — Hal.dll.
(В других операционных системах, например
в VMS,
нужный модуль HAL
вы­бирается при загрузке системы.)
Поскольку для поддержки разных
процессо­ров требуются разные модули
HAL,
системный диск от одной х8б-установки
скорее всего не подойдет для загрузки
системы с другим процессором.

Таблица
2-6.
Список
модулей
HAL
для х86 в

WindowsDriverCachei386Driver.cab

Имя
файла
HAL Поддерживаемые
системы

Hal.dll

Стандартные
персональные компьютеры (ПК)

Halacpi.dll

ПК
с
ACPI (Advanced Configuration and Power Interface)

Halapic.dll

ПК
с
APIC (Advanced Programmable Interrupt Controller)

Halaacpi.dll

ПК
с APIC
и ACPI

Halmps.dll

Многопроцессорные
ПК

Halmacpi.dll

Многопроцессорные
ПК с ACPI

Halborg.dll

Рабочие
станции Silicon
Graphics
(только для Windows

2000;
больше не продаются)

Halsp.dll

Compaq
SystemPro (только
для
Windows XP)

ПРИМЕЧАНИЕ
В
базовой системе Windows
Server
2003 нет HAL,
специ­фических для конкретных вендоров.

Соседние файлы в папке Теория

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

    11.05.201588.58 Кб8ОСиСП синхронизация потоков.pps

В этой статье рассматривается архитектура Windows в общих чертах. В следующих уроках рассмотрим каждый элемент архитектуры более подробно.

Как вы уже знаете в операционной системе Windows есть 2 режима работы: пользовательский и режим ядра. При этом сама операционная система состоит из подсистем. В настоящее время Windows поддерживает две подсистемы: подсистему для Windows приложений и подсистему для Linux приложений. В будущем возможно появление и других подсистем, так как разработчики Mikrosoft разработали технологию, которая облегчает им добавлять различные подсистемы.

Чтобы лучше понять архитектуру Windows я подготовил такой рисунок:

архитектура Windows

При запуске Windows приложения идет обращение к “Подсистеме Windows“, а уже от туда идет обращение к “Исполнительной системе“, которая запустит процесс для этого приложения.

Microsoft также разработали “Подсистему для Linux” (WSL). Для этого в режим ядра поместили два драйвера: Lxss.sys и Lxcore.sys. Эти драйвера эмулируют ядро Linux. А также, в пользовательском режиме работает специальный менеджер – LX Manager. Этот менеджер обрабатывает приложения для Linux.

Когда вы запускаете Linux приложение, например bash.exe, то идет обращение через LX Manager к драйверам эмулирующим ядро Linux. И уже это ядро запускает и обслуживает данный процесс.

То-есть для Windows приложений существует “Подсистема Windows” в пользовательском режиме и “Исполнительная система” в режиме ядра. А для Linux приложений существует LX Manager в пользовательском режиме и специальные драйвера в режиме ядра.

Помимо “Исполнительной системы” и драйверов эмулирующих работу ядра Linux в режиме ядра работают:

  • драйвера устройств или приложений, которые являются исполняемыми файлами с расширением .sys;
  • ядро операционной системы;
  • HAL – прослойка между ядром (или драйверами) и оборудованием (системной платой).

Ядро

В системе Windows ядро не выполняет все задачи, которые выполняются в режиме ядра. Ядру помогает “Исполнительная система“. Подробнее про неё будет написано в следующей статье. А пока посмотрим чем занимается само ядро.

Ядро состоит из набора функций Ntoskrnl.exe, которые являются фундаментальными в операционной системе. Эти функции используются компонентами исполнительной системы.

А также ядро поддерживает работу с оборудованием, например работу с прерываниями и процессором. И ещё ядро следит за синхронизацией процессоров в многопроцессорной системе.

С другим оборудованием ядро работает через HAL.

HAL

HAL – слой абстрагирования от оборудования. Он представляет собой загружаемый модуль режима ядра hal.dll, и является прослойкой между ядром и оборудованием. Под оборудованием я подразумеваю системную плату или платы расширения, а не периферию. Так драйвера принтеров работают напрямую с принтерами, а не через HAL.

Таким образом ядро и драйвера не работают напрямую с материнской платой, а вызывают функции HAL.

Для Windows x86 включена пара библиотек HAL, но загружается одна в зависимости от типа системной платы:

  • halacpi.dll — платы с поддержкой acpi, но без поддержки apic;
  • halmacpi.dll — платы с поддержкой acpi и apic.

Для Windows x64 существует только один образ hal:

  • hal.dll — платы с поддержкой x64 всегда поддерживают acpi и apic.

Windows поддерживает расширения hal — это дополнительные библиотеки, которые могут загружаться при наличии конкретного оборудования, запрашивающего эти библиотеки. Например:

  • HalExtPL080.dll — расширение для контроллера DMA PL080;
  • HalExtIntcLpioDMA.dll — для некоторых платформ intel с пониженным энергопотреблением.

Создание расширений HAL требует сотрудничества с компанией MicroSoft. В связи с этим расширения снабжаются цифровой подписью.


Вернуться к оглавлению

Сводка

Общая архитектура Windows

Имя статьи

Общая архитектура Windows

Описание

В этой статье рассматривается архитектура Windows в общих чертах. В следующих уроках рассмотрим каждый элемент архитектуры более подробно

Содержание

  • 1 Содержание
  • 2 Режим пользователя [ править | править код ]
  • 3 Режим ядра [ править | править код ]
    • 3.1 Исполнительная подсистема [ править | править код ]
    • 3.2 Менеджер объектов [ править | править код ]
  • 4 Характеристика режима ядра и пользовательского порядка. Изучение внутреннего устройства Windows. Анализ модели операционной системы. Различия между клиентскими и серверными версиями. Уровень абстрагирования от оборудования. Суть драйверов устройств.
    • 4.1 Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Все они являются операционными системами с вытесняющей многозадачностью, разработаны для работы как с однопроцессорными, так и с симметричными мультипроцессорными компьютерами. Для обработки запросов вводавывода используется пакетноуправляемый ввод-вывод, который применяет пакеты запросов вводавывода (IRP) и асинхронный ввод-вывод.

Архитектура Windows NT имеет модульную структуру и состоит из двух основных уровней — компоненты, работающие в режиме пользователя, и компоненты режима ядра. Программы и подсистемы, работающие в режиме пользователя, имеют ограничения на доступ к системным ресурсам. Режим ядра имеет неограниченный доступ к системной памяти и внешним устройствам. Ядро системы NT называют гибридным ядром или макроядром. Архитектура включает в себя само ядро, уровень аппаратных абстракций (HAL), драйверы и ряд служб (Executives), которые работают в режиме ядра (Kernel-mode drivers) или в пользовательском режиме (User-mode drivers) [1] [2] .

Пользовательский режим Windows NT состоит из подсистем, передающих запросы ввода-вывода соответствующему драйверу режима ядра посредством менеджера ввода-вывода. Есть две подсистемы на уровне пользователя: подсистема окружения (запускает приложения, написанные для разных операционных систем) и интегрированная подсистема (управляет особыми системными функциями от имени подсистемы окружения). Режим ядра имеет полный доступ к аппаратной части и системным ресурсам компьютера.

Содержание

Режим пользователя [ править | править код ]

Режим пользователя состоит из подсистем, которые передают запросы вводавывода соответствующему драйверу режима ядра посредством менеджера ввода-вывода. Уровень пользователя состоит из двух подсистем — подсистема окружения (Environment) и интегральная подсистема (Integral).

Подсистема окружения разработана для запуска приложений, написанных для разных типов операционных систем. Ни одна из подсистем окружения не имеет прямого доступа к аппаратной части компьютера. Доступ к ресурсам памяти происходит посредством Менеджера Виртуальной Памяти, который работает в режиме ядра. Также приложения запускаются с меньшим приоритетом, чем процессы режима ядра.

Подсистема окружения состоит из следующих подсистем — подсистема Win32, подсистема OS/2 и подсистема POSIX. Подсистема окружения Win32 запускает 32-разрядные Windows приложения. Она содержит консоль и поддержку текстового окна, обработку ошибок для всех других подсистем окружения. Поддерживает VDM (Virtual DOS Machine), которая позволяет запускать 16-разрядные DOS и Windows (Win16) приложения. VDM запускается в своем собственном адресном пространстве и эмулирует систему MS-DOS, запущенную на компьютере с процессором Intel 80486. Программы Win16 запускаются в режиме Win16 VDM. Каждая программа запускается в одном процессе с использованием одного адресного пространства, но для каждой программы используется свой отдельный поток. Однако Windows NT позволяет запускать Win16-программы в отдельных Win16 VDM-процессах, реализуя вытесняющую многозадачность. Процесс подсистемы окружения Win32 — csrss.exe также включает в себя функциональность менеджера окон, то есть обрабатывает входящие события, такие, как нажатие клавиш клавиатуры и мыши, и передает их на обработку соответствующим приложениям. Каждое приложение само производит перерисовку окон в ответ на эти сообщения.

Подсистема окружения OS/2 поддерживает неграфические 16-разрядные приложения операционной системы OS/2 и эмулирует систему OS/2 2.1.x.

Подсистема окружения POSIX поддерживает приложения, написанные в соответствии со стандартом POSIX.1.

Интегрированная подсистема (Integral subsystem) следит за некоторыми функциями операционной системы от имени подсистемы окружения. Состоит из подсистемы безопасности, службы рабочей станции и службы сервера. Служба безопасности обращается с маркерами доступа, позволяет или запрещает доступ к учётной записи пользователя, обрабатывает запросы авторизации и инициирует процесс входа пользователя в систему. Служба Рабочая станция обеспечивает доступ компьютера к сети — является API для сетевого редиректора (ПО, эмулирующее доступ к удаленной файловой системе как к локальной). Служба Сервер позволяет компьютеру предоставлять сетевые сервисы.

Режим ядра [ править | править код ]

Режим ядра Windows NT имеет полный доступ к аппаратной части компьютера и системным ресурсам. Работает в защищенной области памяти. Управляет памятью и взаимодействием с аппаратной частью. Предотвращает доступ к критическим областям памяти со стороны приложений и служб пользовательского режима. Для выполнения подобных операций процесс пользовательского режима должен попросить режим ядра выполнить её от своего имени.

Архитектура x86 поддерживает 4 уровня привилегий — от 0 до 3, но используются только 0-й и 3-й уровень. Режим пользователя использует уровень 3, а режим ядра — 0. Это было сделано для возможности переноса на платформу RISC, которая использует только два уровня привилегий. Режим ядра состоит из исполнительных служб, которые представляют собой различные модули, выполняющие определённые задачи, драйвера ядра, само ядро и уровень аппаратных абстракций HAL.

Исполнительная подсистема [ править | править код ]

Работает с вводом/выводом, менеджером объектов, управлением над процессами и безопасностью. Неофициально делится на несколько подсистем — менеджер кэша, менеджер конфигурации, менеджер ввода/вывода, вызов локальных процедур, менеджер памяти, монитор безопасности. Системные службы, то есть системные вызовы, реализованы на этом уровне, за исключением нескольких вызовов, которые вызывают непосредственно ядро для большей производительности. В данном контексте термин «служба» относится к вызываемым подпрограммам, или набору вызываемых подпрограмм. Они отличаются от служб, выполняемых в режиме пользователя, которые в какой-то мере являются аналогом демонов в UNIX-подобных системах.

Менеджер объектов [ править | править код ]

Это исполнительная подсистема, к которой обращаются все остальные модули исполнительной подсистемы, в частности, системные вызовы, когда им необходимо получить доступ к ресурсам Windows NT. Менеджер объектов служит для уменьшения дублирования объектов, что может привести к ошибкам в работе системы. Для менеджера объектов каждый ресурс системы является объектом — будь то физический ресурс типа периферийного устройства, файловой системы, или логический ресурс — файл и др. Каждый объект имеет свою структуру, или тип объекта.

Создание объекта делится на две стадии — создание и вставка. Создание — создается пустой объект и резервируются необходимые ресурсы, например, имя в пространстве имен. Если создание пустого объекта произошло успешно, то подсистема, ответственная за создание объекта, заполняет его. Если инициализация успешна, то подсистема заставляет менеджер объектов произвести вставку объекта — то есть сделать его доступным по своему имени или дескриптору.

Что такое операционная система…………………………………………4

Функции операционной системы…………………………………………5

Главные отличия двух режимов………………………………………….13

Компьютеры играют очень важную роль в нашей современной жизни. Они проникли во все сферы деятельности человека. Они позволяют хранить огромные объёмы информации и моментально получать к ним доступ; они способны также обрабатывать эту информацию во много раз быстрее человека, работают дольше по времени и с меньшим количеством ошибок. Если раньше на обработку какой-либо информации человеком уходили дни, то сейчас с помощью компьютера, это занимает секунды, что позволяет сконцентрироваться на задаче, а не на вычислениях. Компьютеры применяются в медицине, что является очень полезным фактом; являются самым дешёвым и быстрым средством общения; при правильном использовании служат нам незаменимым помощником в учёбе, а также просто для отдыха.

Домашний компьютер сейчас есть у большинства людей. И он может оказать нам неоценимую пользу. Он является источником новой информации. Вряд ли мы можем представить свою жизнь без него. Он имеет множество преимуществ: мы можем на нём учиться, писать, читать, смотреть фильмы, играть в игры, общаться с людьми, которые находятся за сотни километров от нас, создавать программы и проекты, рисовать.

Как же работает наш персональный компьютер, что он предоставляет нам такой богатый выбор возможностей?

Для начала взглянем на минимальный состав компьютера, в который входит системный блок (который и позволяет ему работать), монитор ( чтобы видеть всё то, с чем мы работаем) и клавиатура (чтобы вводить данные). Также для работы с компьютером используются компьютерная мышь, колонки, принтер, сканер, микрофон, камера.

В системном блоке находятся материнская плата, видеокарта, винчестер( жесткий диск), процессор, блок питания, оперативная память, системы охлаждения, дисковод.

На материнскую плату устанавливаются основные компоненты компьютера. Это видеокарта, оперативная память, жёсткий диск. Но для того чтобы нам работать с компьютером и воспользоваться всем его потенциалом, нужна операционная система.

Что такое операционная система?

«Операционная система, сокр. ОС (англ. operating system, OS) — комплекс управляющих и обрабатывающих программ, которые, с одной стороны, выступают как интерфейс между устройствами вычислительной системы и прикладными программами, а с другой стороны — предназначены для управления устройствами, управления вычислительными процессами, эффективного распределения вычислительных ресурсов между вычислительными процессами и организации надёжных вычислений. Это определение применимо к большинству современных операционных систем общего назначения».[1]

То есть операционную системы можно назвать движущей силой нашего компьютера. Именно она даёт нам возможность взаимодействовать с компьютером. Она делает информацию, которую выдаёт нам компьютер, понятной для нашего восприятия, и в то же время переводит то, что мы вводим на компьютерный язык, чтобы компьютер смог выполнить поставленную перед ним задачу. Она является связующим звеном между аппаратурой компьютера и человеком.

Одну их главных функций ОС отлично характеризует следующая картинка.

Функции операционной системы:

1)осуществление диалога с пользователем;

2)ввод, вывод и управление данными;

3)планирование и организация процесса обработки программ;

4)распределение ресурсов (оперативной памяти и кэша, процессора, внешних устройств);

5)запуск программ на выполнение;

6)передача информации между различными внутренними устройствами;

7)программная поддержка работы периферийных устройств (дисплея, клавиатуры, дисковых накопителей, принтера и др.).[2]

Благодаря операционной системе облегчается работа человека с компьютером, так как ОС скрывает сложные и ненужные подробности взаимодействия с аппаратурой.

Архитектура ОС Windows

Архитектура ОС Windows имеет модульную структуру. Из этого можно сделать вывод, что она состоит из разделяемых компонентов, любой из которых жестко отвечает за собственные функции. Она состоит из двух уровней: компонентов, которые работают в режиме пользователя (user mode), и компонентов, работающих в режиме ядра (kernel mode). Это очень удобно, потому что пользователь, имея доступ к системным программам и внутренним компонентам ОС, может случайно что-то изменить или удалить. Это спровоцирует поломку системы. Поэтому с компьютером мы работаем через пользовательский режим и его приложения, а в режиме ядра выполняются наши команды.

У пользовательского режима и режима ядра есть свои привилегии. У режима ядра их больше. В операционной системе они разделены на уровни.

Сначала мы рассмотрим режим ядра, который, непременно, является очень важной и неотъемлемой частью операционной системы.

Ядро — центральная часть операционной системы, управляющая выполнением процессов, ресурсами вычислительной системы и предоставляющая процессам координированный доступ к этим ресурсам. [3]

По сути это некоторая абстракция, которая позволяет получить доступ к ресурсам вычислительной системы, который нужны пользователю для работы с компьютером. Работа ядра полностью скрыта от пользователя, и он не имеет к нему доступа.

Существует несколько типов архитектур ядер операционных систем:

1) Монолитное ядро;

Но подробнее мы рассмотрим монолитное и модульное ядра, так как сначала операционная система Windows имела монолитное ядро, а позже усовершенствовалась до модульного ядра.

« Монолитное ядро — классическая архитектура ядер операционных систем. Монолитные ядра предоставляют богатый набор абстракций оборудования. Все части монолитного ядра работают в одном адресном пространстве».[4]

То есть в памяти нашего компьютера хранится информация, и каждой её составляющей соответствует число – адрес, который определяет место её хранения.

Кстати, монолитное ядро сейчас всё равно является самой распространённой архитектурой ядер операционных систем.

Монолитные ядра долго развивались и усовершенствовались. Сейчас они являются наиболее архитектурно зрелыми и пригодными к эксплуатации. Но, к сожалению, монолитное ядро имеет свои недостатки. Оно работает в одном адресном пространстве. Если вдруг произойдёт сбой в одном из компонентов, то нарушится работоспособность всей системы.

Эти сбои невозможны в модульном ядре, о котором мы сейчас поговорим.

«Модульное ядро — современная, усовершенствованная модификация архитектуры монолитных ядер операционных систем компьютеров. В отличие от «классических» монолитных ядер, считающихся ныне устаревшими, модульные ядра, как правило, не требуют полной перекомпиляции ядра при изменении состава аппаратного компьютера». [5]

Взамен этим функциям модульные ядра просто дополнительно загружают модули ядра, которые в свою очередь поддерживают то или иное аппаратное обеспечение. Например, модульное ядро может загрузить нужный для работы драйвер. Модульное ядро может загрузить модуль прямо во время работы системы, не перезагружая её. А также подгрузка модуля может выполняться при перезагрузке ОС. В это время ОС перестраивается на загрузку определенных модулей.

Но, не смотря на новые возможности, модульные ядра всё равно остаются монолитными. Они по-прежнему работают в адресном пространстве. Это даёт им возможность использовать все функции ядра.

«Модульные ядра удобнее для разработки, чем традиционные монолитные ядра, не поддерживающие динамическую загрузку модулей, так как от разработчика не требуется многократная полная перекомпиляция ядра при работе над какой-либо его подсистемой или драйвером. Выявление, локализация, отладка и устранение ошибок при тестировании также облегчаются».[6]

То есть если нужно усовершенствовать функции модульного ядра, то сначала можно улучшить одну из его составляющих частей, например, какой-нибудь драйвер, а потом загрузить его к ядру. Эта задача гораздо усложняется в случае с монолитным ядром. Его придётся полностью переделывать, чтобы поместить туда новый драйвер.

Функции, которые входят в состав ядра, решают очень важные задачи. Они переключают контексты, занимаются организацией процесса вычислений, загружают и выгружают страницы, обрабатывают прерывания.

А в свою очередь приложения, работающие из режима пользователя, могут обращаться к ядру, чтобы выполнить нужные действия. Скорость выполнения функция ядра является показателем производительности ОС. Все модули ядра или большая их часть находятся в ОС.

Ядро является главной составляющей компьютерной системы, благодаря которой она работает. По этой причине так необходимо, чтобы коды ядра были надежны.

На следующем рисунке видно, какую роль работе ОС играет ядро.

Ядро состоит из следующих слоёв:

1)Средства аппаратной поддержки;

3)Базовые механизмы ядра;

5)Интерфейс системных вызовов.

А на этом рисунке наглядно можно увидеть их распределение:

Программное обеспечение, находящееся в режиме ядра:

· может иметь прямой и неограниченный доступ к аппаратному обеспечению;

· имеет доступ ко всей памяти компьютера;

· не может быть вытеснено в страничный файл на жестком диске;

· имеют больший приоритет по сравнению с процессами пользовательского режима. [7]

Сама архитектура ядра позволяет защитить его компоненты от изменения их другими программами.

Драйвер – это компьютерные программы, благодаря которым ОС может работать с устройствами компьютера. Драйвер обрабатывает наши запросы, которые мы вводим в режиме пользователя. Затем он переводит их на машинный язык (с высокого уровня на низкоуровневый), который понятен компьютеру, тем самым обеспечивая нам полное взаимопонимание.

Основная часть кода Windows выполняется в режиме ядра. Если драйвер будет содержать вирус, то он может сломать ОС. Когда мы загружаем драйверы из интернета, то нужно быть осторожными, так как они сразу переходят в режим ядра и получают полный доступ ко всем данным операционной системы. Поэтому очень важно, чтобы компоненты, которые работают в этом режиме, были хорошо проверены и протестированы, не содержали ошибок.

А теперь рассмотрим режим пользователя, который является нам гораздо ближе. Ведь работать с ядром напрямую мы не можем, мы можем лишь отдавать команды через режим пользователя.

Режим пользователя имеет гораздо меньше привилегий по сравнению с режимом ядра. У него нет прямого доступа к оборудованию. А также он имеет ограниченный доступ к памяти.

«Режим пользователя состоит из подсистем, которые передают запросы ввода и вывода соответствующему драйверу режима ядра посредством менеджера Ввода-вывода. Уровень пользователя состоит из двух подсистем — подсистема окружения(Environment) и интегральная подсистема (Integral)». [8]

Подсистема окружения нужна для того, чтобы запускать приложения, которые написаны для разных видов ОС. Обратим внимание на то, что ни у какой из подсистем окружения нет прямого доступа к аппаратной части компьютера. У ОС есть менеджер Вирт. Памяти. Этот менеджер имеет привилегии, так как работает в режиме ядра. Именно он обеспечивает доступ к ресурсам памяти.

В состав системы окружения входят следующие подсистемы: Win32, POSIX, OS/2. Самой важной из них является Win 32. Она предоставляет компьютерным программам интерфейс программирования приложения (англ. application programming interface, API). Две другие подсистемы тоже предоставляют свой интерфейс программирования приложения. Но для того чтобы им получить пользовательский ввод и показать результаты, им нужно использовать подсистему Win32.

Без подсистемы Win32 Windows работать не может, поэтому Win32 работает всегда. Это её главное отличие от двух других подсистем. Эта подсистема обрабатывает все, что связано с клавиатурой, мышью и экраном, и нужна даже на серверах в отсутствие интерактивных пользователей. Также Win32 управляет окнами и базовыми сервисами.

«Подсистема окружения OS/2 поддерживает неграфические 16-разрядные приложения операционной системы OS/2 и эмулирует систему OS/2 2.1.x.

Подсистема окружения POSIX поддерживает приложения, написанные в соответствии со стандартом POSIX.1»[9]

Интегрированная подсистема работает от имени подсистемы окружения. Она наблюдает за несколькими функциями операционной системы. В её состав входят подсистемы безопасности, службы рабочей станции и службы сервера.

«Служба безопасности обращается с маркерами доступа, позволяет или запрещает доступ к учетной записи пользователя, обрабатывает запросы авторизации и инициирует процесс входа пользователя в систему. Служба Рабочая станция обеспечивает доступ компьютера к сети — является API для сетевого редиректора. Служба Сервер позволяет компьютеру предоставлять сетевые сервисы».[9]

Теперь можно рассмотреть более полную схему архитектуры ОС.

Главные отличия двух режимов

Чем же отличаются программы, работающие в режиме пользователя от программ, работающих в режиме ядра?

Отличия процессов, работающих в режиме пользователя, от процессов, работающих в режиме ядра:

  • не имеют прямого доступа к оборудованию, все запросы на использование аппаратных ресурсов должны быть разрешены компонентом режима ядра;
  • ограничены размерами выделенного адресного пространства;
  • могут быть выгружены из физической памяти в виртуальную на жестком диске;
  • приоритет процессов данного типа ниже приоритета процессов режима ядра, это предохраняет ОС от снижения производительности или задержек, происходящих по вине приложений. [10]

Пример работы ОС

А сейчас мы посмотрим, как работает ОС. Допустим на надо написать и распечатать какой-нибудь текст. Что мы делаем? Открываем текстовый редактор, набираем текст, сохраняем этот документ, а потом распечатываем.

А что же делает наша операционная система, и как взаимодействуют её компоненты? Во-первых, клавиатура и мышь отправляют введённые нами данные в ОС. Затем ОС решает, что текстовый редактор является активной программой и использует нужные модули для работы с ней. ОС принимает данные, которые мы ввели, и отправляет их к себе на хранение. Дело в том, что ОС обладает небольшим объёмом и хранит информацию временно, только при работе с ней. Если вдруг выключить компьютер, то вся информация, хранящаяся в ОС, не сохранится. Поэтому всю информацию мы сохраняем на жёстком диске. Каждое наше редактирование из текстового редактора посылается ОС в центральный процессор. При этом команды переводятся на машинный язык. Процессор работает уже в режиме ядра. На протяжении этого времени ОС предоставляет нам всю информацию на мониторе нашего компьютера с помощью графической карты. Теперь нам нужно сохранить текст. Мы нажимаем кнопку Сохранить. Тем временем текстовый редактор отправляет запрос в ОС. ОС отвечает, позволяя нам выбрать место сохранения файла и его имя. После того как мы выберем нужные нам параметры, ОС направляет эти данные на хранение в устройство с постоянной памятью. Теперь текст нужно распечатать. Нажимаем кнопку Печать. Теперь ОС принимает наши данные и отправляет их на принтер до нужного порта, который мы указываем.

Характеристика режима ядра и пользовательского порядка. Изучение внутреннего устройства Windows. Анализ модели операционной системы. Различия между клиентскими и серверными версиями. Уровень абстрагирования от оборудования. Суть драйверов устройств.

Рубрика Программирование, компьютеры и кибернетика
Вид реферат
Язык русский
Дата добавления 12.01.2016
Размер файла 70,6 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «РОСТОВСКИЙ ГОСУДАРСТВЕННЫЙ ЭКОНОМИЧЕСКИЙ УНИВЕРСИТЕТ (РИНХ)»

«Таганрогский институт имени А.П.Чехова» (филиал) федерального государственного бюджетного образовательного учреждения высшего образования «Ростовский государственный экономический университет (РИНХ)»

ПО ТЕМЕ: АРХИТЕКТУРА ОПЕРАЦИООНОЙ СИСТЕМЫ WINDOWS

Несколько дней назад в сеть просочился образ ранней версии Windows 11. Различные издательства провели тесты по производительности и пришли к неутешительному выводу: Windows 11 в среднем работает хуже, чем Windows 10. Но расстраиваться рано! Проблемы производительности могут быть связаны с «сыростью» слитого образа и нюансами совместимости с текущими программами. Так или иначе, 24 июня состоится официальная презентация нового поколения операционных систем Windows, которая, возможно, даст ответы на многие вопросы. Если сегодня у вас есть настроение для ностальгии, предлагаем вам окунуться в мир Windows: познакомиться с историей, как менялась ось и что у нее внутри.

История Windows

В начале 80 годов прошлого века компания IBM работала над персональным компьютером на базе процессора Intel 8088. С середины 70 годов компания Microsoft была основным поставщиком Basic для восьмибитных микрокомпьютеров. Когда IBM обратилась к Microsoft для лицензирования Basic для их нового компьютера IBM PC, Microsoft согласилась, а также посоветовала обратиться к компании Digital Research для лицензирования операционной системы CP/M. Но, получилось так, что глава Digital Research не нашел в своем графике времени для встречи для IBM, и IBM снова обратилась к Microsoft, теперь уже с просьбой решить вопрос операционной системы для IBM PC. Microsoft купила клон ОС CP/M у компании Seattle Computer Products и перенесла её на IBM PC. Итоговым названием получившейся ОС стало MS-DOS 1.0.

IBM PC

Первые продукты с названием «Windows» от Microsoft не были операционными системами. Это были графические среды для MS-DOS. На фоне успеха, в том числе и коммерческого, пользовательского интерфейса на Apple Lisa, компания решила реализовать графический интерфейс на IBM PC с MS-DOS. В отличии от относительно дешевых IBM PC, Apple Lisa стоили дорого (почти 10 тысяч долларов), и немногие покупатели могли позволить купить их. Microsoft решила занять нишу дешевых компьютеров с графическим интерфейсом. При этом низкая стоимость достигалась экономией на комплектующих и более низкая производительность, по сравнению с Lisa, избежать не получилось. Так, в 1985, 1987 и в 1990 выходят первые три версии Windows — 1.0, 2.0 и 3.0. Причем за первые шесть месяцев после релиза Windows 3.0 было продано более 1 миллиона экземпляров. Дальнейшее развитие Windows можно разделить на два направления — Windows на базе MS-DOS и Windows на базе NT.

Windows 1.01

Windows 9x

Windows на базе MS-DOS или Windows 9x не были первыми ОС от Microsoft, но они продолжали «старые традиции» и были построены на основе 16-битного кода MS-DOS. В августе 1995 года была выпущена Windows 95 — первая система семейства Windows 9x. Она уже была полноценной операционной системой с соответствующими возможностями.  Однако у системы были проблемы с безопасностью (например, не было «администратора») и с изоляцией приложений. Зависание 16-битного приложения приводило к блокировке всей системы. Проблемы со стабильностью достались и Windows 98 и Windows ME, которые отличались от выпуска 95 года рядом небольших обновлений.

Windows 95

Windows NT

В целом, к концу 80-х годов в Microsoft появилось понимание о необходимости разработки операционной системы не на базе MS-DOS. Параллельно с разработкой софта, связанного с MS-DOS, Microsoft наняла команду инженеров из компании DEC для разработки новой 32-битной операционной системы. Главой группы стал Дэйв Катлер — один из главных разработчиков ОС VMS. Новая система была названа NT — от сокращения New Technology. Основной упор при разработке NT делался на безопасность и надежность системы, а также на совместимость с Windows на MS-DOS. Так получилось, что опыт при разработке VMS повлиял на NT и сходство между ними стало причиной спора между DEC и Microsoft. По итогу спор был решен во внесудебном порядке. 

Дэйв Катлер

Первая система Windows называлась Windows NT 3.1 и была выпущена в 1993 году. Это была первая ОС от Microsoft. Индекс 3.1 был выбран для соответствия Windows 3.1 на MS-DOS. Эта версия не имела особого успеха. Для NT требовалось больше памяти, 32-разрядных приложений на рынке было мало, возникали проблемы с совместимостью драйвером. Достичь поставленных целей смогли в NT 3.5. А первым серьезным обновлением для NT стала версия 4.0 в 96 году. Теперь эта система была мощна, надежна и безопасна, а также обеспечивала тот же интерфейс, что и Windows 95 (которая к тому моменту была чрезвычайно популярной). 

Windows NT 3.1

В 2000 году вышла новая версия Windows — Windows 2000. Она развивала идеи, заложенные в системы NT. Был добавлена технология Plug-and-Play, управление электропитанием и улучшен интерфейс пользователя. 

Windows 2000

Успех Windows 2000 задал вектор развития для следующего поколения — Windows XP. В «хрюшке» Microsoft улучшила совместимость, интерфейс стал более дружелюбным. Стратегия Microsoft завоевывать аудиторию уже знакомыми системами дала плоды — за несколько лет Windows XP была установлена на сотнях миллионах ПК. Эпоха MS-DOS подошла к концу.

Windows XP

Следующий проект Microsoft пал жертвой собственных амбиций. Через пять лет после Windows XP, в 2006 году на свет вышла Windows Vista. В ней был переделан графический интерфейс, переработаны и добавлены функциональные возможности в плане безопасности. Была улучшена производительность, надежность.

Первоначальные планы Microsoft по поводу Vista были настолько обширны, что через несколько лет после начала разработки проект пришлось сильно ограничить. Vista включала в себе 70 миллионов строк кода, часть которого составлял «причесанный» код XP. Неудача Vista отчасти с тем, что она вышла не в то время. На 2006 год пришелся бум недорогих компьютеров, которые не могли обеспечить достаточную для Vista производительность. 

Windows Vista

Проблемы Vista были учтены при разработке Windows 7. Microsoft уделила большее внимание тестированию и производительности новой системы. Windows 7 быстро вытеснила Vista, а затем и XP, став самой популярной версией Windows до появления Windows 10 (сейчас Windows 7 на втором месте по популярности).

Windows 7

Бум смартфонов в начале 2010-х подтолкнул Microsoft к созданию операционной системы, которую можно было бы развернуть на разных устройствах: на телефонах, планшетах, приставках и т. д. В результате этой работы мир узрел Windows 8. «Восьмерка» построена на модульном подходе MinWin для получения небольшого ядра ОС, которое можно было бы расширить на линейку других типов устройств. Но аудитория встретила холодно такой подход. Многие люди критиковали «смартфоноподобный» интерфейс на ПК, отсутствие кнопки пуск. Для решения многих проблем Microsoft выпустила обновление под названием Windows 8.1, которая, помимо исправления имеющихся ошибок, добавила новые функции. 

Windows 8.1

И вот, к 2015 году Microsoft выпускает Windows 10. При разработке Microsoft продолжала развитие идеи единой системы для разных устройств. В «десятке» появилась голосовая помощница Кортана, вернули меню «Пуск», улучшена системная безопасность. 

Технические аспекты

Чтобы осветить все технические аспекты и тонкости операционной системы Windows понадобится не менее 1000 страниц. Для особо любопытных советуем 7-е издание «Внутреннего устройства Windows« Марка Руссиновича, специалиста по внутреннему устройству Windows. Также можно почитать «Современные операционные системы« Эндрю Таненбаума и «Operating System Concepts«: в обеих книгах есть главы, посвященные Windows. Здесь же ограничимся рассмотрением инструментов взаимодействия приложений пользователя с операционной системой (Windows API) и архитектуры «оси». 

Архитектура 

Во многих многопользовательских операционных системах сама ОС отделяется от приложений. Код ядра ОС выполняется в привилегированном режиме процессора (режим ядра). Для него доступны системные данные и оборудование. В непривилегированном режиме (пользовательский режим) выполняется код приложений. Ему предоставляется ограниченный набор интерфейсов и ограниченный доступ к системным данным. Прямой доступ к оборудованию заблокирован. При вызове программой пользовательского режима системной функции процессор выполняет специальную команду, переключающую вызывающий поток (последовательность команд внутри процесса, планируемая Windows для исполнения) в режим ядра. Когда системная функция завершается, операционная система переключает контекст потока обратно в пользовательский режим и дает возможность вызывающей стороне продолжить работу. 

Windows считается операционной системой с гибридным ядром. С одной стороны компоненты ядра Windows располагаются в вытесняемой памяти и взаимодействуют друг с другом путем передачи сообщений, как в микроядерных системах. С другой стороны ядро слишком велико (более 1 Мбайт), а большая часть кода ОС и кода драйверов устройств использует одно защищенное пространство памяти защищенного режима, что свойственно монолитным ОС. Это означает, что в теории любой компонент ОС или драйвер устройства может повредить данные, используемые другими системными компонентами. В Windows эта проблема решается за счет повышения качества и контроля происхождения сторонних драйверов через такие программы, как WHQL или KMCS. Одновременно применяются дополнительные технологии защиты ядра, такие как безопасность на базе виртуализации, функции Device Guard.

Рассмотрим ключевые системные компоненты, формирующие архитектуру системы. На рисунке ниже представлена упрощенная схема, на которой опущены некоторые элементы, например, сетевые компоненты и различные уровни драйверов. Первое, на что стоит обратить внимание — это линия, разделяющая части пользовательского режима и режима ядра. Как упоминалось выше, потоки пользовательского режима выполняются в закрытом адресном пространстве процессов. На время выполнения в режиме ядра они получают доступ к системному пространству. Таким образом, системные процессы, пользовательские процессы, процессы служб и подсистемы среды обладают собственным закрытыми адресными пространствами. 

Упрощенная схема архитектуры Windows

Вторая линия разделяет компоненты режима ядра и гипервизор (Hyper-V). Гипервизор перехватывает многие привилегированные операции, выполняемые ядром, и эмулирует их таким образом, чтобы позволить на одной и той же машине одновременно работать нескольким операционными системам. Гипервизор работает на том же уровне привилегий процессора (0), что и ядро. Но из-за использования специализированных команд процессора (VT-x у процессоров Intel, SVM у АMD) он может изолироваться от ядра с сохранением контроля над ним и приложениями. Поэтому некоторые иногда применяют термин «кольцо -1».

Четыре базовых типа процессов пользовательского режима:

  • Пользовательские процессы. Эти процессы относятся к одному из следующих типов: 32- или 64-разрядные приложения Windows (приложения Windows Apps, работающие на базе среды Windows Runtime в Windows 8 и выше, включаются в эту категорию), 16-разрядные приложения Windows 3.1, 16-разрядные приложения MS-DOS, 32- и 64-разрядные приложения POSIX. Заметим, что 16-разрядные приложения могут выполняться только в 32-разрядных версиях Windows, а приложения POSIX в Windows 8 уже не поддерживаются. 
  • Процессы служб. В эту категорию входят процессы, являющиеся хостами для служб Windows (например, службы планировщика задач и диспетчер печати). Обычно к службам предъявляется требование независимости выполнения от входа пользователя. Многие серверные приложения Windows (например, Microsoft SQL Server и Microsoft Exchange Server) также включают компоненты, выполняемые как службы.
  • Системные процессы. Фиксированные процессы, такие как процесс входа или диспетчер сеансов, не являются службами Windows. Другими словами, они не запускаются диспетчером служб.
  • Серверные процессы подсистем среды. Такие процессы реализуют часть поддержки среды ОС, предоставляемой пользователю и программисту. Изначально в Windows NT было три подсистемы среды: Windows, POSIX и OS/2. Подсистема OS/2 включалась только до Windows 2000, подсистема POSIX в последний раз была включена в Windows XP.Ultimate- и Enterprise-выпуски клиента Windows 7. Все серверные версии Windows 2008 R2 включают поддержку расширенной подсистемы POSIX, называемой SUA (Subsystem for UNIX-based Applications). Сейчас подсистема SUA не поддерживается и уже не включается как необязательное часть в версии Windows (Windows 10 версии 1607 включает подсистему Windows для Linux — WSL, Windows Subsystem for Linux).

Обратим внимание на блок DLL подсистем под блоками Процессы служб и Пользовательские процессы. В Windows пользовательские приложения не вызывают низкоуровневые сервисные функции операционной системы напрямую. Вместо этого они проходят через одну или несколько динамических библиотек (DLL) подсистем. Их роль состоит в том, чтобы преобразовывать документированные функции в соответствующие внутренние (недокументированные) вызовы системных функций, реализованных в основном в Ntdll.dll. Преобразование может включать (а может не включать) отправку сообщения процессу, обслуживающему пользовательский процесс.

Компоненты режима ядра:

  • Исполнительная система. Она содержит базовые сервисные функции ОС: управление памятью, управление процессами и потоками, безопасность, ввод/вывод, сетевая поддержка и межпроцессные коммуникации.
  • Ядро Windows. Низкоуровневые функции ОС: планирование потоков, диспетчеризация прерываний и исключений и многопроцессорная синхронизация. Также ядро предоставляет набор функций и базовых объектов, которые используются исполнительной системой для реализации высокоуровневых конструкций.
  • Драйверы устройств. Сюда входят как драйверы физических устройств, преобразующие вызовы пользовательских функций ввода/вывода в конкретные запросы ввода/вывода к устройству, так и драйверы устройств, не относящихся к физическому оборудованию, например драйверы файловой системы или сетевые драйверы. 
  • Слой абстрагирования оборудования (HAL). Прослойка кода, изолирующее ядро, драйверы устройств и прочий исполняемый код Windows от платформенно-зависимых различий в работе оборудования, например различий между системными платами.
  • Оконная и графическая система. Реализация функций графического интерфейса (GUI), также известных как функции GDI: работа с окнами, элементы пользовательского интерфейса и графический вывод.
  • Уровень гипервизора. Включает всего-навсего один компонент: сам гипервизор. В этой среде нет ни драйверов, ни других модулей. При этом сам гипервизор состоит из нескольких внутренних уровней и служб: собственный диспетчер памяти, планировщик виртуальных процессов, управление прерываниями и таймером, функции синхронизации, разделы (экземпляры виртуальных машин) и внутрипроцессные коммуникации (IPC, Inter-Process Communication) и многие другие.

В таблице ниже представлены некоторые файлы некоторых базовых компонентов Windows:

Windows API

Windows API (Application Programming Interface) — это программный интерфейс пользовательского режима для Windows. До появления 64-разрядной версии операционной системы программный интерфейс 32-разрядных версий Windows назывался Win32 API в отличие от исходного 16-разрядного Windows API (программный интерфейс для исходных 16-разрядных версий Windows). На данный момент термин Windows API или Win32 API относят как к 32-разрядным, так и к 64-разрядным версиям.

В «доисторические времена» Windows API состоял только из функций в стиле C. Выбор языка C был обусловлен тем, что написанный на нем код также мог использоваться из других языков. Он являлся достаточно низкоуровневым для предоставления сервиса ОС. Но огромное количество функций в сочетании с недостаточной последовательностью выбора имен и отсутствием логических группировок (вроде пространств имен C++) привели к тому, что в некоторых новых API используется другой механизм — модель COM.

COM базируется на двух основных принципах. Во-первых, клиенты взаимодействуют с объектами (серверные объекты COM) через интерфейсы — четко определенные контракты с набором логически связанных методов, сгруппированных посредством механизма диспетчеризации по виртуальным таблицам. Такой же механизм, к слову, обычно применяется компиляторами C++ для реализации диспетчеризации виртуальных функций. Таким образом обеспечивается двоичная совместимость и снимаются проблемы с декорированием имен компилятором. Поэтому, такие методы могут вызываться из многих других языков и компиляторов, включая C, C++, VB, языки .NET, Delphi и т. д. Вторым принципом является динамическая загрузка компонентов (вместо статической компоновки с клиентом).

WinRT

В Windows 8 появился новый API и исполнительная среда поддержки Windows Runtime (WinRT). WinRT состоит из платформенных сервисов, предназначенных для разработчиков приложений Windows Apps (приложения Windows Apps подходят для устройств, начиная от миниатюрных IoT-устройств до телефонов, планшетов, десктопных систем, ноутбуков и даже Xbox One и Microsoft HoloLens).

С точки зрения API платформа WinRT строится на базе COM, добавляя в базовую инфраструктуру COM различные расширения. С архитектурной точки зрения она обладает намного большей целостностью: в ней реализованы иерархии пространств имен, последовательная схема назначения имен и паттерны программирования. На базовом двоичном уровне WinRT API все равно строится на основе унаследованных двоичных файлов и API Windows. Это не новый «машинный» API для системы: ситуация немного напоминает то, как .NET строится на основе традиционного Windows API. 

.NET Framework

.NET Framework является частью Windows. Он состоит из двух основных компонентов:

  • CLR (Common Language Runtime). Исполнительная среда .NET, включает JIT-компилятор для преобразования инструкций языка CIL в низкоуровневый язык машинных команд процессора, сборщик мусора, систему проверки типов, безопасность обращения к коду и т. д. Среда реализована в виде внутрипроцессного сервера COM (DLL) и использует различные средства, предоставляемые Windows API.
  • .NET Framework Class Library (FCL). Обширная подборка типов, реализующих функциональность, часто используемую в клиентских и серверных приложениях, — средства пользовательского интерфейса, поддержка сети, работа с базами данных и т. д.

На схеме представлены отношения между .NET Framework и ОС Windows:

Отношение между .NET и ОС Windows. Термин «сервер COM» обычно относится к DLL библиотеке или исполняемому файлу (EXE), в котором реализованы классы COM.

Like this post? Please share to your friends:
  • Абракадабра вместо русских букв windows 10
  • Абракадабра в программах windows 10 как исправить
  • Абот флеш плеер скачать бесплатно для windows 7
  • Абонент driverpackageinstall должен входить в группу администраторов windows 10
  • Абаут плеер скачать бесплатно с официального сайта для windows