На каком ядре основана windows

Время на прочтение
8 мин

Количество просмотров 58K

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. Решая, какой из потоков запустить, планировщик использует их приоритеты, и в теории, поток с наивысшим приоритетом должен запускаться на системе, даже если это означает, что потокам с более низким приоритетам времени не останется.

Проработав квантовое время (минимальное количество времени, которое может работать поток), поток испытывает уменьшение динамического приоритета, чтобы потоки с высоким приоритетом не могли работать вечно, душа всех остальных. Когда для работы пробуждается другой поток, ему повышают приоритет, рассчитанный на основе важности события, из-за которого произошло ожидание ( например, приоритет сильно повышается для находящегося на переднем плане интерфейса пользователя, и несильно – для завершения операций ввода/вывода). Поэтому поток работает с высоким приоритетом, пока он остаётся интерактивным. Когда он становится связанным преимущественно с вычислениями (CPU-bound), его приоритет падает, и к нему возвращаются уже после того, как другие потоки с высоким приоритетом получат своё процессорное время. Кроме того, ядро произвольным образом увеличивает приоритет готовых потоков, не получивших процессорного времени за определённый промежуток, чтобы предотвратить их вычислительное голодание и подправить инверсию приоритетов.

У планировщика 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.

Начиная с Windows 7, в Windows Server появилась поддержка более 64 логических процессоров на одном компьютере. Чтобы добавить поддержку такому большому количеству процессоров, в системе ввели новую категорию, «процессорная группа». Группа – неизменный набор логических процессоров количеством не более 64 штук, которые рассматриваются планировщиком как вычислительная единица. Ядро при загрузке определяет, какой процессор к какой группе отнести, и у машин с количеством процессорных ядер менее 64 этот подход практически невозможно заметить. Один процесс может разделяться на несколько групп (например, экземпляр SQL-сервера), единственный поток в один момент времени может выполняться только в рамках одной группы.

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

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

Наконец, мы приходим к поддержке ARM64, появившейся у Windows 10. Архитектура ARM поддерживает архитектуру big.LITTLE, гетерогенную по своей природе – «большое» ядро работает быстро и потребляет много энергии, а «малое» ядро работает медленно и потребляет меньше. Идея в том, что малозначительные задачи можно выполнять на малом ядре, экономя таким образом батарею. Для поддержки архитектуры big.LITTLE и увеличения времени работы от батареи при работе Windows 10 на ARM, в планировщик добавили поддержку гетерогенной планировки, учитывающую пожелания приложения, работающего с архитектурой big.LITTLE.

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

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

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

I saw a question on Linux Kernel. While reading that I had this doubt.

Community's user avatar

asked Nov 27, 2009 at 8:04

Ramesh's user avatar

1

The Windows NT branch of windows has a Hybrid Kernel. It’s neither a monolithic kernel where all services run in kernel mode or a Micro kernel where everything runs in user space. This provides a balance between the protection gained from a microkernel and the performance that can be seen in a monolithis kernel (as there are fewer user/kernel mode context switches).

As an example, device drivers and the Hardware Abstraction layer run in kernel node but the Workstation service runs in user mode. The wikipedia article on Hybrid Kernels has a good overview.

The Windows Internals book gives an explanation for the hybrid approach

… The Carnegie Mellon University Mach
operating system, a contemporary
example of a microkernel architecture,
implements a minimal kernel that
comprises thread scheduling, message
passing, virtual memory, and device
drivers. Everything else, including
various APIs, file systems, and
networking, runs in user mode.
However, commercial implementations of
the Mach microkernel operating system
typically run at least all file system,
networking, and memory management
code in kernel mode. The reason is
simple: the pure microkernel design is
commercially impractical because it’s
too inefficient.

answered Nov 27, 2009 at 8:10

Robert Christie's user avatar

Robert ChristieRobert Christie

20.2k8 gold badges43 silver badges38 bronze badges

According to Wikipedia it’s a Hybrid kernel. Which may or may not be just marketing speak for about the same as a monolithic one. The graphic on the latter page does make some things clearer, though.

Most importantly, almost no program on Windows uses the kernel API directly. And the complete Windows API subsystem resides in user space which is a rather large part of the OS as we see it. And in more recent versions Microsoft began to pull more and more device drivers from kernel space into user space (which is especially a good idea with certain drivers, such as for video cards which are probably as complex as an operating system on their own).

answered Nov 27, 2009 at 8:09

Joey's user avatar

JoeyJoey

345k85 gold badges690 silver badges687 bronze badges

1

hyru hybrid kernel is the name of the Kernel that Windows systems after Windows 98, before that it was a GUI overlaid on DOS using a monolithic Kernel.

answered May 18, 2013 at 21:38

user2397760's user avatar

Windows
Windows logo and wordmark - 2012.svg
Windows 8 start screen.png
Стартовый экран Windows 8
Разработчик

Microsoft Corporation

Семейство ОС

MS-DOS/9x-based
Windows CE
Windows NT

Поддерживаемые платформы

x86, x86-64, IA-64 (только серверный вариант), ARM

Лицензия

Microsoft EULA

Состояние

Актуально

Веб-сайт

windows.microsoft.com

Windows (МФА: [ˈmaɪkɹəˌsɔft ˈwɪn.doʊz], произносится [ма́йкрософт ви́ндоус]) — семейство проприетарных операционных систем корпорации Microsoft, ориентированных на применение графического интерфейса при управлении. Изначально были всего лишь графическими надстройками для MS-DOS.

По состоянию на декабрь 2012 года под управлением операционных систем семейства Windows по данным ресурса Netmarketshare (Net Applications) работает около 92 % персональных компьютеров.[1]

Операционные системы Windows работают на платформах x86, x86-64, IA-64, ARM. Существовали также версии для DEC Alpha, MIPS, PowerPC и SPARC.[2]

Содержание

  • 1 Версии
    • 1.1 Графические интерфейсы и расширения для DOS
    • 1.2 Семейство Windows 9x
    • 1.3 Семейство Windows NT
    • 1.4 Семейство ОС для карманных компьютеров
    • 1.5 Семейство встраиваемых ОС Windows Embedded
    • 1.6 Windows N
  • 2 Хронология
  • 3 Интегрированные программные продукты
  • 4 Распространённость
  • 5 См. также
  • 6 Примечания
  • 7 Литература
  • 8 Ссылки

[править] Версии

Версии Windows делят на несколько «групп».

Список версий
Дата выхода Название Последняя версия Дата прекращения поддержки[3] Последняя совместимая версия Internet Explorer
20 ноября 1985 Windows 1.0 1.04 (апрель 1987) 31 декабря 2001
1 ноября 1987 Windows 2.0 2.11 (13 марта 1989) 31 декабря 2001
22 мая 1990 Windows 3.0 3.00a (31 октября 1990) 31 декабря 2001[4]
18 марта 1992 Windows 3.1 3.1 31 декабря 2001[5] 5
октябрь 1992 Windows for Workgroups 3.1 3.11 (31 декабря 1993) 31 декабря 2001[6] 5
27 июля 1993 Windows NT 3.1 3.10.528 SP3 (10 ноября 1994) 31 декабря 2000 5
21 сентября 1994 Windows NT 3.5 3.50.807 SP3 (21 июня 1995) 31 декабря 2001 5
30 мая 1995 Windows NT 3.51 3.51.1057 SP5 (19 сентября 1996) 31 декабря 2001 5
24 августа 1995 Windows 95 4.00.950C (4.03.1214) (26 ноября 1997) 31 декабря 2000 (осн.); 31 декабря 2001 (ext) 5.5
29 июля 1996 Windows NT 4.0 4.00.1381 / SP6a SRP (26 июля 2001) 20 июня 2002 (осн.); 30 июня 2003 (SBL); 31 декабря 2004 (ext) 6
25 июня 1998 Windows 98 4.10.1998 (25 июня 1998) 30 июня 2002 (осн.); 30 ноября 2003 (SBL); 11 июля 2006 (ext) 6
5 мая 1999 Windows 98 SE 4.10.2222A (5 мая 1999) 30 июня 2002 (осн.); 31 марта 2004 (SBL); 11 июля 2006 (ext) 6
17 февраля 2000 Windows 2000 5.0.2195 / 5.0 SP4 Rollup 1 v2 (13 сентября 2005) 31 марта 2004 (retail); 31 марта 2005 (SBL); 30 июня 2005 (осн); 13 июля 2010 (ext) 6
14 сентября 2000 Windows ME 4.90.9000 (14 сентября 2000) 31 декабря 2003 (осн.); 30 июня 2004 (SBL); 11 июля 2006 (ext) 6
24 августа 2001 (RTM)
25 октября 2001 (продажи)
Windows XP 5.1.2600.5512 SP3 (21 апреля 2008) 30 сентября 2004 (RTM); 10 сентября 2006 (SP1/SP1a); 30 июня 2008 (retail); 14 апреля 2009 (SP2/SP3 осн.); 13 июля 2010 (SP2); 22 октября 2010 (SBL); 8 апреля 2014 (ext) 8[7]
28 марта 2003 Windows XP 64-bit Edition 5.2.3790 25 июля 2006 8[7]
24 апреля 2003 Windows Server 2003 5.2.3790.3959 SP2 (13 марта 2007) 30 июня 2009 (RTM); 13 июля 2010 (осн.); 14 июля 2015 (ext) 8[7]
25 апреля 2005 Windows XP Professional x64 Edition 5.2.3790.3959 SP2 (13 марта 2007) 30 июня 2008 (retail); 31 января 2009 (SBL) 8[7]
8 июля 2006 Windows Fundamentals for Legacy PCs 5.1.2600 RTM (8 июля 2006) 8 июля 2008 (retail), 12 июля 2010 (Service Pack) 8[7]
8 ноября 2006 (RTM)
30 января 2007 (продажи)
Windows Vista 6.0.6001 / SP2 Build 6002 (25 мая 2009) 13 апреля 2010 (RTM); 22 октября 2010 (retail); 12 июля 2011 (SP1); 22 октября 2011 (SBL); 10 апреля 2012 (осн.); 11 апреля 2017 (ext) 9[8]
16 июля 2007 Windows Home Server 5.2.1500 (16 июля 2007) 8 января 2013 (осн.)
27 февраля 2008 Windows Server 2008 6.0.6002 / SP2 build 6002 (25 мая 2009) 9 июля 2015 (осн.), 10 июля 2018 (ext), 12 июля 2011 (SP1) 9[8]
13 июля 2009 (RTM)
22 октября 2009 (продажи)
Windows 7 6.1.7601 / SP1 Build 7601 (22 февраля 2011) 9 апреля 2013 (RTM), 13 января 2015 (осн), 14 января 2020 (ext) 9[8]
13 июля 2009 (RTM)
22 октября 2009 (продажи)
Windows Server 2008 R2 (ранее известна как Windows Server 7) 6.1.7601 / SP1 Build 7601 (22 февраля 2011) 9 июля 2015 (осн.), 10 июля 2018 (ext) 9[8]
6 апреля 2011 Windows Home Server 2011 6.1.8400 12 апреля 2016 (осн.) 9[8]
1 августа 2012 (RTM)
4 сентября 2012 (продажи)
Windows Server 2012 6.2.9200 9 января 2018 (осн), 10 января 2023 (ext) 10
1 августа 2012 (RTM)
26 октября 2012 (продажи)
Windows 8 6.2.9200 9 января 2018 (осн), 10 января 2023 (ext) 10

[править] Графические интерфейсы и расширения для DOS

Эти версии Windows не были полноценными операционными системами, а являлись надстройками к операционной системе MS-DOS и были по сути многофункциональным расширением, добавляя поддержку новых режимов работы процессора, поддержку многозадачности, обеспечивая стандартизацию интерфейсов аппаратного обеспечения и единообразие для пользовательских интерфейсов программ. Предоставляли встроенные средства (GDI и USER, первые версии Windows вообще состояли из трех модулей — KERNEL, GDI и USER, первый из них предоставлял вызовы управления памятью, запуском .EXE-файлов и загрузкой .DLL-файлов, второй — графику, третий — окна) для создания графического интерфейса пользователя. Они работали с процессорами начиная с Intel 8086.

  1. Windows 1.0 (1985)
  2. Windows 2.0 (1987)
  3. Windows 2.1 (Windows 386, 1987) — в системе появилась возможность запуска DOS-приложений в графических окнах, причём каждому приложению предоставлялись полные 640 Кб памяти. Полная поддержка процессора 80286. Появилась поддержка процессоров 80386.
  4. Windows 3.0 (1990) — улучшена поддержка процессоров 80386 и защищённого режима.
  5. Windows 3.1 (1992) — серьёзно переработанная Windows 3.0; устранены UAE (Unrecoverable Application Errors — фатальные ошибки прикладных программ), добавлен механизм OLE, печать в режиме WYSIWYG («что видите, то и получите»), шрифты TrueType, изменён Проводник (диспетчер файлов), добавлены мультимедийные функции.
  6. Windows для рабочих групп (Windows for Workgroups, WfWG) 3.1/3.11 — первая версия ОС семейства с поддержкой локальных сетей. В WfWG 3.11 также испытывались отдельные усовершенствования ядра, применённые позднее в Windows 95.

[править] Семейство Windows 9x

Включает в себя Windows 95, Windows 98 и Windows ME.

Windows 95 была выпущена в 1995 году. Её отличительными особенностями являются: новый пользовательский интерфейс, поддержка длинных имён файлов, автоматическое определение и конфигурация периферийных устройств Plug and Play, способность исполнять 32-битные приложения и наличие поддержки TCP/IP прямо в системе. Windows 95 использует вытесняющую многозадачность и выполняет каждое 32-битное приложение в своём адресном пространстве.

Операционные системы этого семейства не являлись безопасными многопользовательскими системами как Windows NT, поскольку из соображений совместимости вся подсистема пользовательского интерфейса и графики оставалась 16-битной и мало отличалась от той, что в Windows 3.x. Так как этот код не был thread-safe, все вызовы в подсистему оборачивались в мьютекс по имени Win16Lock, который, кроме того, ещё и находился всегда в захваченном состоянии во время исполнения 16-битного приложения. Таким образом, «повисание» 16-битного приложения немедленно блокировало всю ОС.

Программный интерфейс был подмножеством Win32 API, поддерживаемым Windows NT, но имел поддержку юникода в очень ограниченном объёме.[9] Также в нём не было должного обеспечения безопасности (списков доступа к объектам и понятия «администратор»).

В составе Windows 95 присутствовал MS-DOS 7.0, однако его роль сводилась к обеспечению процесса загрузки и исполнению 16-битных DOS приложений. Исследователи заметили, что ядро Windows 95 — VMM — обращается к DOS под собой, но таких обращений довольно мало, главнейшая функция ядра DOS — файловая система FAT — не использовалась. В целом же интерфейс между VMM и нижележащей DOS никогда не публиковался, и DOS была замечена (тем же Эндрю Шульманом) в наличии недокументированных вызовов только для поддержки VMM.

[править] Семейство Windows NT

Текстовый логотип Windows XP (обычно используется вместе с графическим)

Операционные системы этого семейства в настоящее время работают на процессорах с архитектурами x86, x64, и Itanium,ARM. Ранние версии (до 4.0 включительно) также поддерживали некоторые RISC-процессоры: Alpha, MIPS, и Power PC. Все операционные системы этого семейства являются полностью 32- или 64- битными операционными системами, и не нуждаются в MS-DOS даже для загрузки.

Только в этом семействе представлены операционные системы для серверов. До версии Windows 2000 включительно они выпускались под тем же названием, что и аналогичная версия для рабочих станций, но с добавлением суффикса, например, «Windows NT 4.0 Server» и «Windows 2000 Datacenter Server». Начиная с Windows Server 2003 серверные операционные системы называются по-другому.

  1. Windows NT 3.1 (1993)
  2. Windows NT 3.5 (1994)
  3. Windows NT 3.51 (1995)
  4. Windows NT 4.0 (1996)
  5. Windows 2000 (2000) — Windows NT 5.0
  6. Windows XP (2001) — Windows NT 5.1
  7. Windows XP 64-bit Edition (2003) — Windows NT 5.2
  8. Windows Server 2003 (2003) — Windows NT 5.2
  9. Windows Vista (2006) — Windows NT 6.0
  10. Windows Home Server (2007) — Windows NT 5.2
  11. Windows Server 2008 (2008) — Windows NT 6.0
  12. Windows Small Business Server (2008) — Windows NT 6.0
  13. Windows 7 — Windows NT 6.1 (2009)
  14. Windows Server 2008 R2 — Windows NT 6.1 (2009)
  15. Windows Home Server 2011 — Windows NT 6.1 (2011)
  16. Windows 8 — Windows NT 6.2 (2012)
  17. Windows Server 2012 — Windows NT 6.2 (2012)

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

Семейство Windows NT относится к операционным системам с вытесняющей многозадачностью. Разделение процессорного времени между потоками происходит по принципу «карусели». Ядро операционной системы выделяет квант времени (в Windows 2000 квант равен примерно 20 мс) каждому из потоков по очереди при условии, что все потоки имеют одинаковый приоритет. Поток может отказаться от выделенного ему кванта времени. В этом случае система перехватывает у него управление (даже если выделенный квант времени не закончен) и передаёт управление другому потоку. При передаче управления другому потоку система сохраняет состояние всех регистров процессора в особой структуре в оперативной памяти. Эта структура называется контекстом потока. Сохранение контекста потока достаточно для последующего возобновления его работы.

[править] Семейство ОС для карманных компьютеров

Логотип Windows CE

Это семейство операционных систем реального времени было специально разработано для мобильных устройств. Поддерживаются процессоры ARM, MIPS, SuperH и x86. В отличие от остальных операционных систем Windows, операционные системы этого семейства продаются только в составе готовых устройств, таких как смартфоны, карманные компьютеры, GPS-навигаторы, MP3-проигрыватели и другие.

В настоящее время под термином «Windows CE» понимают только ядро операционной системы. Например, Windows Mobile 5.0 включает в себя ядро Windows CE 5.0, хотя в некоторых устройствах ядро Windows CE используется и без Windows Mobile.

  • Windows CE
  • Windows Mobile
  • Windows Phone

[править] Семейство встраиваемых ОС Windows Embedded

Windows Embedded — это семейство операционных систем реального времени, было специально разработано для применения в различных встраиваемых системах. Ядро системы имеет общее с семейством ОС Windows CE и поддерживает процессоры ARM, MIPS, SuperH и x86.

Windows Embedded включает дополнительные функции по встраиванию, среди которых фильтр защиты от записи (EWF и FBWF), загрузка с флеш-памяти, CD-ROM, сети, использование собственной оболочки системы и т. п.

В отличие от операционных систем Windows, операционные системы этого семейства продаются только в составе готовых устройств, таких как: банкоматы, медицинские приборы, навигационное оборудование, «тонкие» клиенты, VoIP-терминалы, медиапроигрыватели, цифровые рамки (альбомы), кассовые терминалы, платёжные терминалы, роботы, игровые автоматы, музыкальные автоматы и другие.

В настоящее время выпускаются следующие варианты ОС Windows Embedded[10]:

  • Windows Embedded CE,
  • Windows Embedded Standard,
  • Windows Embedded POSReady,
  • Windows Embedded Enterprise,
  • Windows Embedded NavReady,
  • Windows Embedded Server.

[править] Windows N

Windows N — версии Windows, из которых корпорацией Microsoft были удалены компоненты, не совместимые с законодательством стран Европейского союза.

[править] Хронология

График выхода и поддержки Windows

[править] Интегрированные программные продукты

Пакет Windows включает в себя «стандартные» приложения, такие как браузер (Internet Explorer), почтовый клиент (Outlook Express или Windows Mail), музыкальный и видеопроигрыватель (Windows Media Player). С помощью технологий COM и OLE их компоненты могут быть использованы в приложениях сторонних производителей. Эти продукты бесплатны и могут быть свободно скачаны с официального сайта Microsoft, однако для установки некоторых из них необходимо иметь лицензионную версию Windows (верно только для ранних версий до Windows, начиная с Windows 98 являются неотъемлемой частью системы). Запуск этих программ под другими операционными системами возможен только с помощью эмуляторов среды Windows (Wine).

Вокруг факта включения таких «стандартных» продуктов в ОС Windows разгорается много дискуссий и юридических споров, по мнению сторонних разработчиков, это ведёт к отсутствию конкуренции и создает препятствия для распространения конкурирующих продуктов, они же часто ставят под сомнение качество браузера Internet Explorer, объясняя его популярность вхождением в пакет Windows и плохой осведомленностью пользователей о наличии альтернатив.

В 1997 компания Sun Microsystems подала в суд на компанию за нарушение лицензии на использование технологий Java. В 2001 Microsoft выплатила штраф и исключила не совместимую с лицензированной виртуальную машину Java из состава своих продуктов.

[править] Распространённость

В настоящее время Windows установлена более чем на 89 % персональных компьютеров и рабочих станций. По данным компании Net Applications, на июль 2011 года рыночная доля Windows составляла 87,60 %.[11]

Среди различных версий Windows по данным W3Schools с августа 2011 года наиболее популярна Windows 7.[12]

Распространённость различных версий Windows

январь 2011[13] июнь 2011[14] сентябрь 2011[15] февраль 2012[источник не указан 43 дня] январь 2012[16] сентябрь 2012[17]
Все версии 73,47 % 71,99 % 69,67 % 67,17 % 67,42 % 65,91 %
Windows XP 35,27 % 29,74 % 26,19 % 20,04 % 21,37 % 13,58 %
Windows 7 21,11 % 27,84 % 32,16 % 38,72 % 37,11 % 45,71 %
Windows Vista 8,62 % 6,72 % 5,61 % 4,50 % 4,78 % 2,77 %
Windows 8
Windows Server 2012
Windows Server 2008 R2
Windows Server 2008
Windows Server 2003 0,21 % 0,02 %
Windows 98 0,03 % 0,03 % 0,03 % 0,05 %
Windows ME 0,01 %
Windows CE

[править] См. также

  • Список операционных систем
  • Windows API
  • Проводник Windows
  • Windows Script Host
  • Многозадачность

[править] Примечания

  1. Operating system market share
  2. http://ftp.lanet.lv/ftp/sun-info/sunflash/1993/Jul/55.11-Sun-Intergraph:-SPARC-and-Windows-NT
  3. В столбце «Дата прекращения поддержки» словом «retail» помечается дата окончания продаж конечному пользователю; аббревиатурой «SBL» помечена дата окончания выдачи System Builder лицензии; «ext» — окончание срока продления поддержки
  4. Эра Windows 3.x завершилась
  5. Please Verify your Location
  6. Please Verify your Location
  7. 1 2 3 4 5 IE8: System requirements
  8. 1 2 3 4 5 IE9: system requirements
  9. Unicode support in Windows 95 and Windows 98
  10. http://www.microsoft.com/windowsembedded/en-us/about/what.mspx
  11. Operating System Market Share, April 2010. Net Applications. Архивировано из первоисточника 22 августа 2011.
  12. OS Statistics
  13. Operating system market share
  14. Operating system market share
  15. Operating system market share
  16. GoStats.ru | Интернет статистика «Операционные системы» для http://gostats.ru — GoStats.ru — Бесплатные счётчики Разработано компанией GoStats
  17. GoStats.ru | Интернет статистика «Операционные системы» для http://gostats.ru — GoStats.ru — Бесплатные счётчики Разработано компанией GoStats

[править] Литература

  • Брайан Ливингстон, Пол Таррот. Секреты Microsoft Windows Vista = Windows Vista Secrets. — М.: Диалектика, 2007. — С. 456. — ISBN 0-7645-7704-2
  • Пол Мак-Федрис. Microsoft Windows XP SP2. Полное руководство = Microsoft Windows XP Unleashed. — М.: Вильямс, 2006. — С. 880. — ISBN 0-672-32833-X

[править] Ссылки

  • Home page for the Windows family of products and technologies
  • Microsoft Windows Update
  • Центр загрузки Майкрософт: Windows
  • Как вернуть деньги за OEM-Windows 3DNews, 28 сентября 2009
 Просмотр этого шаблона Microsoft Windows

Оболочки над MS-DOS: 1.0 • 2.0x • 2.1x • 3.x • Windows 9x: 95 • 98 • ME • Windows NT: NT 3.1 • NT 3.5 • NT 3.51 • NT 4.0 • 2000 • XP • Vista • 7 • 8

Windows Server

2003 • Home (2011) • 2008 (HPC 2008 • R2) • Essential Business • MultiPoint • Small Business • 2012

Windows logo - 2012.svg
Специализированные

Embedded (Automotive • POSReady) • PE • FLP

Мобильные

Windows CE (1.0 • 2.0 • 3.0 • 4.0 • 5.0 • 6.0 • 7.0) • Mobile • Phone • RT

Другие проекты

Xenix • OS/2 • Singularity • Midori • Закрытые: Neptune • Nashville • Odyssey • Cairo

Альтернативные реализации

ReactOS • Wine

 Просмотр этого шаблона Microsoft
ПО

Windows (Основные компоненты) • Office • Visual Studio • Expression • Silverlight • Dynamics • Money • Encarta • Student • Works • Microsoft Security Essentials

M box.svg
Серверное ПО

Windows Server SQL Server • IIS • Exchange • BizTalk • Commerce • Forefront TMG • Systems Management • System Center • Licensing Services

Технологии

Active Directory • DirectX • .NET • Windows Media • PlaysForSure • Application Virtualization

Интернет

Windows Live • Microsoft Office Live • MSNBC • msnbc.com • ninemsn • MSN • Bing • Bing Bar • EntityCube • Hotmail • Windows Live Messenger • Сферы Windows Live • MSN Groups • Windows Live ID • Microsoft Ignition • CodePlex • Microsoft HealthVault • Skype • SkyDrive • Vine • Zune Marketplace

Игры

Microsoft Studios • MSN Games • XNA • Xbox • Xbox 360 (S) • Kinect • Xbox Live (Arcade • Marketplace) • Games for Windows (Live • Tray and Play) • Live Anywhere

Аппаратное
обеспечение

Surface • Zune (4, 8 • 30 • 80 • HD) • MSN TV • Natural Keyboard • IntelliType • IntelliPoint • LifeCam • LifeChat • SideWinder • UMPC • Fingerprint • Audio • Cordless Phone • Pocket PC • RoundTable • Response Point

Образование

MTA • MCP • MCTS • MCITP • MSDN • MSDNAA • MSCA • Microsoft Press • MVP • Student Partners

Лицензирование

Лицензионная политика • Client Access License • Shared source

Подразделения

Microsoft Research • MSN • Macintosh Business Unit • Microsoft Studios • Майкрософт Рус

Совет директоров

Балмер • Кэш • Дублон • Гейтс • Гилмартин • Хастингс • Маркурдт • Носки • Панке • Ширли

 Просмотр этого шаблона Компоненты Microsoft Windows
Основные

Aero • ClearType • Диспетчер рабочего стола • DirectX • Панель задач (Пуск • Область уведомлений) • Проводник (Пространство имён • Специальные папки • Ассоциации файлов) • Windows Search (Smart folders • iFilters) • GDI • WIM • SMB • .NET Framework • XPS • Active Scripting (WSH • VBScript • JScript) • COM (OLE • DCOM • ActiveX • Структурированное хранилище • Сервер транзакций) • Теневая копия • WDDM • UAA • Консоль Win32

Службы
управления

Архивация и восстановление • COMMAND.COM • cmd.exe • Средство переноса данных • Просмотр событий • Установщик • netsh.exe • PowerShell • Отчёты о проблемах • rundll32.exe • Программа подготовки системы (Sysprep) • Настройка системы (MSConfig) • Проверка системных файлов • Индекс производительности • Центр обновления • Восстановление системы • Дефрагментация диска • Диспетчер задач • Диспетчер устройств • Консоль управления • Очистка диска • Панель управления (элементы)

Приложения

Контакты • DVD Maker • Факсы и сканирование • Internet Explorer • Журнал • Экранная лупа • Media Center • Проигрыватель Windows Media • Программа совместной работы • Центр устройств Windows Mobile • Центр мобильности • Экранный диктор • Paint • Редактор личных символов • Удалённый помощник • Распознавание речи • WordPad • Блокнот • Боковая панель • Звукозапись • Календарь • Калькулятор • Ножницы • Почта • Таблица символов • Исторические: Movie Maker • NetMeeting • Outlook Express • Диспетчер программ • Диспетчер файлов • Фотоальбом

Игры

Chess Titans • Mahjong Titans • Purble Place • Пасьянсы (Косынка • Паук • Солитер) • Сапёр • Пинбол • Червы

Ядро ОС

Ntoskrnl.exe • Слой аппаратных абстракций (hal.dll) • Бездействие системы • svchost.exe • Реестр • Службы • Диспетчер управления сервисами • DLL (формат модулей) • PE • NTLDR • Диспетчер загрузки • Программа входа в систему (winlogon.exe) • Консоль восстановления • Windows RE • Windows PE • Защита ядра от изменений

Службы

Autorun.inf • Фоновая интеллектуальная служба передачи • Файловая система стандартного журналирования • Отчёты об ошибках • Планировщик классов мультимедиа • Теневая копия • Планировщик задач • Беспроводная настройка

Файловые
системы

ReFS • NTFS (Жёсткая ссылка • Точка соединения • Точка монтирования • Точка повторной обработки • Символьная ссылка • TxF • EFS) • WinFS • FAT • exFAT • CDFS • UDF • DFS • IFS

Сервер

Active Directory • Службы развёртывания • Служба репликации файлов • DNS • Домены • Перенаправление папок • Hyper-V • IIS • Media Services • MSMQ • Защита доступа к сети (NAP) • Службы печати для UNIX • Удалённое разностное сжатие • Службы удаленной установки • Служба управления правами • Перемещаемые профили пользователей • SharePoint • Диспетчер системных ресурсов • Удаленный рабочий стол • WSUS • Групповая политика • Координатор распределённых транзакций

Архитектура

NT • Диспетчер объектов • Пакеты запроса ввода/вывода • Диспетчер транзакций ядра • Диспетчер логических дисков • Диспетчер учетных записей безопасности • Защита ресурсов • lsass.exe • csrss.exe • smss.exe • spoolsv.exe • Запуск

Безопасность

BitLocker • Защитник • Предотвращение выполнения данных • Обязательный контроль целостности • Защищенный канал данных • UAC • UIPI • Брандмауэр • Центр обеспечения безопасности • Защита файлов

Совместимость

Подсистема UNIX (Interix) • Виртуальная машина DOS • Windows on Windows • WOW64

 Просмотр этого шаблона Аспекты операционных систем (история • список)
Ядро

Гибридное • Микро • Модульное • Монолитное • Нано • Экзо • Драйвер • Пространство пользователя • Область пользователя

Управление
процессами

Режимы (супервизора • реальный • защищённый) • Прерывание • Кольца защиты • Переключение контекста • Многозадачность (вытесняющая • кооперативная • мультипрограммирование) • Процесс • Управление процессом • Планировщик задач • Многопоточность

Управление
памятью

Защита памяти • Сегментная адресация памяти • Страничная память • Менеджер виртуальной памяти • Ошибка сегментации • Общая ошибка защиты

Прочее

Загрузчик ОС • API • VFS • Компьютерная сеть • GUI • Слой аппаратных абстракций (HAL)

Аннотация: Общая схема архитектуры. Компоненты пользовательского режима. Компоненты режима ядра.

Общая схема архитектуры

Windows представляет собой операционную систему с гибридным ядром (см. лекцию 1 «Введение в операционные системы»). В ней основные системные функции по управлению процессами, памятью, устройствами, файловой системой и безопасностью реализованы в компонентах, работающих в режиме ядра; но существует ряд важных системных компонентов пользовательского режима, например системные процессы входа в систему, локальной аутентификации, диспетчера сеансов, а также подсистемы окружения.

Архитектура Windows представлена на рис.4.1 [5; 2].

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

Рис.
4.1.
Архитектура Windows

Компоненты пользовательского режима

В пользовательском режиме работают следующие виды процессов:

  • системные процессы (system processes) – компоненты Windows, отвечающие за решение критически важных системных задач (т. е. аварийное завершение одного из этих процессов вызывает крах или нестабильную работу всей системы), но выполняемые в пользовательском режиме.
    Основные системные процессы:

    • Winlogon.exe – процесс входа в систему и выхода из неё;
    • Smss.exe (Session Manager – диспетчер сеансов) – процесс выполняет важные операции при инициализации системы (загрузка необходимых DLL, запуск процессов Winlogon и Csrss и др.), а затем контролирует работу Winlogon и Csrss;
    • Lsass.exe (Local Security Authentication Subsystem Server – сервер подсистемы локальной аутентификации) – процесс проверяет правильность введенных имени пользователя и пароля;
    • Wininit.exe – процесс инициализации системы (например, запускает процессы Lsass и Services);
    • Userinit.exe – процесс инициализации пользовательской среды (например, запускает системную оболочку – по умолчанию, Explorer.exe);
    • Services.exe (SCM, Service Control Manager – диспетчер управления службами) – процесс, отвечающий за выполнение служб – см. ниже;
  • службы (сервисы, services) – приложения, работающие в фоновом режиме и не требующие взаимодействия с пользователем. Службы могут быть как частью операционной системы (например, Windows Audio – служба для работы со звуком, или Print Spooler – диспетчер печати), так и частью пользовательского приложения (например, служба СУБД SQL Server). За службы отвечает системный процесс Services.exe;
  • пользовательские приложения (user applications) ¬– прикладные программы, запускаемые пользователем;
  • подсистемы окружения (environment subsystems) – компоненты, предоставляющие доступ приложениям к некоторому подмножеству системных функций. Windows поддерживает две подсистемы окружения:
    • собственно Windows – при помощи данной подсистемы выполняются 32 разрядные приложения Windows (Win32), а также 16 разрядные приложения Windows (Win16), приложения MS DOS и консольные приложения (Console). За подсистему Windows отвечает системный процесс Csrss.exe и драйвер режима ядра Win32k.sys;
    • POSIX (Portable Operating System Interface for UNIX – переносимый интерфейс операционных систем UNIX) – подсистема для UNIX-приложений. Начиная с Windows Server 2003 R2 компонент, реализующий эту подсистему, называется SUA (Subsystem for UNIX-based Applications). Компонент не устанавливается в Windows по умолчанию.

Все перечисленные процессы пользовательского режима (кроме подсистемы POSIX1Подсистема POSIX использует библиотеку Psxdll.dll.) для взаимодействия с модулями режима ядра используют библиотеки Windows DLL (Dynamic Link Library – динамически подключаемая библиотека). Каждая DLL экспортирует набор Windows API функций, которые может вызывать процесс.

Windows API (Windows Application Programming Interface, WinAPI) – это способ взаимодействия процессов пользовательского режима с модулями режима ядра. WinAPI включает тысячи функций и хорошо документирован [10].

Основные Windows DLL следующие:

  • Kernel32.dll – базовые функции, в том числе работа с процессами и потоками, управление памятью и вводом выводом;
  • Advapi32.dll – функции, в основном связанные с управлением безопасностью и доступом к реестру;
  • User32.dll – функции, отвечающие за управление окнами и их элементами в GUI приложениях (Graphical User Interface – графический интерфейс пользователя);
  • Gdi32.dll – функции графического пользовательского интерфейса (Graphics Device Interface, GDI), обеспечивающие рисование на дисплее и принтере графических примитивов и вывод текста.

Библиотека Ntdll.dll экспортирует в большинстве своем недокументированные системные функции, реализованные, в основном, в Ntoskrnl.exe. Набор таких функций называется Native API («родной» API).

Библиотеки Windows DLL преобразуют вызовы документированных WinAPI функций в вызовы функций Native API и переключают процессор на режим ядра.

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

Диспетчер системных сервисов (System Service Dispatcher) работает в режиме ядра, перехватывает вызовы функций от Ntdll.dll, проверяет их параметры и вызывает соответствующие функции из Ntoskrnl.exe.

Исполнительная система и ядро содержатся в Ntoskrnl.exe (NT Operating System Kernelядро операционной системы NT) (по поводу использования термина «ядро» в Windows см. лекцию 1 «Введение в операционные системы»).

Исполнительная система (Executive) представляет собой совокупность компонентов (называемых диспетчерами – manager), которые реализуют основные задачи операционной системы:

  • диспетчер процессов (process manager) – управление процессами и потоками (см. лекцию 6 «Процессы и потоки»);
  • диспетчер памяти (memory manager) – управление виртуальной памятью и отображение её на физическую (см. лекцию 8 «Управление памятью»);
  • монитор контроля безопасности (security reference monitor) – управление безопасностью (см. лекцию 9 «Безопасность»);
  • диспетчер ввода вывода (I/O manager), диспетчер кэша (cache Manager), диспетчер Plug and Play (PnP Manager) – управление внешними устройствами и файловыми системами (см. лекцию 10 «Управление устройствами» и лекцию 11 «Файловая система NTFS»);
  • диспетчер электропитания (power manager) – управление электропитанием и энергопотреблением;
  • диспетчер объектов (object manager), диспетчер конфигурации (configuration manager), механизм вызова локальных процедур (local procedure call) – управление служебными процедурами и структурами данных, которые необходимы остальным компонентам.

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

Компонент Windows USER и GDI отвечает за пользовательский графический интерфейс (окна, элементы управления в окнах – меню, кнопки и т. п., рисование), является частью подсистемы Windows и реализован в драйвере Win32k.sys.

Взаимодействие диспетчера ввода вывода с устройствами обеспечивают драйверы (drivers) – программные модули, работающие в режиме ядра, обладающие максимально полной информацией о конкретном устройстве (драйверы подробнее рассматриваются в лекции 10 «Управление устройствами»).

Однако, и драйверы, и ядро не взаимодействуют с физическими устройствами напрямую – посредником между программными компонентами режима ядра и аппаратурой является HAL (Hardware Abstraction Layer) – уровень абстрагирования от оборудования, реализованный в Hal.dll. HAL позволяет скрыть от всех программных компонентов особенности аппаратной платформы (например, различия между материнскими платами), на которой установлена операционная система.

Резюме

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

В следующей лекции рассматривается исследовательское ядро Windows (Windows Research Kernel) – вариант Ntoskrnl.exe с исходным кодом, доступным академическим организациям.

Контрольные вопросы

  1. К какому типу ядер в большей степени относится Windows NT, к монолитным или микроядрам? Ответ обоснуйте.
  2. Перечислите основные компоненты пользовательского режима.
  3. Перечислите основные компоненты режима ядра.
  4. Что такое Windows API? Где можно найти информацию по этому вопросу?
  5. Каковы основные функции исполнительной системы, входящей в состав Ntoskrnl.exe?
  6. Каковы основные функции ядра, входящего в состав Ntoskrnl.exe?
  7. Что такое HAL?

History[edit | edit source]

Windows was originally a 16-bit graphical layer for MS-DOS that was written by Microsoft. As it grew, it gained the ability to handle 32-bit programs and eventually became totally 32-bit when Windows NT and 2000 came out. After Windows 95, Microsoft began to remove dependencies on DOS and finally fully implemented the separation in Windows 2000. Windows has many advanced features as well as many platform specific problems. It possesses an Application Programming Interface that consists of thousands of mostly undocumented GUI functions as well as having varying degrees of MS-DOS compatibility. Additionally, with the advent of NT (New Technology), Windows relies completely on the NT kernel instead of its MS-DOS subsystem, the NT kernel is capable of emulating the necessary DOS functionality. In addition to the NT kernel, Microsoft has also introduced many API wrappers, such as the MFCs (Microsoft Foundation Classes), COM (Component Object Model), and .NET technologies.

The most popular languages for use on Windows include Visual Basic/VB6 and C/C++, although C++ is quickly being replaced by the .NET platform, specifically C# (C Sharp).

Windows Kernels[edit | edit source]

Windows 1.0, 2.0, and 3.11 are considered to be an older generation of Windows systems that were built to be a simple graphical layer over the MS-DOS operating system. Windows 95, Windows 98, and Windows ME were designed to bypass MS-DOS (although DOS was still present), and were all based on the same code structure known as the «9x Kernel». Windows NT 4.0, Windows 2000, Windows XP, Windows Vista, Windows 7, and Windows Server are all based on a collection of code known as the «NT Kernel».

System Architecture[edit | edit source]

Today we’re starting a new series of posts focused on understanding the Windows System Architecture itself. In our first post, we’re going to quickly review some basic Windows concepts and terms including a brief overview of the Windows API, Services and the difference between a Process and a Thread. Think of this as laying the groundwork for our future posts which will cover topics such as the Registry, Session Space and Desktop Heap. So, without further ado – let’s start with an introduction to the Windows API.

The Windows NT Kernel is divided into several sections, here we will briefly discuss how the Windows operating system is put together. At the most basic level is the file NTOSKRNL.EXE, the kernel of the Windows operating system, and the most important file on your computer. If you are interested in seeing this for yourself, you can find it in the C:\Windows\System32 folder (this can also be found using the following path %systemroot%\system32 ) on your own Windows NT machines.

NTOSKRNL.EXE provides some of the basic functionality of Windows, but one file alone cannot make the whole system work. NTOSKRNL relies heavily on a Dynamic Link Library (DLL) known as HAL.DLL. HAL stands for «Hardware Abstraction Layer», and is the portion of code that allows low-level mechanisms such as interrupts and BIOS communication to be handled independently.

If we consider Windows architecture as a layered architecture, with NTOSKRNL.EXE and HAL.DLL on the bottom layer, the next layer up contains two important files, NTDLL.DLL, and WIN32K.SYS. NTDLL contains a number of user-mode functions such as system call stubs and the run-time library (RTL) code, collectively known as the (largely undocumented) «Native API». Much of the run-time library code is shared between NTOSKRNL and NTDLL. WIN32K.SYS is a kernel-mode driver that implements windowing and graphics, allowing for user interfaces to be created.

The next layer up contains a number of libraries that will be of primary interest to us. This layer comprises what is called the Win32 API, and it contains (almost) all the functions that a user will need in order to program in Windows. The Win32 API is divided into 4 component parts, each one a .DLL:

kernel32.DLL
This contains most of the system-related Win32 API functions. Most of these functions are just wrappers around the lower-level NTDLL functions, but some functionality such as National Language Support (NLS) and console handling are not available in NTDLL.
advapi32.DLL
This contains other system-related functions such as registry and service handling.
gdi32.DLL
This contains a number of basic functions for drawing. These functions are all relatively simple, and allow the user to draw shapes (circles, rectangles, etc.) on the screen, to display and manipulate bitmaps, etc.
user32.DLL
This contains a number of functions that implement the familiar user-interface of Windows. Programs, message boxes, prompts, etc are all implemented using the User32 functions. User32 performs its tasks by calling system calls implemented by WIN32K.SYS.

In addition to the 4 primary libraries in the Win32 API, there are a number of other important libraries that a Windows programmer should become familiar with:

MSVCRT.DLL
MSVCRT.DLL is the dynamic link library that contains the implementations of the C standard library (stdlib) functions that C programmers should be familiar with. These are the functions defined in the common header files stdio.h, string.h, stdlib.h, etc.
WS2_32.DLL
This is the Winsock2 library, that contains the standard Berkeley socket API for communicating on the internet. We will talk about winsock programming later in this book.

Windows Does It[edit | edit source]

The Windows system, it might be surprising for some people to learn, is a very hands-on system. This is not a familiar concept for people who are just beginning C programming using the standard library. In a normal software project, there is typically a main function, and the main function in turn calls other functions that are defined in your project. In a Windows function, typically the programmer provides function pointers to the system, and Windows will make calls into your program. Also, in a Windows program, your code will sit idle when there is nothing to be done. Using the message loop architecture, Windows will send messages to your program when an event needs to be handled, and the program responds to the messages. If the program doesn’t respond, the message is ignored.

For each program, Windows sets up a message queue structure to handle the message transmission process. Windows will maintain a listing of all the objects and system resources in use by a program, and will assign each one a handle. These handles are useless by themselves, but they can be passed to the system to reference particular objects and resources.

  • На каком языке программирования пишут приложения для windows
  • На компьютере под управлением выпуска microsoft windows не являющегося выпуском core windows 10
  • На какой диск устанавливать windows основной или системный диск
  • На каком ядре создана ос windows
  • На каком ядре работает windows