Архитектура ядра ос windows nt xp vista 7 8 реферат

Обновлено: 02.07.2024

Операционная система Microsoft Windows XP, создана на основе технологии NT и является прямой наследницей системы Windows 2000. Вместе с тем, все лучшие нововведения, включенные в Windows Me, можно обнаружить и в Windows XP. При сохранении высоких показателей надежности, безопасности и быстродействия, система стала более простой в освоении, в ней появилось множество средств, предназначенных для индивидуальных домашних пользователей.

Содержание

Введение
3
1 Основные понятия. Архитектура ОС Windows
4
1.1 Ядро и вспомогательные модули ОС
4
1.2 Ядро в привилегированном режиме
6
1.3 Многослойная структура ОС
7
1.4 Процессы, потоки и задания
11
2 Общая структура операционной системы Windows XP
15
2.1 Уровень абстрагирования от оборудования
15
2.2 Ядро операционной системы
15
2.3 Драйверы устройств
16
2.4 Исполняющая подсистема (NT Executive)
16
2.5 Диспетчеризация управления программами
17
3 Системный реестр Windows
22
3.1 Использование реестра компонентами Windows
23
3.2 Организация системного реестра
24
3.3 Кусты и файлы реестра
25
Заключение
26
Литература
27

Работа содержит 1 файл

ОС курсовая.doc

1 Основные понятия. Архитектура ОС Windows

1.1 Ядро и вспомогательные модули ОС

1.2 Ядро в привилегированном режиме

1.3 Многослойная структура ОС

1.4 Процессы, потоки и задания

2 Общая структура операционной системы Windows XP

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

2.2 Ядро операционной системы

2.3 Драйверы устройств

2.4 Исполняющая подсистема (NT Executive)

2.5 Диспетчеризация управления программами

3 Системный реестр Windows

3.1 Использование реестра компонентами Windows

3.2 Организация системного реестра

3.3 Кусты и файлы реестра

Операционная система Microsoft Windows XP, создана на основе технологии NT и является прямой наследницей системы Windows 2000. Вместе с тем, все лучшие нововведения, включенные в Windows Me, можно обнаружить и в Windows XP. При сохранении высоких показателей надежности, безопасности и быстродействия, система стала более простой в освоении, в ней появилось множество средств, предназначенных для индивидуальных домашних пользователей.

Следует отметить, что для эффективной работы с операционной системой Windows XP требуется достаточно мощный современный компьютер. Прежде всего, в компьютере должно быть установлено не менее 128 мегабайт памяти. Лучше установить 256 мегабайт, чтобы система работала быстрее. Процессор может использоваться любой, но не слишком старый. Если тактовая частота процессора не менее 300 мегагерц, то он подойдет. Хотя лучше, конечно, использовать процессор с частотой более одного гигагерца. Жесткий диск должен вмещать не только файлы операционной системы и временные файлы, но и иметь достаточно свободного места, например, для создания образа компакт-диска перед его записью. Реально требуется диск размером не менее двух-трех гигабайт. А если учесть, что на диске надо установить другие программы и оставить место для разных документов, то диск объемом 10 гигабайт нельзя назвать слишком большим.

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

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

Большинство современных операционных систем представляют собой хорошо структурированные модульные системы, способные к развитию, расширению и переносу на новые платформы. Какой-либо единой архитектуры ОС не существует, но существуют универсальные подходы к структурированию ОС.

1 Основные понятия

1.1 Ядро и вспомогательные модули ОС

Наиболее общим подходом к структуризации операционной системы является разделение всех ее модулей на две группы:

- ядро — модули, выполняющие основные функции ОС;

- модули, выполняющие вспомогательные функции ОС.

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

В состав ядра входят функции, решающие внутрисистемные задачи организации вычислительного процесса, такие как переключение контекстов, загрузка/выгрузка станиц, обработка прерываний. Эти функции недоступны для приложений. Другой класс функций ядра служит для поддержки приложений, создавая для них так называемую прикладную программную среду. Приложения могут обращаться к ядру с запросами — системными вызовами — для выполнения тех или иных действий, например для открытия и чтения файла, вывода графической информации на дисплей, получения системного времени и т. д. Функции ядра, которые могут вызываться приложениями, образуют интерфейс прикладного программирования — API.

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

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

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

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

Поскольку некоторые компоненты ОС оформл ены как обычные приложения, то есть в виде исполняемых модулей стандартного для данной ОС формата, то часто бывает очень сложно провести четкую грань между операционной системой и приложениями (рис 1).

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

Некоторая программа может существовать определенное время как пользовательское приложение, а потом стать частью ОС, или наоборот. Ярким примером такого изменения статуса программы является Web-браузер компании Microsoft, который сначала поставлялся как отдельное приложение, затем стал частью операционных систем Windows NT 4.0 и Windows 95/98, а сегодня существует большая вероятность того, что по решению суда этот браузер снова превратится в самостоятельное приложение.

Рисунок 1 - Нечеткость границы между ОС и приложениями

Вспомогательные модули ОС обычно подразделяются на следующие группы:

- утилиты — программы, решающие отдельные задачи управления и сопровождения компьютерной системы, такие, например, как программы сжатия дисков, архивирования данных на магнитную ленту;

- системные обрабатывающие программы — текстовые или графические редакторы, компиляторы, компоновщики, отладчики;

- программы предоставления пользователю дополнительных услуг — специальный вариант пользовательского интерфейса, калькулятор и даже игры;

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

Как и обычные приложения, для выполнения своих задач утилиты, обрабатывающие программы и библиотеки ОС, обращаются к функциям ядра посредством системных вызовов (рисунок 2).

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

Рисунок 2 - Взаимодействие между ядром и вспомогательными модулями ОС

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

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

1.2 Ядро в привилегированном режиме

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

Обеспечить привилегии операционной системе невозможно без специальных средств аппаратной поддержки. Аппаратура компьютера должна поддерживать как минимум два режима работы — пользовательский режим (user mode) и привилегированный режим, который также называют режимом ядра (kernel mode), или режимом супервизора (supervisor mode). Подразумевается, что операционная система или некоторые ее части работают в привилегированном режиме, а приложения — в пользовательском режиме.

Рисунок 3 - Архитектура операционной системы с ядром в привилегированном режиме

1.3 Многослойная структура ОС

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

Рисунок 4 - Трехслойная схема вычислительной системы

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


Архитектура Windows NT - линейки операционных систем, производимых и продаваемых Microsoft, - представляет собой многоуровневую конструкцию, состоящую из двух основных компонентов: пользовательского режима и режима ядра.

архитектура windows 7

Это упреждающая реентерабельная операционная система, созданная для работы с однопроцессорными и симметричными многопроцессорными (SMP) компьютерами. Для обработки запросов ввода и вывода (I/O) они используют пакетную передачу, которая использует пакеты IRP и асинхронный ввод/вывод. Начиная с Windows XP, Microsoft начала предоставлять 64-разрядные версии ОС, до этого эти платформы существовали только в 32-битных версиях.

Каковы ее принципы?

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

Режим ядра в Windows NT имеет полный доступ к аппаратным и системным ресурсам компьютера. Ядро этой оболочки известно как гибридное. Архитектура включает в себя простое ядро, уровень аппаратной абстракции (HAL), драйверы и ряд служб (совместно именуемых Executive), которые все существуют в одном режиме.

архитектура ос windows

Интерфейсы Executive в архитектуре Windows со всеми подсистемами пользовательского режима имеют дело с вводом/выводом, управлением объектами, безопасностью и управлением процессами. Ядро находится между уровнем аппаратной абстракции и исполнительным устройством, обеспечивая многопроцессорную синхронизацию, планирование и диспетчеризацию потоков и прерываний, а также обработку прерываний и диспетчеризацию исключений. Ядро также отвечает за инициализацию драйверов устройств при загрузке.

Драйверы этого режима существуют на трех уровнях:

  • высшего;
  • промежуточного;
  • низкого.

Модель драйверов Windows (WDM) существует на промежуточном уровне, и в основном была разработана для обеспечения совместимости двоичного и исходного кода между Windows 98 и 2000. Драйверы самого низкого уровня являются либо устаревшими установщиками устройств Windows NT, которые управляют устройством напрямую, либо могут быть разновидностями Play (PnP) - аппаратной шины.

Пользовательский режим

Пользовательский режим состоит из различных системных процессов и библиотек DLL.

архитектура системы windows

Какую роль играют подсистемы?

Существует четыре основные подсистемы среды: Win32, OS/2, Windows для Linux и POSIX.

архитектура windows 10

Подсистема среды OS/2 поддерживает 16-разрядные символьные приложения OS/2 и эмулирует OS/2 1.x, но не 32-разрядные или графические приложения OS 2, используемые в OS/2 2.x или более поздней версии только для компьютеров x86.

Подсистема среды POSIX поддерживает приложения, которые строго написаны либо для POSIX.1, либо для соответствующих стандартов ISO/IEC. Она была заменена Interix, которая является частью Windows Services for UNIX.

Подсистема безопасности работает с токенами безопасности, предоставляет или запрещает доступ к учетным записям пользователей на основе разрешений на ресурсы, обрабатывает запросы на вход в систему и инициирует проверку подлинности входа, а также определяет, какие системные ресурсы должны проверяться Windows NT.

архитектура операционной системы windows

Режим ядра

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

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

Администрирование

Службы Windows Executive составляют низкоуровневую часть режима ядра и содержатся в файле NTOSKRNL.EXE. Это касается ввода-вывода, управления объектами, безопасности и управления процессами. Они разделены на несколько подсистем, среди которых особую роль играют Cache Manager, Configuration Manager, I/O Manager, локальный вызов процедур (LPC), Memory Manager, Структура процессов и Контрольный монитор безопасности (SRM). Сгруппированные вместе компоненты могут называться исполнительными службами (внутреннее имя Ex). Системные сервисы (внутреннее имя Nt), то есть системные вызовы, также реализованы на этом уровне, за исключением очень немногих, которые обращаются напрямую к уровню ядра для повышения производительности.

архитектура ядра windows

Диспетчер объектов

Диспетчер объектов (внутреннее имя Ob) - это исполнительная подсистема, через которую должны пройти все остальные такие подсистемы, особенно системные вызовы, чтобы получить доступ к ресурсам Windows NT, что, по сути, делает ее службой инфраструктуры управления ресурсами. Диспетчер объектов используется для уменьшения дублирования функциональных возможностей управления ресурсами в в других исполнительных подсистемах, что может привести к ошибкам и усложнить разработку Windows NT.

Для данного менеджера каждый ресурс является объектом, независимо от того, является ли он физическим (таким как файловая система или периферийное устройство) или логическим (таким как файл). Каждый объект имеет структуру или тип, о котором должен знать Ob.

Создание объекта в архитектуре ОС семейства Windows представляет собой процесс, протекающий в два этапа - создание и вставка. Создание вызывает выделение пустого объекта и резервирование любых ресурсов, требуемых диспетчером, таких как (необязательно) имя в пространстве имен. Если оно было успешным, подсистема, ответственная за создание, заполняет пустой объект. Наконец, если подсистема считает инициализацию успешной, она дает указание диспетчеру объектов вставить объект, что делает его доступным через его имя или файл cookie, называемый дескриптором. С этого момента время существования объекта обрабатывается менеджером, и подсистема должна поддерживать его в рабочем состоянии, пока Ob не сообщит о его удалении.

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

архитектура windows 8 1

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

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

Контроллер кеша

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

Менеджер ввода/вывода

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

Локальный вызов процедур (LPC)

Эта структурная часть архитектуры Windows 10 (и всех ранних дистрибутивов) предоставляет порты межпроцессного взаимодействия с семантикой соединения. Порты LPC используются подсистемами пользовательского режима для связи со своими клиентами, подсистемами Executive для связи с подсистемами пользовательского режима и в качестве основы для локального транспорта для Microsoft RPC.

Диспетчер памяти

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

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

Относительно простой и специальный характер сессий связан с тем, что они не были частью первоначального проекта, и должны были быть разработаны с минимальным нарушением основной линии третьей стороной (Citrix Systems) в качестве предварительного условия для их терминального серверного продукта для Windows NT, называемого WinFrame.

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

Структура процесса

Данный элемент архитектуры ОС Windows 7 (и остальных вариаций) управляет созданием и завершением процессов и потоков, а также реализует концепцию Job, группы процессов, которые могут быть завершены как единое целое или помещены под общие ограничения (например, общий максимум выделенной памяти или время ЦП). Объекты заданий были введены в Windows 2000.

PnP Manager

Управляет и поддерживает обнаружение и установку устройства во время загрузки. Он также несет ответственность за остановку и запуск устройств по требованию - это может произойти, когда шина (например, USB или IEEE 1394 FireWire) приобретает новое устройство и для его поддержки необходимо загрузить драйвер. Его основная часть фактически реализована в пользовательском режиме, в службе Plug and Play, которая выполняет часто сложные задачи по установке соответствующих драйверов, уведомлению служб и приложений о появлении новых устройств и отображению графического интерфейса пользователя.

Менеджер питания

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

Контрольный монитор безопасности (SRM)

Основной орган по обеспечению соблюдения правил безопасности интегральной подсистемы безопасности. Он определяет, можно ли получить доступ к объекту или ресурсу, используя списки управления доступом (ACL), которые сами состоят из записей управления доступом (ACE). ACE содержат идентификатор безопасности (SID) и список операций, которые ACE предоставляет выбранной группе - учетная запись пользователя, группы или сеанс входа в систему - разрешение (разрешить, запретить или выполнить проверку) для этого ресурса.

Интерфейс графического устройства отвечает за такие задачи, как рисование линий и кривых, отрисовка шрифтов и обработка палитр. В выпусках серии Windows NT 3.x компонент GDI помещался в подсистему клиент/сервер в пользовательском режиме, но он был переведен в режим ядра в архитектуре операционной системы Windows NT 4.0 для улучшения графической производительности.

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

Аннотация: В лекции рассмотрены следующие вопросы: история Windows; роль Windows NT; архитектура Windows; ядро; исполнительная подсистема; подсистемы окружения.

Презентацию к данной лекции Вы можете скачать здесь.

Введение

Windows – наиболее распространенное семейство операционных систем для настольных и портативных компьютеров. Имеются также версии Windows для мобильных устройств ( Windows Mobile ) и для компьютерных кластеров. Можно без преувеличения сказать, что Windows – это тот мир, в котором живут и работают миллионы программистов. Windows в своем развитии бурно прогрессирует . Значительно повысилась надежность системы, значительно возросли ее возможности. В данной и следующей лекциях рассмотрены история, архитектура и возможности Windows . В "Обзор архитектуры и возможностей систем Windows 2000/XP/2003/Vista/2008/7" и "Системные механизмы Windows" рассмотрены следующие вопросы:

  • История
  • Принципы проектирования
  • Компоненты системы
  • Подсистемы окружения
  • Файловая система
  • Работа в сети
  • Программный интерфейс.

Система Windows 2000

Windows 2000 – это 32-битовая многозадачная операционная система для микропроцессоров типа Intel. Windows 2000 продолжает линию развития, начатую в середине 1990-х гг. системой Windows NT.

Основные цели разработки Windows 2000 и последующих новых версий Windows (2003/2008/7):

  • переносимость
  • безопасность
  • соответствие POSIX
  • поддержка многопроцессорности
  • расширяемость
  • поддержка интернационализации
  • совместимость приложений с MS-DOS и ранними версиями Microsoft Windows.

Новые версии Windows используют архитектуру микроядра.

Windows 2000 доступна в нескольких версиях - Professional , Server , Advanced Server , National Server .

История Windows

Для большинства отечественных пользователей, включая автора, Windows стала доступной впервые в конце 1980-х гг. как графическая оболочка , запускаемая в среде операционной системы MS DOS командой win. Уже тогда были ощутимы основные характерные черты Windows , хотя она еще не была операционной системой, - удобный многооконный (как тогда называли) графический пользовательский интерфейс .

Затем появились наиболее известные в те годы версии - Windows 3.0, Windows 3.11, Windows for Workgroups ( Windows для рабочих групп). Все они поддерживали исполнение приложений под управлением графической многооконной оболочки.

В 1988 Microsoft приняла решение о разработке переносимой ОС " new technology " (NT), которая поддерживала бы и OS/2 , и POSIX API .

Первоначально Windows NT должна была использовать OS/2 API как свое естественное окружение, однако в процессе разработки NT была изменена и стала использовать Win32 API , что отражает популярность Windows 3.0.

Именно Windows NT, появившаяся к середине 1990-х гг., сыграла решающую роль в изменении отношения пользователей к Windows . До ее появления на рынке существовала точка зрения о недостаточной надежности Windows и невозможности ее использования как серверной ОС , вследствие чего в качестве серверных ОС многие предпочитали использовать Solaris или другие версии UNIX . Однако Windows NT Server , с ее передовой надежной архитектурой, расширенной поддержкой сети, поддержкой совместимости снизу вверх для приложений, разработанных для предшествующих ОС, изменила ситуацию на рынке до такой степени, что к середине 1990-х гг. лицензий на Windows NT было продано больше, чем на UNIX .

Весьма важной линией развития Windows стало семейство клиентских ОС - Windows 9x – Windows 95 и Windows 98, затем – Windows Millennium. В этих операционных системах были реализованы расширенные мультимедийные возможности, поддержка драйверов самых разнообразных устройств (в том числе – механизм Plug -and-Play автоматического распознавания новых устройств и установки их драйверов), а также кодеки для обработки мультимедийной информации. Пользовательский интерфейс Windows 95 (с его "летающими листками" и характерным дизайном окон) стал эталоном для разработчиков GUI . Не случайно Microsoft значительно продлила срок поддержки Windows 98 для пользователей. Автору, так же как и миллионам других разработчиков, не хотелось "расставаться" с комфортным интерфейсом Windows 95 / 98.

Значительным рубежом в развитии ОС стал выпуск в 2001 г. ОС Windows XP, которая и в настоящее время, почти через 10 лет (дополненная Service Packs 1, 2 и 3), является одной из наиболее широко используемых ОС в мире. Кодовое название Windows XP – whistler (свистулька),по-видимому, из-за характерной мелодии, сопровождающей вход в системы и выход их системы. Windows XP популярна среди пользователей, благодаря удобному инсталлятору, повышенной надежности, удобному и эстетичному пользовательскому интерфейсу, расширенной поддержке драйверов устройств (начиная с Windows XP, практически никаких проблем с драйверами при установке новых устройств пользователи Windows не испытывают).

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

ОС Windows 2008 – серверная ОС с удобными средствами конфигурирования, удобной поддержкой сети, поддержкой параллельного программирования . Выпущена также ее специальная версия Windows 2008 HPC – High Performance Computing , с расширенной поддержкой параллелизма .

Недавно на рынке ОС появилась Windows 7 – клиентская ОС, по отзывам пользователей, весьма надежная и удобная.

Таков лишь очень краткий перечень уникальных результатов фирмы Microsoft в области операционных систем – за небольшой отрезок времени разработано более десятка клиентских и серверных ОС семейства Windows , значительно повышена их надежность и безопасность , расширены пользовательские возможности.

Наиболее значительной представляется линия развития ОС Windows NT – Windows 2000 – Windows XP – Windows 2003 – Windows Vista - Windows 2008 – Windows 7. Это семейство ОС использует общие принципы архитектуры и общую кодовую базу (код ядра). Поэтому в дальнейшем в данной и следующей лекциях, рассматривая принципы организации Windows 2000 , мы фактически рассматриваем архитектуру всех новых ОС семейства Windows .

Принципы проектирования Windows 2000 – расширяемость, переносимость, надежность, безопасность, совместимость, производительность, поддержка интернационализации и локализации.

Расширяемость. Windows 2000 имеет многоуровневую архитектуру. Ядро и его исполнительная подсистема (executive),исполняемое в защищенном режиме, обеспечивает базовые системные сервисы . Поверх ядра реализованы несколько серверных подсистем, работающих в пользовательском режиме. Модульная структура позволяет добавлять новые подсистемы окружения без модификации ядра.

Переносимость.Благодаря своим принципам проектирования и архитектуры, Windows 2000 может быть перенесена с одной аппаратной платформы на другую со сравнительно небольшими изменениями. Система написана на языках высокого уровня - C и C++. Код, зависящий от процессора, изолирован в динамически линкуемую библиотеку ( DLL ), называемую уровень абстрагирования от аппаратуры - hardware abstraction layer (HAL).Идея HAL была реализована фирмой Microsoft, по признанию ее менеджеров, гораздо раньше – при разработке в 1980-х гг. пакета Microsoft Office для различных аппаратных платформ, включая Macintosh / MacOS (ОС Windows тогда еще не было). Эта же идея была использована и в Windows 2000 , и еще позднее – при реализации академической версии . NET – SSCLI (Rotor), работающей на трех различных платформах.

Надежность. Windows 2000 использует аппаратную защиту для виртуальной памяти и программные защитные механизмы для ресурсов ОС.

Безопасность. Как уже было сказано в предыдущих лекциях, именно с улучшения безопасности Windows 2000 была начата инициатива trustworthy computing , и с тех пор в каждой новой ОС Microsoft уделяет особое внимание безопасности.

Совместимость. Приложения, которые разработаны с учетом требований стандарта IEEE 1003.1 ( POSIX ), могут компилироваться для Windows 2000 без изменений в исходном коде и исполняться в среде Windows 2000 .

Поддержка интернационализации (i18n) и локализации (l10n). Windows 2000 поддерживает различные языки и культурные среды (locales) с помощью специализированных библиотек - NLS API .

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

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

Схема архитектуры Windows 2000 приведена на рис. 27.1.

Архитектура Windows 2000.

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

Ядро Windows 2000

Ядро в системе является основой функционирования исполнительной подсистемы (executive) и подсистем, выполняемых в пользовательском режиме. Отказы страниц в ядре исключены. Его исполнение никогда не прерывается.

Ядро выполняет следующие основные функции:

  • Планирование потоков
  • Обработка прерываний и исключений
  • Низкоуровневую синхронизацию процессов
  • Восстановление после отказов электропитания.

Особенно важной и принципиально новой в операционных системах особенностью является то, что ядро системы Windows - объектно-ориентированное. Ядро использует два набора объектов:

  • Объекты-диспетчеры - - объекты, управляющие диспетчеризацией и синхронизацией (события, мьютексы , семафоры, потоки, таймеры).
  • Управляющие объекты - асинхронные вызовы процедур, обработчики прерываний, объекты нотификации об электропитании, объекты состояния электропитания, объекты профилирования .

Поддержка потоков и процессов в ядре.Процесс имеет адресное пространство в виртуальной памяти, информацию (например, базовый приоритет) и тесную связь с одним или несколькими процессами. Потоки – единицы исполнения, планируемые диспетчером ядра. Каждый поток имеет свое собственное состояние, включая приоритет, связь с процессором и статистическую информацию . Поток может быть в следующих состояниях: ready, standby, running, waiting, transition и terminated.

Планирование в ядре. Диспетчер использует 32-уровневую схему приоритетов для определения порядка выполнения потоков. Приоритеты разбиты на два класса:

  • Класс real-time содержит потоки с приоритетами от 16 до 31.
  • Класс variable содержит потоки с приоритетами от 0 до 15.

Характерными чертами стратегии приоритетов Windows 2000 являются следующие:

  • Хорошее время ответа для потоков, использующих мышь и окна.
  • Предоставление возможности потокам, связанным с вводом-выводом, обеспечивать занятость устройств ввода-вывода .

Планирование выполняется, когда поток переходит в состояние ready или wait , когда поток завершается, либо когда приложение изменяет приоритет потока или связь с процессором.

Потокам реального времени отдается предпочтение при выделении процессора; но ОС не гарантирует, что поток начнет выполняться в течение какого-либо определенного интервала времени (такой подход известен как soft real-time ).

Windows – одна из наиболее многогранных и гибких ОС, она работает на совершенно разных архитектурах и доступна в разных вариантах. На сегодня она поддерживает архитектуры x86, x64, ARM и ARM64. Windows в своё время поддерживала Itanium, PowerPC, DEC Alpha и MIPS. Кроме того, Windows поддерживает целый набор SKU, работающих в различных условиях; от дата-центров, ноутбуков, Xbox и телефонов до встраиваемых версий для интернета вещей, например, в банкоматах.

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

В этой статье я расскажу об эволюции ключевых частей ядра Windows, которые позволяют ему прозрачно масштабироваться от чипа NVidia Tegra низкого потребления, работающего на Surface RT 2012 года, до гигантских монстров, работающих в дата-центрах Azure.

Менеджер задач Windows, работающий на пререлизной машине класса Windows DataCenter, с 896 ядрами, поддерживающими 1792 логических процессора и 2 Тб памяти

Эволюция единого ядра

Перед тем, как обсудить детали ядра Windows, сделаем небольшое отступление в сторону рефакторинга. Рефакторинг играет ключевую роль в увеличении случаев повторного использования компонентов ОС на различных SKU и платформах (к примеру, клиент, сервер и телефон). Базовая идея рефакторинга – позволить повторно использовать одни и тем же DLL на разных SKU, поддерживая небольшие модификации, сделанные специально под нужный SKU, не переименовывая DLL и не ломая работу приложений.

Базовая технология рефакторинга Windows – мало документированная технология под названием "наборы API". Наборы API – это механизм, позволяющий ОС разъединять DLL и место их применения. К примеру, набор API позволяет приложениям для win32 продолжать пользоваться kernel32.dll, притом, что реализация всех API прописана в другой DLL. Эти DLL с реализацией также могут отличаться у разных SKU. Посмотреть наборы API в деле можно, запустив обход зависимостей на традиционной Windows DLL, например, kernel32.dll.

Закончив это отступление по поводу строения Windows, позволяющего системе максимизировать повторное и совместное использование кода, перейдём к техническим глубинам запуска ядра по планировщику, являющегося ключом к масштабированию ОС.

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

Windows NT – это, по сути, микроядро, в том смысле, что у него есть своё core Kernel (KE) с ограниченным набором функций, использующее исполняемый уровень (Executive layer, Ex) для выполнения всех политик высокого уровня. EX всё ещё является режимом ядра, так что это не совсем микроядро. Ядро отвечает за диспетчеризацию потоков, синхронизацию между процессорами, обработку исключений аппаратного уровня и реализацию низкоуровневых функций, зависящих от железа. Слой EX содержит различные подсистемы, обеспечивающие набор функциональности, который обычно считается ядром – IO, Object Manager, Memory Manager, Process Subsystem, и т.д.

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

Подсистемы ядра Строк кода
Memory Manager 501, 000
Registry 211,000
Power 238,000
Executive 157,000
Security 135,000
Kernel 339,000
Process sub-system 116,000

Более подробная информация об архитектуре Windows содержится в серии книг “Windows Internals”.

Планировщик

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

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

У планировщика Windows изначально была одна очередь готовности, из которой он выбирал следующий, наивысший по приоритету поток для запуска. Однако с началом поддержки всё большего количества процессоров, единственная очередь превратилась в узкое место, и примерно в районе выхода Windows Server 2003 планировщик поменял работу и организовал по одной очереди готовности на процессор. При переходе на поддержку нескольких запросов на один процессор единую глобальную блокировку, защищающую все очереди, делать не стали, и разрешили планировщику принимать решения на основе локальных оптимумов. Это означает, что в любой момент в системе работает один поток с наивысшим приоритетом, но не обязательно означает, что N самых приоритетных потоков в списке (где N – число процессоров) работают в системе. Такой подход оправдывал себя, пока Windows не начала переходить на CPU с низким энергопотреблением, например, на ноутбуки и планшеты. Когда на таких системах поток с наивысшим приоритетам не работал (например, поток переднего плана интерфейса пользователя), это приводило к заметным глюкам интерфейса. Поэтому в Windows 8.1 планировщик перевели на гибридную модель, с очередями для каждого процессора для потоков, связанных с этим процессором, и разделяемой очередью готовых процессов для всех процессоров. Это не сказалось на быстродействии заметным образом благодаря другим изменениям в архитектуре планировщика, например, рефакторингу блокировки базы данных диспетчера.

В Windows 7 ввели такую вещь, как динамический планировщик со справедливыми долями (Dynamic Fair Share Scheduler, DFSS); это в первую очередь касалось терминальных серверов. Эта особенность пыталась решить проблему, связанную с тем, что одна терминальная сессия с высокой загрузкой CPU могла повлиять на потоки в других терминальных сессиях. Поскольку планировщик не учитывал сессии и просто использовал приоритет для распределения потоков, пользователи в разных сессиях могли повлиять на работу пользователей в других сессиях, задушивая их потоки. Также это давало несправедливое преимущество сессиям (и пользователям) с большим количеством потоков, поскольку у сессии с большим количеством потоков было больше возможностей получить процессорное время. Была сделана попытка добавить в планировщик правило, по которому каждую сессию рассматривали на равных с другими по количеству процессорного времени. Подобная функциональность есть и в ОС Linux с их абсолютно честным планировщиком (Completely Fair Scheduler). В Windows 8 эту концепцию обобщили в виде группы планировщика и добавили в планировщик, в результате чего каждая сессия попадала в независимую группу. Кроме приоритетов для потоков, планировщик использует группы планировщика как индекс второго уровня, принимая решение по поводу того, какой поток запускать следующим. В терминальном сервере все группы планировщика имеют одинаковый вес, поэтому все сессии получают одинаковое количество процессорного времени вне зависимости от количества или приоритетов потоков внутри групп планировщика. Кроме того, такие группы также используют для более точного контроля над процессами. В Windows 8 рабочие объекты (Job) были дополнены так, чтобы поддерживать управление процессорным временем. При помощи специального API можно решать, какую часть процессорного времени может использовать процесс, должно это быть мягкое или жёсткое ограничение, и получать уведомления, когда процесс достигает этих ограничений. Это похоже на управление ресурсами в cgroups на Linux.

Но на машинах, где число ядер CPU превышает 64, Windows начала демонстрировать новые узкие места, не дававшие таким требовательным приложениям, как SQL-сервер, масштабироваться линейно с ростом количества ядер процессора. Поэтому, даже при добавлении новых ядер и памяти, замеры скорости не показывали её существенного увеличения. Одной из главных проблем, связанных с этим, был спор по поводу блокировки базы диспетчера. Блокировка базы диспетчера защищала доступ к объектам, работу которых необходимо было запланировать. Среди этих объектов – потоки, таймеры, порты ввода/вывода, другие объекты ядра, подверженные ожиданию (события, семафоры, мьютексы). Под давлением необходимости разрешения таких проблем, в Windows 7 была проделана работа по устранению блокировки базы диспетчера и замене её на более точные подстройки, например, пообъектную блокировку. Это позволило таким замерам производительности, как SQL TPC-C, продемонстрировать рост скорости на 290% по сравнению с предыдущей схемой на некоторых конфигурациях. Это был один из крупнейших взлётов производительности в истории Windows, случившихся благодаря изменению единственной особенности.

Windows 10 принесло другую инновацию, внедрив наборы процессоров (CPU Sets). CPU Sets позволяют процессу разделять систему так, что процесс может распределиться на несколько групп процессоров, не позволяя другим процессам пользоваться ими. Ядро Windows даже не даёт прерываниям устройств пользоваться процессорами, входящими в ваш набор. Это гарантирует, что даже устройства не смогут исполнять свой код на процессорах, выданных группе вашего приложения. Это похоже на низкотехнологичную виртуальную машину. Понятно, что это мощная возможность, поэтому в неё встроено множество мер безопасности, чтобы разработчик приложения не допустил больших ошибок, работая с API. Функциональность наборов CPU используется в игровом режиме (Game Mode).

Работа от чужого имени [Work on Behalf]: в Windows довольно много работы на переднем плане осуществляется другими сервисами, работающими в фоне. К примеру, при поиске в Outlook сам поиск проводится фоновым сервисом Indexer. Если мы просто запустим все сервисы на малом ядре, пострадает качество и скорость работы приложений на переднем плане. Чтобы при таких сценариях работы она не замедлялась на архитектурах big.LITTLE, Windows отслеживает вызовы приложения, поступающие к другим процессам, чтобы выполнять работу от их имени. В таком случае мы выдаём приоритет переднего плана потоку, относящемуся к сервису, и заставляем его выполняться на большом ядре.

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

Читайте также: