Время на прочтение8 мин
Количество просмотров63K
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, дающую обзор работы планировщика. Статьи со сходными техническими подробностями о внутренней работе ОС последуют позже.
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
From Wikipedia, the free encyclopedia
This article is about the Windows NT kernel. For the Windows NT kernel image, see ntoskrnl.exe. For the Windows 9x kernel, see Architecture of Windows 9x.
The architecture of Windows NT, a line of operating systems produced and sold by Microsoft, is a layered design that consists of two main components, user mode and kernel mode. It is a preemptive, reentrant multitasking operating system, which has been designed to work with uniprocessor and symmetrical multiprocessor (SMP)-based computers. To process input/output (I/O) requests, it uses packet-driven I/O, which utilizes I/O request packets (IRPs) and asynchronous I/O. Starting with Windows XP, Microsoft began making 64-bit versions of Windows available; before this, there were only 32-bit versions of these operating systems.
Programs and subsystems in user mode are limited in terms of what system resources they have access to, while the kernel mode has unrestricted access to the system memory and external devices. Kernel mode in Windows NT has full access to the hardware and system resources of the computer. The Windows NT kernel is a hybrid kernel; the architecture comprises a simple kernel, hardware abstraction layer (HAL), drivers, and a range of services (collectively named Executive), which all exist in kernel mode.[1]
User mode in Windows NT is made of subsystems capable of passing I/O requests to the appropriate kernel mode device drivers by using the I/O manager. The user mode layer of Windows NT is made up of the «Environment subsystems», which run applications written for many different types of operating systems, and the «Integral subsystem», which operates system-specific functions on behalf of environment subsystems. The kernel mode stops user mode services and applications from accessing critical areas of the operating system that they should not have access to.
The Executive interfaces, with all the user mode subsystems, deal with I/O, object management, security and process management. The kernel sits between the hardware abstraction layer and the Executive to provide multiprocessor synchronization, thread and interrupt scheduling and dispatching, and trap handling and exception dispatching. The kernel is also responsible for initializing device drivers at bootup. Kernel mode drivers exist in three levels: highest level drivers, intermediate drivers and low-level drivers. Windows Driver Model (WDM) exists in the intermediate layer and was mainly designed to be binary and source compatible between Windows 98 and Windows 2000. The lowest level drivers are either legacy Windows NT device drivers that control a device directly or can be a plug and play (PnP) hardware bus.
User mode is made up of various system-defined processes and DLLs.
The interface between user mode applications and operating system kernel functions is called an «environment subsystem.» Windows NT can have more than one of these, each implementing a different API set. This mechanism was designed to support applications written for many different types of operating systems. None of the environment subsystems can directly access hardware; access to hardware functions is done by calling into kernel mode routines.[citation needed]
There are three main environment subsystems: the Win32 subsystem, an OS/2 subsystem and a POSIX subsystem.[2]
Win32 environment subsystem
[edit]
The Win32 environment subsystem can run 32-bit Windows applications. It contains the console as well as text window support, shutdown and hard-error handling for all other environment subsystems. It also supports Virtual DOS Machines (VDMs), which allow MS-DOS and 16-bit Windows (Win16) applications to run on Windows NT. There is a specific MS-DOS VDM that runs in its own address space and which emulates an Intel 80486 running MS-DOS 5.0. Win16 programs, however, run in a Win16 VDM. Each program, by default, runs in the same process, thus using the same address space, and the Win16 VDM gives each program its own thread on which to run. However, Windows NT does allow users to run a Win16 program in a separate Win16 VDM, which allows the program to be preemptively multitasked, as Windows NT will pre-empt the whole VDM process, which only contains one running application. The Win32 environment subsystem process (csrss.exe) also includes the window management functionality, sometimes called a «window manager». It handles input events (such as from the keyboard and mouse), then passes messages to the applications that need to receive this input. Each application is responsible for drawing or refreshing its own windows and menus, in response to these messages.
OS/2 environment subsystem
[edit]
The OS/2 environment subsystem supports 16-bit character-based OS/2 applications and emulates OS/2 1.x, but not 32-bit or graphical OS/2 applications as used with OS/2 2.x or later, on x86 machines only.[3] To run graphical OS/2 1.x programs, the Windows NT Add-On Subsystem for Presentation Manager must be installed.[3] The last version of Windows NT to have an OS/2 subsystem was Windows 2000; it has been discontinued as of Windows XP.[4][5]
POSIX environment subsystem
[edit]
The POSIX environment subsystem supports applications that are strictly written to either the POSIX.1 standard or the related ISO/IEC standards. This subsystem has been replaced by Interix, which is a part of Windows Services for UNIX.[4] This was in turn replaced by the Windows Subsystem for Linux.
The security subsystem deals with security tokens, grants or denies access to user accounts based on resource permissions, handles login requests and initiates login authentication, and determines which system resources need to be audited by Windows NT.[citation needed] It also looks after Active Directory.[citation needed] The workstation service implements the network redirector, which is the client side of Windows file and print sharing; it implements local requests to remote files and printers by «redirecting» them to the appropriate servers on the network.[6] Conversely, the server service allows other computers on the network to access file shares and shared printers offered by the local system.[7]
Windows NT kernel mode has full access to the hardware and system resources of the computer and runs code in a protected memory area.[8] It controls access to scheduling, thread prioritization, memory management and the interaction with hardware. The kernel mode stops user mode services and applications from accessing critical areas of the operating system that they should not have access to; user mode processes must ask the kernel mode to perform such operations on their behalf.
While the x86 architecture supports four different privilege levels (numbered 0 to 3), only the two extreme privilege levels are used. Usermode programs are run with CPL 3, and the kernel runs with CPL 0. These two levels are often referred to as «ring 3» and «ring 0», respectively. Such a design decision had been done to achieve code portability to RISC platforms that only support two privilege levels,[9] though this breaks compatibility with OS/2 applications that contain I/O privilege segments that attempt to directly access hardware.[3]
Code running in kernel mode includes: the executive, which is itself made up of many modules that do specific tasks; the kernel, which provides low-level services used by the Executive; the Hardware Abstraction Layer (HAL); and kernel drivers.[8][10]
The Windows Executive services make up the low-level kernel-mode portion, and are contained in the file NTOSKRNL.EXE.[8] It deals with I/O, object management, security and process management. These are divided into several subsystems, among which are Cache Manager, Configuration Manager, I/O Manager, Local Procedure Call (LPC), Memory Manager, Object Manager, Process Structure and Security Reference Monitor (SRM). Grouped together, the components can be called Executive services (internal name Ex). System Services (internal name Nt), i.e., system calls, are implemented at this level,[11] too, except very few that call directly into the kernel layer for better performance.[citation needed]
The term «service» in this context generally refers to a callable routine, or set of callable routines.[11] This is distinct from the concept of a «service process», which is a user mode component somewhat analogous to a daemon in Unix-like operating systems.[12]
- Object Manager
- The Object Manager (internal name Ob) is an executive subsystem that all other executive subsystems, especially system calls, must pass through to gain access to Windows NT resources—essentially making it a resource management infrastructure service.[13] The object manager is used to reduce the duplication of object resource management functionality in other executive subsystems, which could potentially lead to bugs and make development of Windows NT harder.[14] To the object manager, each resource is an object, whether that resource is a physical resource (such as a file system or peripheral) or a logical resource (such as a file). Each object has a structure or object type that the object manager must know about.
- Object creation is a process in two phases, creation and insertion. Creation causes the allocation of an empty object and the reservation of any resources required by the object manager, such as an (optional) name in the namespace. If creation was successful, the subsystem responsible for the creation fills in the empty object.[15] Finally, if the subsystem deems the initialization successful, it instructs the object manager to insert the object, which makes it accessible through its (optional) name or a cookie called a handle.[16] From then on, the lifetime of the object is handled by the object manager, and it’s up to the subsystem to keep the object in a working condition until being signaled by the object manager to dispose of it.[17]
- Handles are identifiers that represent a reference to a kernel resource through an opaque value.[18] Similarly, opening an object through its name is subject to security checks, but acting through an existing, open handle is only limited to the level of access requested when the object was opened or created.[citation needed]
- Object types define the object procedures and any data specific to the object. In this way, the object manager allows Windows NT to be an object-oriented operating system, as object types can be thought of as polymorphic classes that define objects. Most subsystems, though, with a notable exception in the I/O Manager, rely on the default implementation for all object type procedures.[citation needed]
- Each instance of an object that is created stores its name, parameters that are passed to the object creation function, security attributes and a pointer to its object type. The object also contains an object close procedure and a reference count to tell the object manager how many other objects in the system reference that object and thereby determines whether the object can be destroyed when a close request is sent to it.[19] Every named object exists in a hierarchical object namespace.
- Cache Controller
- Closely coordinates with the Memory Manager, I/O Manager and I/O drivers to provide a common cache for regular file I/O. The Windows Cache Manager operates on file blocks (rather than device blocks), for consistent operation between local and remote files, and ensures a certain degree of coherency with memory-mapped views of files, since cache blocks are a special case of memory-mapped views and cache misses a special case of page faults.
- Configuration Manager
- Implements the system calls needed by Windows Registry.
- I/O Manager
- Allows devices to communicate with user-mode subsystems. It translates user-mode read and write commands into read or write IRPs which it passes to device drivers. It accepts file system I/O requests and translates them into device specific calls, and can incorporate low-level device drivers that directly manipulate hardware to either read input or write output. It also includes a cache manager to improve disk performance by caching read requests and write to the disk in the background.
- Local Procedure Call (LPC)
- Provides inter-process communication ports with connection semantics. LPC ports are used by user-mode subsystems to communicate with their clients, by Executive subsystems to communicate with user-mode subsystems, and as the basis for the local transport for Microsoft RPC.
- Memory Manager
- Manages virtual memory, controlling memory protection and the paging of memory in and out of physical memory to secondary storage, and implements a general-purpose allocator of physical memory. It also implements a parser of PE executables that lets an executable be mapped or unmapped in a single, atomic step.
- Starting from Windows NT Server 4.0, Terminal Server Edition, the memory manager implements a so-called session space, a range of kernel-mode memory that is subject to context switching just like user-mode memory. This lets multiple instances of the kernel-mode Win32 subsystem and GDI drivers run side-by-side, despite shortcomings in their initial design. Each session space is shared by several processes, collectively referred to as a «session».
- To ensure a degree of isolation between sessions without introducing a new object type, the association between processes and sessions is handled by the Security Reference Monitor, as an attribute of a security subject (token), and it can only be changed while holding special privileges.
- The relatively unsophisticated and ad hoc nature of sessions is due to the fact they weren’t part of the initial design, and had to be developed, with minimal disruption to the main line, by a third party (Citrix Systems) as a prerequisite for their terminal server product for Windows NT, called WinFrame. Starting with Windows Vista, though, sessions finally became a proper aspect of the Windows architecture. No longer a memory manager construct that creeps into user mode indirectly through Win32, they were expanded into a pervasive abstraction affecting most Executive subsystems. As a matter of fact, regular use of Windows Vista always results in a multi-session environment.[20]
- Process Structure
- Handles process and thread creation and termination, and it implements the concept of Job, a group of processes that can be terminated as a whole, or be placed under shared restrictions (such as the total maximum of allocated memory, or CPU time). Job objects were introduced in Windows 2000.
- PnP Manager
- Handles plug and play and supports device detection and installation at boot time. It also has the responsibility to stop and start devices on demand—this can happen when a bus (such as USB or IEEE 1394 FireWire) gains a new device and needs to have a device driver loaded to support it. Its bulk is actually implemented in user mode, in the Plug and Play Service, which handles the often complex tasks of installing the appropriate drivers, notifying services and applications of the arrival of new devices, and displaying GUI to the user.
- Power Manager
- Deals with power events (power-off, stand-by, hibernate, etc.) and notifies affected drivers with special IRPs (Power IRPs).
- Security Reference Monitor (SRM)
- The primary authority for enforcing the security rules of the security integral subsystem.[21] It determines whether an object or resource can be accessed, via the use of access control lists (ACLs), which are themselves made up of access control entries (ACEs). ACEs contain a Security Identifier (SID) and a list of operations that the ACE gives a select group of trustees—a user account, group account, or login session[22]—permission (allow, deny, or audit) to that resource.[23][24]
- GDI
- The Graphics Device Interface is responsible for tasks such as drawing lines and curves, rendering fonts and handling palettes. The Windows NT 3.x series of releases had placed the GDI component in the user-mode Client/Server Runtime Subsystem, but this was moved into kernel mode with Windows NT 4.0 to improve graphics performance.[25]
The kernel sits between the HAL and the Executive and provides multiprocessor synchronization, thread and interrupt scheduling and dispatching, and trap handling and exception dispatching; it is also responsible for initializing device drivers at bootup that are necessary to get the operating system up and running. That is, the kernel performs almost all the tasks of a traditional microkernel; the strict distinction between Executive and Kernel is the most prominent remnant of the original microkernel design, and historical design documentation consistently refers to the kernel component as «the microkernel».
The kernel often interfaces with the process manager.[26] The level of abstraction is such that the kernel never calls into the process manager, only the other way around (save for a handful of corner cases, still never to the point of a functional dependence).
Hybrid kernel design
[edit]
The Windows NT design includes many of the same objectives as Mach, the archetypal microkernel system, one of the most important being its structure as a collection of modules that communicate via well-known interfaces, with a small microkernel limited to core functions such as first-level interrupt handling, thread scheduling and synchronization primitives. This allows for the possibility of using either direct procedure calls or interprocess communication (IPC) to communicate between modules, and hence for the potential location of modules in different address spaces (for example in either kernel space or server processes). Other design goals shared with Mach included support for diverse architectures, a kernel with abstractions general enough to allow multiple operating system personalities to be implemented on top of it and an object-oriented organisation.[9][27]
The primary operating system personality on Windows is the Windows API, which is always present. The emulation subsystem which implements the Windows personality is called the Client/Server Runtime Subsystem (csrss.exe). On versions of NT prior to 4.0, this subsystem process also contained the window manager, graphics device interface and graphics device drivers. For performance reasons, however, in version 4.0 and later, these modules (which are often implemented in user mode even on monolithic systems, especially those designed without internal graphics support) run as a kernel-mode subsystem.[9]
Applications that run on NT are written to one of the OS personalities (usually the Windows API), and not to the native NT API for which documentation is not publicly available (with the exception of routines used in device driver development). An OS personality is implemented via a set of user-mode DLLs (see Dynamic-link library), which are mapped into application processes’ address spaces as required, together with an emulation subsystem server process (as described previously). Applications access system services by calling into the OS personality DLLs mapped into their address spaces, which in turn call into the NT run-time library (ntdll.dll), also mapped into the process address space. The NT run-time library services these requests by trapping into kernel mode to either call kernel-mode Executive routines or make Local Procedure Calls (LPCs) to the appropriate user-mode subsystem server processes, which in turn use the NT API to communicate with application processes, the kernel-mode subsystems and each other.[28]
Kernel-mode drivers
[edit]
Windows NT uses kernel-mode device drivers to enable it to interact with hardware devices. Each of the drivers has well defined system routines and internal routines that it exports to the rest of the operating system. All devices are seen by user mode code as a file object in the I/O manager, though to the I/O manager itself the devices are seen as device objects, which it defines as either file, device or driver objects. Kernel mode drivers exist in three levels: highest level drivers, intermediate drivers and low level drivers. The highest level drivers, such as file system drivers for FAT and NTFS, rely on intermediate drivers. Intermediate drivers consist of function drivers—or main driver for a device—that are optionally sandwiched between lower and higher level filter drivers. The function driver then relies on a bus driver—or a driver that services a bus controller, adapter, or bridge—which can have an optional bus filter driver that sits between itself and the function driver. Intermediate drivers rely on the lowest level drivers to function. The Windows Driver Model (WDM) exists in the intermediate layer. The lowest level drivers are either legacy Windows NT device drivers that control a device directly or can be a PnP hardware bus. These lower level drivers directly control hardware and do not rely on any other drivers.
Hardware abstraction layer
[edit]
The Windows NT hardware abstraction layer (HAL) is a layer between the physical hardware of the computer and the rest of the operating system. It was designed to hide differences in hardware and provide a consistent platform on which the kernel is run. The HAL includes hardware-specific code that controls I/O interfaces, interrupt controllers and multiple processors.
However, despite its purpose and designated place within the architecture, the HAL isn’t a layer that sits entirely below the kernel, the way the kernel sits below the Executive: All known HAL implementations depend in some measure on the kernel, or even the Executive. In practice, this means that kernel and HAL variants come in matching sets that are specifically constructed to work together.
In particular hardware abstraction does not involve abstracting the instruction set, which generally falls under the wider concept of portability. Abstracting the instruction set, when necessary (such as for handling the several revisions to the x86 instruction set, or emulating a missing math coprocessor), is performed by the kernel, or via hardware virtualization.
The boot sequence is initiated by NTLDR in versions before Vista and the Windows Boot Manager in Vista and later.[29] The boot loader is responsible for accessing the file system on the boot drive, starting ntoskrnl.exe, and loading boot-time device drivers into memory. Once all the boot and system drivers have been loaded, the kernel starts the Session Manager Subsystem. The session manager starts crucial kernel and user mode services of the Win32 subsystem, such as the Client/Server Runtime Subsystem. The session also runs process winlogon, allowing the users to login and use their accounts.
- Microsoft Windows library files
- MinWin
- Unix architecture
- Comparison of operating system kernels
- User-Mode Driver Framework
- Kernel-Mode Driver Framework
- Hybrid kernel
Notes and references
[edit]
- Notes
- ^ Finnel 2000, Chapter 1: Introduction to Microsoft Windows 2000, pp. 7–18.
- ^ «Appendix D — Running Nonnative Applications in Windows 2000 Professional». Microsoft Windows 2000 Professional Resource Kit. Microsoft. 11 September 2008.
- ^ a b c «Windows NT Workstation Resource Kit Chapter 28 — OS/2 Compatibility». Microsoft. Archived from the original on October 24, 2012.
- ^ a b «POSIX and OS/2 are not supported in Windows XP or in Windows Server 2003». Microsoft. Archived from the original on May 24, 2011.
- ^ Reiter, Brian (August 24, 2010). «The Sad History of the Microsoft POSIX Subsystem».
- ^ «Basic Architecture of a Network Redirector». Microsoft. 15 December 2021. Retrieved 2023-07-30.
- ^ «Windows NT Networking Architecture». Microsoft. Archived from the original on November 18, 2016. Retrieved 2016-11-18.
- ^ a b c Roman, Steven (1999). «Windows Architecture». Win32 API Programming with Visual Basic. O’Reilly and Associates, Inc. ISBN 1-56592-631-5.
- ^ a b c «MS Windows NT Kernel-mode User and GDI White Paper». Windows NT Workstation documentation. Microsoft TechNet. Archived from the original on 21 February 2008. Retrieved 2007-12-09.
- ^ Mark E. Russinovich; David A. Solomon; Alex Ionescu. Windows Internals, Fifth Edition. Microsoft Press. pp. 228–255. ISBN 978-0-7356-2530-3.
- ^ a b «Software Development in Windows». Microsoft Press. May 15, 2012. Archived from the original on April 13, 2025.
- ^ «Services overview». Microsoft Learn. October 7, 2009.
- ^ Russinovich & Solomon 2005, pp. 124–125.
- ^ Russinovich 1997, Introduction.
- ^ Russinovich 1997, «Object Types».
- ^ Russinovich & Solomon 2005, pp. 135–140.
- ^ Russinovich & Solomon 2005, pp. 141–143.
- ^ «Handles and Objects». Windows System Information. Microsoft. 8 February 2022. Retrieved 2023-07-30.
- ^ Russinovich 1997, «Objects».
- ^ «Impact of Session 0 Isolation on Services and Drivers in Windows Vista». Microsoft. Archived from the original on June 27, 2006.
- ^ «Active Directory Data Storage». Microsoft.[permanent dead link]
- ^ «Trustee definition». MSDN. Archived from the original on February 8, 2005.
- ^ Siyan 2000.
- ^ «1.2 Glossary». [MS-AZOD]: Authorization Protocols Overview. 14 June 2022. access control entry (ACE).
- ^ «MS Windows NT Kernel-mode User and GDI White Paper». Microsoft. The Windows NT 4.0 Kernel mode change. Retrieved 2009-01-19.
- ^ Solomon & Russinovich 2000, pp. 543–551.
- ^ Silberschatz, Abraham; Galvin, Peter Baer; Gagne, Greg (2005). Operating System Concepts; 7th Edition (PDF). Hoboken, New Jersey: John Wiley & Sons Inc. ISBN 978-0-471-69466-3.
- ^ Probert, Dave (2005). «Using Projects Based on Internal NT APIs to Teach OS Principles». Microsoft Research/Asia — Beijing. p. 6. Archived from the original on 2007-03-17. Retrieved 2007-03-01.
- ^ «Boot Sequence of Windows Multi-Boot — Multibooters.com». www.multibooters.com. Retrieved 2020-11-19.
- References
- Finnel, Lynn (2000). MCSE Exam 70-215, Microsoft Windows 2000 Server. Microsoft Press. ISBN 1-57231-903-8.
- Russinovich, Mark (October 1997). «Inside NT’s Object Manager». Windows IT Pro. Archived from the original on 3 March 2007.
- «Active Directory Data Storage». Microsoft. Retrieved 2005-05-09.[permanent dead link]
- Solomon, David; Russinovich, Mark E. (2000). Inside Microsoft Windows 2000 (Third ed.). Microsoft Press. ISBN 0-7356-1021-5. Archived from the original on 2005-03-23.
- Russinovich, Mark; Solomon, David (2005). Microsoft Windows Internals (4th ed.). Microsoft Press. ISBN 0-7356-1917-4.
- Schreiber, Sven B. (2001). Undocumented Windows 2000 Secrets. Addison-Wesley Longman. ISBN 978-0201721874.
- Siyan, Kanajit S. (2000). Windows 2000 Professional Reference. New Riders. ISBN 0-7357-0952-1.
- Martignetti, E.; What Makes It Page?: The Windows 7 (x64) Virtual Memory Manager (ISBN 978-1479114290)
- Russinovich, Mark E.; Solomon, David A.; Ionescu, A.; Windows Internals, Part1: Covering Windows Server 2008 R2 and Windows 7 (ISBN 978-0735648739)
- Russinovich, Mark E.; Solomon, David A.; Ionescu, A.; Windows Internals, Part2: Covering Windows Server 2008 R2 and Windows 7 (ISBN 978-0735665873)
- «Microsoft’s official Windows 2000 site». Microsoft. Archived from the original on February 29, 2000.
- «Microsoft Windows 2000 Plug and Play». Microsoft. Archived from the original on August 8, 2004.
- Memory management in the Windows XP kernel
Чтобы выяснить, насколько хороша Windows на самом деле, нужно изучить ее ядро и понять, как оно устроено и что оно может. В данной статье мы сравниваем Windows с Linux и Mac OS X и выявляем сильные и слабые стороны этой операционной системы, имеющей так много пользователей и так мало поклонников.
Многие области операционной системы от Microsoft в повседневной работе от нас скрыты. Как правило, пользователь видит лишь то, что работает в пользовательском режиме; режим ядра, в котором операционная система общается с оборудованием, ему недоступен.
Windows Debugger анализирует образ памяти и показывает причины сбоев — в нашем случае виноват драйвер режима ядра
Файл NTOS — сердце ядра Windows, логически подразделяется на два слоя. Особенность состоит в том, что из соображений повышения производительности драйверы могут обращаться к оборудованию напрямую
Ядро Linux отвечает за управление командами ввода-вывода, памятью и процессами. На самом низком уровне ядра находятся функции, управляющие прерыванием процессов
Доступ к ядру Linux открыт каждому. На рисунке — фрагмент конфигурации ядра версии 2.6.19
Ядро системы Apple основано на двух источниках: в нем используются функции основанной на Unix подсистемы BSD наряду с частями микроядра Mach Со словом «Windows» связано много предубеждений и мифов. Например, бытует мнение, что работать в Windows крайне опасно, так как миллионы вирусов, гуляющих по Интернету, атакуют исключительно эту ОС. К тому же многие уверены, что детище Microsoft не отличается высокой производительностью: чем дольше вы пользуетесь этой системой, тем медленнее она работает. Что касается стабильности, то всем хорошо знаком пресловутый «синий экран». Это и неудивительно: Vista состоит из семидесяти миллионов строк кода — как тут не запутаться! Чтобы выяснить, справедливы ли все эти обвинения, необходимо заглянуть в самое ядро операционной системы и проверить, насколько оно отвечает трем критериям: безопасность, производительность и стабильность. А для сравнения возьмем ядра двух других систем — Linux и Mac OS X. Кроме того, мы подробно расскажем, какие методы используют Windows и ее конкуренты.
Контроль над системой
Ядро управляет операционной системой, и ее качество зависит именно от качества ядра. На нем держится буквально все. в частности, ядро выполняет роль интерфейса для компьютерного оборудования: оно общается с внешними устройствами и управляет встроенными компонентами, такими как оперативная память, центральный процессор и жесткий диск.
Чтобы обеспечить безопасность системы, ядро следит за всеми текущими процессами, определяя, какие программы и как долго могут пользоваться аппаратными ресурсами. Стабильность достигается за счет структурирования ресурсов. За этим стоят функции, к которым обращаются каждый день — например, отображение файловых систем на жестком диске. Высокая производительность важна при возникновении конфликтов доступа — например, когда две программы пытаются записать данные на жесткий диск одновременно. В этом случае ядро расставляет приоритеты и предоставляет доступ одной из программ, в то время как второй приходится ждать. Ниже мы подробно расскажем, как именно Windows справляется со всеми этими задачами.
Обзор типов ядер
Монолитное.
Одно большое ядро для всех задач — в этом заключается идея монолита. Такое ядро отвечает за управление памятью и процессами, за коммуникацию между процессами, а также предлагает функции для поддержки драйверов и оборудования. Именно к этой категории относятся Windows, Linux и Mac OS X.
Микро. Ошибка в ядре может вывести из строя всю операционную систему. Поэтому микроядро отличается предельно малыми размерами — чтобы свести ошибки и сбои к минимуму. Но поскольку ядро должно поддерживать широкий набор функций, оно подразделяется на несколько модулей, из которых только один работает в режиме ядра. Классическим примером является Mach — компонент Mac OS X. Так или иначе, до сих пор ни одна операционная система с микроядром не завоевала популярности среди домашних пользователей.
Гибрид.
Гибридное ядро представляет собой нечто среднее между монолитным и микроядром. Само ядро делается облегченным, а для дополнительных задач существуют динамические модули. В Linux и OS X тоже можно подгружать части ядра, но не в таких масштабах, чтобы отнести их ядра к гибридным.
Windows : работает на любом оборудовании
Начиная с NT, в архитектуре Windows выделяется два режима: пользовательский и привилегированный, или режим ядра. Это относится и к Vista.
В режиме пользователя работает практически все, что видит пользователь, то есть приложения вроде Word или Photoshop. В этом режиме программы не имеют прямого доступа к оборудованию или оперативной памяти. Таким образом, пользовательский режим надежно изолирован, а все обращения к глубинам системы направляются через специальные интерфейсы, такие как Win32 API с системными библиотеками DLL (Dynamic Link Libraries).
Такой режим ядра — фоновый и практически незаметен для пользователя. Все хорошо до тех пор, пока не возникнет какая-либо проблема — например, драйвер режима ядра (см. схему ядра Windows) не обрушит всю систему, и взору пользователя предстанет синий экран.
Центральное значение здесь имеет файл ntoskrnl.exe.
По аналогии с режимом ядра и пользовательским режимом его задачи также делятся на две группы — слой ядра и исполнительная система. Главная задача слоя ядра — планировать загрузку центрального процессора, то есть распределять процессорное время между отдельными программами. Исполнительная система отвечает за виртуальную память, процессы ввода-вывода и другие задачи.
Глубже всего в системе располагается уровень аппаратных абстракций (Hardware Abstraction Layer, HAL). Он предоставляет другим слоям ОС службы для работы со встроенным оборудованием. Так, слой ядра может распределять процессорное время между программами независимо от того, какой процессор используется в компьютере — двуядерный AMD или четырехъядерный Intel. Если бы не HAL, Microsoft пришлось бы разрабатывать отдельную Windows для каждого компьютера.
Средства для отладки Windows WINDBG Чтобы проанализировать состояние памяти при выдаче «синего экрана», вам понадобится программа-отладчик, такая как WinDbg. На странице загрузок Microsoft вы найдете также соответствующий файл символов. www.microsoft.com/whdc/DevTools/Debugging NotMyFault тестирует систему на прочность: эта программа провоцирует ошибки в Windows и пытается ее обрушить. Экспериментируйте осторожно! Process Explorer. Управление процессами — одна из главных задач операционных систем. Process Explorer показывает все текущие процессы, соответствующие дескрипторы и связи между процессами. http://download.sysinternals.com
Linux : подгружает модули при необходимости
Хотя ядро Linux (см. схему) основано на Unix, но сходства с Windows у него больше, чем можно подумать. Оно также располагается непосредственно над оборудованием и играет роль своеобразной прослойки между оборудованием и работающими программами. Стандартные задачи тоже сходны: как и в Windows, ядро сотрудничает с устройствами ввода-вывода и берет на себя управление памятью. Оно также управляет процессами, то есть решает, какая задача в данный момент имеет приоритет, и получает доступ к процессорному времени. Для этого на самых нижних уровнях ядра располагаются функции управления прерываниями (interrupts).
Запрос на прерывание посылает, к примеру, клавиатура, когда пользователь нажимает на любую клавишу. Этот запрос обрабатывается специальным системным механизмом — диспетчером. Он решает, насколько высока приоритетность прерывания и включает его в очередь текущих процессов. Как только появляется возможность выполнить прерывание, диспетчер приостанавливает протекающий процесс и сохраняет его статус. Только после этого прерывание, то есть введенная с клавиатуры команда, может быть реализовано.
Архитектура Linux, как и Windows, имеет монолитное строение. Тем не менее, ядро может динамически догружать различные модули. В основном они дополняют имеющиеся компоненты или даже полностью заменяют их.
В ядро Linux встроены интерфейсы системных и библиотечных вызовов, а также пользовательский интерфейс. При этом важную роль играет интерфейс системных вызовов: он отвечает за процессы в целом. Специальной командой процессы переключаются из пользовательского режима в режим ядра.
Mac OS X : сила двух ядер
Ядро Mac OS X сокращенно обозначается как XNU — X is Not Unix.
Эта аббревиатура соответствует действительности, потому что ядро операционной системы Apple скомбинировано из двух источников, и лишь его часть имеет отношение к Unix (см. рис.). Остальное компания взяла из проекта Mach — классического примера микроядра (см. рис.). При этом Mach используется только для передачи сообщений (message passing), то есть эффективной коммуникации между отдельными частями ядра. Помимо Mach XNU содержит код проекта FreeBSD, который основан на Unix. Эта часть отвечает за взаимодействие с пользователем, обработку сигналов и совместимость со стандартами POSIX.
Последнее гарантирует, что большинство программ для Unix будут функционировать и в Mac OS X.
Важным компонентом Mach является система ввода-вывода (I/O Kit).
Именно здесь заключается существенное отличие от Windows и Linux: I/O Kit представляет собой дополнительный слой абстракций между оборудованием и остальной системой.
Здесь находятся стандартные модели драйверов, на основе которых разработчики пишут специализированные драйверы. Это способствует стабильности и повышает вычислительную мощность.
Помимо служб ядра Mac OS X позволяет также использовать расширения ядра. Система загружает их динамически по мере необходимости. Часто в таких случаях говорят о гибридном ядре, однако эксперты относят ядро Mac OS X скорее к монолитным из-за особенностей его строения.
Процессы: цифровая подпись как средство защиты
Важной задачей ядра является управление процессами.
Под этим подразумевается не только расстановка приоритетов, но и обеспечение безопасности. В классическом варианте в Windows процессы запускаются и управляются через интерфейс Win32 API.
В ядре этим занимается исполнительная система NTOS.
Доступ к объектам ядра, относящимся к про цессу обеспечивают так называемые дескрипторы (handles). Процессы в Windows могут запускать новые процессы. Так, Word (процесс 1) может открыть новый документ (процесс 2). В классической модели Windows Word имеет право также стереть или изменить новый документ. Иными словами, по общему правилу процесс может распоряжаться порожденными собою же процессами.
Однако в стандартных процессах есть одна лазейка, позволяющая обойти структуру доступа. Это возможно при наличии полномочий на отладку программ — в данном случае администратору предоставляется полный доступ к процессу. Так он может заглянуть в адресное пространство процесса, считать и изменять используемые в процессе данные. Злоумышленникам это дает возможность добавить в процесс новые потоки.
В связи с этим Vista пересмотрела процессную модель специально для мультимедийных файлов и ввела новый тип процессов — защищенные. Возможности манипулирования ими существенно ограничены: хоть ядро и предоставляет диагностическую информацию о таких процессах, но непосредственный доступ закрыт даже для администраторов.
Согласно этому методу, кодек для просмотра фильма, например, может работать как защищенный процесс только при одном условии — его полный исполняемый код должен быть подписан цифровой подписью.
Защищенные процессы — показательный пример того, как Microsoft приспосабливает устаревшую архитектуру Windows к современным проблемам.
В Linux и Mac OS X процессная модель сходна с моделью Windows: процессы-«родители» контролируют порожденных ими «детей». Однако защищенных процессов, таких как в Vista, нет. Это неудивительно: Microsoft использует эту технологию в первую очередь для цифрового управления правами (Digital Rights Management).
Таким образом, при наличии администраторских (root) прав в Linux и Mac OS X можно делать все, даже анализировать процессы и манипулировать ими.
ASLR : «неуловимые» адреса
Современные процессоры имеют адресную шину шириной 64 бит, однако несколько бит изначально отводится под другие задачи.
Например, NX-бит препятствует исполнению данных DEP (Data Execution Prevention).
При попытке выполнить код, который находится в участке памяти, помеченном «не для исполнения», возникает внутренняя ошибка. В Windows отключить DEP для 64-битных программ и драйверов нельзя, зато для 32-битных (все еще весьма распространенных) — без проблем. Это позволяет злоумышленникам вызвать переполнение буфера. В результате они могут инфицировать такие процессы, как Internet Explorer, и проникнуть внутрь системы. После того как вредитель закрепился в Windows, он может использовать Windows-API в своих интересах — например, для того, чтобы считать нужные ему данные или изменить конфигурацию системы.
Поэтому Microsoft ввела новую функцию защиты ядра — Address Space Load Randomization (ASLR, «рандомизация адресного пространства»). Частично она была реализована уже в SP2 для ХР, но полностью — только в Vista. Ее суть заключается в следующем. В Windows входными воротами для злоумышленников обычно являются библиотеки DLL, которые в предшествовавших версиях системы всегда загружались в одни и те же участки памяти. С ASLR системные DLL и исполняемые файлы при каждой загрузке системы попадают в разные участки оперативной памяти, чтобы вредоносное ПО больше не могло атаковать системные операции по стандартным адресам. Для этого менеджер памяти имеет в своем распоряжении 256 различных адресов и при загрузке DLL выбирает один из них случайным образом. Такая «плавающая» стратегия ASLR имеет дополнительное преимущество: адресное пространство упаковано плотнее, чем в более ранних версиях Windows, так что непрерывных свободных участков в памяти остается больше.
В специальных дистрибутивах Linux, таких как Hardened Gentoo, ASLR уже полностью реализована. В стандартном же ядре содержится лишь неполный вариант. В современном OS X Build ASLR используется для нескольких библиотек, но их полноценная реализация, к сожалению, отсутствует.
Проверка подлинности: надежный код
В качестве противоядия Microsoft использует в Vista подпись кода в режиме ядра (KMCS), которая разрешает загружать лишь те драйверы устройств, которые снабжены цифровой подписью. Большинство драйверов получают подписи через лабораторию WHQl (Windows Hardware Quality Lab), однако разработчики могут подписывать свой код сами — правда, для этого им нужен действительный сертификат. Windows проверяет также, имеет ли выданный сертификат отношение к одному из центров сертификации, данные о которых содержатся в загрузчике Windows и ядре ОС. Надо сказать, что 32-битные системы Vista хотя и проверяют цифровые подписи драйверов, все-таки позволяют загрузить неподписанные драйверы.
В 64-битных Windows такой номер не пройдет.
Все модули ядра в Mac OS X и Linux, в принципе, могут иметь цифровую подпись. Хотя теоретически это относится и к драйверам, никаких механизмов проверки в этих операционных системах не встроено.
MMCSS : приоритет видео
Планировщик Windows жонглирует несколькими процессами, открытыми одновременно. Каждое приложение на определенное время получает доступ к вычислительным мощностям центрального процессора, затем уступает место другим и ждет снова своей очереди.
Чтобы такого не происходило, например, когда вы смотрите фильм, в Windows встроены специальные функции для мультимедийных файлов. Поэтому антивирусы и службы Windows в основном работают в фоновом режиме и не мешают просмотру.
В Vista приоритет фильмов и музыки обеспечивается службой планирования мультимедийных классов — MMCSS. Для этого мультимедийное приложение, такое как Media Player, сначала должно зарегистрироваться в этой службе. Данная служба, реализованная в файле %SystemRoot%System32Mmcss.dll, включает в себя поток для управления приоритетами. Windows предусматривает ступени приоритетности от 0 до 31, при этом MMCSS имеет очень высокую приоритетность — 27. Соответственно, приоритетность всех зарегистрированных мультимедийных потоков поднимается до 27. С 16-й ступени начинается режим реального времени, то есть потоку с приоритетом 16 остальные помешать уже не могут.
Linux предлагает еще более высокую градацию шкалы приоритетности — от 0 до 99. Для мультимедийных задач, например, на медиасерверах, такая разбивка подходит лучше. В Mac OS X планировщик является одним из используемых компонентов Mach.
Шкала приоритетности здесь еще мельче — от 0 до 127, и это не единственное подтверждение того, что Mach намного современнее, чем Linux и Windows. В OS X мультимедийное приложение может даже присвоить себе фиксированную долю вычислительного времени. При достаточной мощности это практически исключает риск образования узких мест.
Ввод-вывод: приоритетность задач
Высокая приоритетность при просмотре фильмов может негативно отразится на многозадачности. Так, до ХР в Windows существовали серьезные проблемы с фоновыми службами, например, автоматической дефрагментацией.
Конечно, это помогало поддерживать жесткий диск в порядке, но кому же понравится, когда, к примеру, Outlook выпадает из обоймы на два часа? Однако благодаря приоритетности ввода-вывода ждать больше не придется. Так, в Vista процессы «переднего плана» (не фоновые) всегда пользуются преимуществом, и дефрагментация приостановится до тех пор, пока пользователь не сделает в своей работе очередную паузу. Система ввода-вывода в Vista предполагает пять ступеней приоритетности — от «очень низкая» до «критически важная»; стандартный уровень — «нормальная». Фоновым задачам Windows автоматически присваивает низкую приоритетность, однако менеджер памяти всегда считается критически важным: действительно, когда оперативной памяти начинает не хватать, он должен незамедлительно сбросить данные на жесткий диск.
Команды ввода-вывода, посылаемые от драйверов устройств (такие как движение мыши), поступают в очередь со средней приоритетностью.
Еще одна ценная возможность заключается в том, что Vista может резервировать для операций ввода-вывода фиксированные диапазоны. Так, например, Media Player может потребовать от системы ввода-вывода гарантию, что фильм будет считываться с DVD в определенном темпе.
Тогда как в Vista приоритетность ввода-вывода — нововведение, в Mac OS X и Linux данный прием используется давно. В Mac OS X это заложено в архитектуре, так как для передачи сообщений используется Mach. В системах семейства Linux, начиная с ядра 2.6, тоже встроена эффективная схема приоритетов.
Адресное пространство: динамическое управление
32-битные процессоры накладывают на Windows и инсталлированные программы серьезные ограничения в отношении адресного пространства. Так, ядро Windows не может занимать больше 2 Гбайт. Когда нужно выделить место для драйверов, кеша файловой системы и стека, это может привести к определенным трудностям. Поэтому в Vista адресное пространство ядра динамическое. Оно занимается раздачей и разблокированием участков в зависимости от рабочих потребностей.
Операционные системы Linux и Mac OS X не имеют строгих ограничений. И в этих операционных системах общие размеры ядра имеют свой предел. В целом формат отдельных компонентов никак не ограничен. Действительно, в отличие от Windows в этих системах нет четкого разграничения между пространством ядра и пространством драйверов.
КТМ: предотвращение программных сбоев
Если приложение намерено предпринять ряд взаимосвязанных изменений, оно может создать либо дескриптор КТм («диспетчера транзакций ядра») и транзакцию DTC (Distributed Transaction Coordinator, «координатора распределенных транзакций»), либо просто дескриптор КТМ, и выполнять изменения файлов и ключей реестра в рамках этой транзакции. Если все прошло успешно, транзакция подтверждается — изменения приняты. До этого программа может в любой момент отменить весь процесс. Дополнительное преимущество заключается в том, что другие приложения видят эти изменения только после того, как транзакция принята.
Ядра Mac OS X и Linux тоже работают с транзакциями.
Пользователь, как правило, этого совсем не замечает, если не считать сбоев при установке обновлений. Впрочем, в обеих ОС это никак не подрывает стабильность системы, просто транзакции не будут исполнены.
Windows 7, 8, 9…
Не секрет, что Microsoft работает над новой архитектурой Windows. Прототипом операционной системы будущего (после Win7) должны стать два проекта.
Singularity обещает нам Windows без «синих экранов» и зависаний. Проект основан на трех ключевых функциях: программно-изолированные процессы (SIP), микроядро и каналы (channels).
Микроядро обеспечивает лишь неотъемлемые «ядерные» функции, такие как управление памятью, процессами и каналами, планировка процессорного времени и управление вводом-выводом. Все другие функции перекладываются на модули и реализуются изолированно друг от друга через SIP-процессы.
Проект Midori рассчитан на отдаленную перспективу. Его ядро будет иметь модульную структуру.
Преимущество заключается в том, что Windows будет лучше работать на различных платформах, таких как нетбуки, КПК или мобильные телефоны.
Вывод
Прошлые версии Windows на фоне Linux и Mac OS X смотрятся совсем неплохо. Хотя конкуренты несколько моложе, они во многом основаны на старых принципах Unix. Vista доказывает, что устаревшую архитектуру Windows можно компенсировать современными технологиями безопасности, такими как защищенные процессы или цифровые подписи кода для модулей ядра. Но, к сожалению, эти функции часто работают только в 64-битном мире, а в ХР они и вовсе отсутствуют. К тому же Linux и OS X не нуждаются в уловках вроде ASLR, поскольку они не так сильно подвержены атакам хакеров. Да и получить права администратора в Linux и Mac OS X сложнее, чем в Windows.
В Windows много застарелых проблем: например, даже в Vista дефектный драйвер все еще может обрушить всю систему. OS X выглядит несколько более современно: высокая производительность обеспечивается главным образом за счет использования компонентов Mach для коммуникаций внутри ядра, а также системы ввода-вывода I/O Kit.
В этом смысле Windows отстает, и компенсировать разрыв сумела только Vista. В пользу Linux говорит ее открытость: каждый может сконфигурировать ядро по своему усмотрению.
Для рядовых пользователей работа с ПК под управлением Windows — это как полёт в самолёте. С одной стороны дико тошнит от багов и глюков, а с другой – выйти всё равно некуда. Zip File, мамкины хаЦкеры. С вами Денчик и нынче мы наконец-то обсудим верхние уровни устройства операционной системы Windows. Рассмотрим детально процесс загрузки, архитектурные особенности и нюансы. Ну и конечно же разберём потенциальные уязвимости, которые могут встречаться в операционных процессах данной системы. Если вам интересна данная тема и вы давненько хотите узнать, что же скрывается в неё под капотом. Тогда устраивайтесь по удобней, наливайте свежую порцию чего-нибудь по забористей и приготовьтесь к путешествию в полную Виндузятню. Погнали.
Но перед тем, как мы начнём обсуждение основной темы, я бы хотел рассказать вам о партнёрах данного выпуска, хостинг-провайдере FirstVDS. FirstVDS — это крупный хостинг-провайдер, который на рынке уже 20 лет. 6 декабря ребята начали отмечать юбилей, и в честь этого праздника запустили крутейшую акцию. Что же будет 6 декабря? Будут скидки, занимательная статистика для клиентов, розыгрыш техники Apple и игра FirstRunner. Игра FirstRunner была создана разработчиками специально к 20-летию FirstVDS. Участникам предлагается помочь Ферст Джону пробежать от медленного 2002 до сверхбыстрого 2022. Играйте, ищите пасхалки, входите в ТОП и получайте дополнительный подарки. Каждому клиенту, который поиграет в игру, выпадает возможность выиграть макбук, айфон, плейстейшн или сертификаты на баланс. FirstVDS будет ждать всех на странице акции с 6 по 13 декабря! Присоединяйтесь по ссылке в описании к видео.
Стандартное устройство машины
Ну а мы возвращаемся к основной теме нашего выпуска. Как вы помните, эталонно любая машина состоит у нас из процессора, исполняющего команды программ, быстрой памяти (ОЗУ), дискового пространства для долговременного хранения и подключения к сетке.
Касательно этих терминов вроде бы всё просто и очевидно, однако и по сей день многие ITшники называют «программами» то, что на поверку является приложением. Не путайте пожалуйста. Это совершенно разные вещи.
Окей. В целом картина выглядит следующим образом. На прикладном уровне находятся вышеупомянутые приложения. Они взаимодействуют непосредственно с операционной системой.
В данном случае под операционной системой я подразумеваю совокупность ядра (Kernel) и драйверов устройств. Последние соответственно относятся к самому нижнему, так называемому, железному уровню.
Сегодня мы будем акцентировать внимание на среднем, операционном уровне, который позволяет железу работать с протоколами, методами, периферийной историей и прочими интересными штуками.
Для того, чтобы не писать драйвера для каждого мало-мальски значимого устройства посредством ассемблера, умные дядьки придумали операционные системы.
Ключевые версии Windows
Если речь заходит о Windows, то тут можно выстроить поистине гигантский таймлайн из версий. Я специально включил в подборку не все, а только наиболее значимые версии мелкомягкой ОСи.
Из тех, с которыми вы ещё можете столкнуться тут Windows XP. Я буквально пару лет назад работал в крупной конторе, где 90% парка состояло из ХРюш и никого это особо не парило. Как говорится, лучшее, враг хорошего.
Windows Server 2003 был весьма прорывным и дико сложным для освоения на то время. Именно с него начинается эпоха сисадминства в России. Восьмой сервер в свою очередь был чутка дружелюбнее.
Однако почему-то дико тяжёлым и ел столько оперативы, что запустить его на одной физической тачке с Касперским было практически нереально.
А учитывая то, что SSDшников ещё не было от слова совсем, удовольствия админы получили изрядную порцию.
Седьмая Винда имела кучу проблем с совместимостью. Хотя со временем с помощью обнов и сервис-паков это исправили. Точно также Мелкомягкие допилили и Восьмой сервер выпустив R2 версию, которая, как по мне и по сей день является практически идеальным решением для мелких и средних контор.
Ну про остальные ОСи говорить в целом особо нечего, ибо вы и сами можете попробовать их в деле у себя дома или на рабочих местах.
По 16 серваку в связке с 10 виндой в роли клиента у меня кстати есть целый авторский видеокурс. Можете чекнуть как-нибудь на досуге, если любите иногда развиваться, а не только писю гонять.
Также для развития очень полезно ежедневно учить команды для оперативного взаимодействия с командной строкой системы.
Как показывает практика, если вы шарите, то набрать команду можно в разы быстрее, нежели тыкать мышью в иконки. Рекомендую.
Application Programming Interface (API)
Интерфейс программного взаимодействия или API позволяет одной программе взаимодействовать с другой. Например, приложению с Windows.
API также имеют разные версии. Для 32 разрядных ОС они одни, для 64 разрядных другие.
Если в теме, напишите в комментах по каким причина 32 разрядные операционки до сих пор существуют и почему в самом ближайшем будущем их исчезновение в принципе невозможно.
Даю подсказку. Это как-то связано с особенностями программ. Как вы помните, программа – это набор инструкций для выполнения. Тут всё логично. Однако давайте помимо программы введём ещё такое понятие, как процесс.
Процесс – это совокупность из загруженного и исполняемого набора инструкций и контейнера для ресурсов. Ни больше ни меньше.
Любой процесс обладает рядом особенностей. Наиболее важным для вас из этого списка является PID. Он же Process ID. Он же идентификатор процесса.
Давайте сразу рассмотрим пример. Как видно в таскменеджере, запущенная программа, в данном случае блокнот, может в момент работы создавать несколько разных процессов.
Один процесс может запускать целое дерево из созависимых процессов. И каждый процесс в этом дереве будет иметь равные права. Это же работает в обратную сторону.
Т.е. если вы хлопните какой-нибудь процесс Explorer, всё что так или иначе связано с интерфейсом у вас отвалится. Это в целом достаточно удобная штука. Также для расширенной работы с процессами рекомендую юзать Sysinternals.
Это такой набор расширенных системных инструментов Windows от Марка Руссиновича, позволяющий получить больше информации, чем при апеллировании стандартными инструментами.
Внутри процессов у нас существуют потоки исполнения (threads). Т.е. то, что Windows может запускать на ядре процессора на исполнение.
Также внутри работающего процесса есть как минимум один поток. Windows выделяет каждому потоку квант времени для выполнения на процессоре и быстро переключает исполняющиеся потоки.
Именно это и создаёт так называемую иллюзию «параллельности» работы приложений. Ключевая идея тут заключается в разделении задач на разные потоки, чтобы не было «подвисаний».
Например, один поток рисует графический интерфейс, а другой — выполняет сложную работу. Всё, как в жизни. От каждого по возможностям на благо общего дела.
Архитектура
Windows и приложения – это, как мы знаем исполняемый код, поэтому существует задача ограничения возможностей приложений. В современных процессорах (речь про x64) по дефолту определены 4 уровня привилегий.
Про UserMode мы с вами уже поговорили в общих чертах. Kernel же, являясь по сути ядром, даёт доступ к процессору и всей оперативной памяти.
Т.е. когда пользовательскому процессу необходимо выполнить операцию, требующую повышенных привилегий, например, блокнот хочет сохранить файл на диск.
Наш процесс самостоятельно вызывает соответствующий сервис в ядре. Там выполняется специальная команда, переводящая вызывающий поток в kernel mode, а после завершения возвращающая его обратно в user.
Именно поэтому все путные вирусы хотят заломиться именно в Kernel. Ибо доступ к железу возможен только на уровне ядра, а значит для какой-то реальной пакости требуются повышенные привилегии.
Память
Фундаментально вся память представляется, как непрерывная адресуемая последовательность байт, где операционная система занимает верхние адреса, к которым у пользовательских процессов доступа нет.
Поскольку процессов много, Windows распределяет между ними участки памяти так, что для процесса они как бы непрерывные, однако на самом деле это не так.
Т.е. в моменте процессор не видит этих пробелов. Для него есть только синенькие полосочки или только зелёненькие. Такие вот специфические особенности области видимости.
Если есть нужда посмотреть более детальную информацию о карте памяти процесса, то можно воспользоваться ещё одной утилитой от Руссиновича под названием VMMap.
Для примера я, как обычно, запустил стандартный блокнот. С помощью данной программы наглядно видно, что помимо самого файла notepad.exe (он будет в самом низу списка), загружается много dll файлов.
Библиотеки DLL
DLL (они же Dynamic-link library) – это специальный формат файлов, позволяющий хранить исполняемый код (т.е. инструкции), которые могут использоваться различного рода процессами.
Процессы подгружают библиотеки и используют описанные в ней функции. Поэтому если мы в VMMap’е прочекаем разные приложения, то увидим, что стандартные библиотеки используются одни и те же.
В основном это будут Кернелы. Именно эти библиотеки служат своеобразным слоем, который транслирует документированные вызовы функций в вызовы к сервисам Windows.
Глобально разделение на Kernel Mode и User Mode со стороны выглядит следующим образом. В самом низу мы видим вариант Мелкомягкого гипервизора. Эта деталь не является обязательной.
Если точнее, то она актуальна для ситуаций, когда на одном железе крутится несколько операционных систем. Само ядро, согласно схеме, находится над ХАЛом (набором общих инструкций).
При этом ядро загружается при старте машины и берёт управление на себя. А гипервизор, хоть и исполняется в 0-ом кольце, но при этом изолирует себя от ядра и может как бы «наблюдать» за всей ситуацией со стороны.
Или как говорят умные дядьки, осуществляет мониторинг. В самом User Mode выделяется 4 типа процессов: пользовательские — процессы, получаемые из обычных (т.е. устанавливаемых пользователем или предустановленных) приложений;
Сервисы (они же службы) — чаще всего процессы, которые выполняются в «фоновом режиме», например, службы печати, службы индексирования.
Environment Subsystems — поддержка различных окружений (ранее поддерживалось POSIX, сейчас только Windows). Поэтому обратной совместимости нет.
Ну и само-собой различного рода системные процыки. Уже упомянутый POSIX (Portable Operating System Interface) — это набор стандартов, предназначенный для организации совместимости между ОС.
Начиная с Windows 10, в состав операционки вошла подсистема WSL (Windows Subsystem for Linux). И как понятно из названия она предоставляет возможность запуска Linux-приложений из командной строки.
Вернее, так работала первая версия. WSL 2 уже представляет собой отдельную виртуалку на гипервизоре и даёт гораздо больше возможностей для сисадминов и безопасников в плане доступа к кишкам ОСи.
Ключевые файлы и драйвера
Теперь что касается ключевых файлов в системе. На слайде представлены основные каталоги, которые необходимо запомнить. Современные версии ОС Windows не позволяют как-либо работать с ними.
Однако во времена Windows 2000 вы могли удалить с компьютера папку system32 и тем самым провести небольшой саботаж. Папка окажется в корзине, восстановить вы её не сможете, винда зависнет, но при этом не выключится.
Короче, ад и Израиль. Благо, что мелкомягкие пофиксили этот забавный баг. Но сам факт существования такой вот хурмы заставляет задуматься о тщетности бытия.
Ладненько, помимо файлов есть ещё драйвера, которые представляют собою программный код, обеспечивающий поддержку той или иной функциональности устройств, протоколов и файл-систем.
Системные драйвера располагаются в каталоге System32\Drivers, а пользовательские — в произвольных каталогах, выбираемых в момент инсталляции.
Загрузка
Процесс загрузки компьютера начинается не с работы операционной системы Windows, а с работы встроенного ПО — BIOS.
BIOS зашит в материнскую плату и отвечает за базовую инициализацию оборудования и процедуру самотестирования (она же POST).
BIOS анализирует диски в установленном порядке для поиска MBR (Master Boot Record) — специальным образом оформленной области на диске.
Сам MBR загружает Boot Manager, который уже непосредственно и запускает ОС.
Для Windows это каталог %SystemDrive%\bootmgr (к слову в файловой системе он не отображается).
Ну а дальше Boot Manager загружает так называемый Windows Loader (файлик winload.exe), который уже будит наш Kernel, т.е. загружает ядро Винды.
Вот такой вот хитро**ный процесс. А вы это даже не цените. Давайте резюмирую. Сначала BIOS, затем Boot Manager, далее Loader и только затем ядро, а после уж и рабочий стол с пышногрудой девицей.
Есть ещё вариант с UEFI. Это такой интерфейс, пришедший на смену BIOS, который позволяет писать приложения, подписывать их и проверять конечную подпись.
Собственные UEFI есть у Samsung, ASUS и других популярных вендеров. Схематически работа этой истории выглядит следующим образом.
Да, возможно чутка сложнее, чем в случае с классическим BIOS, зато в разы дружелюбнее для конечного пользователя.
Помимо прочего есть ещё утилиты позволяющие модифицировать BOOT-систему. Например, bcdedit. Либо msconfig, если предпочитаете графический интерфейс. Если захотите поковырять, рекомендую делать это на виртуалке.
И последнее о чём мне бы хотелось сегодня поговорить – это процесс smss.exe. Данный процесс запускает ядро session manager subsystem.
Он же первый процесс в user mode. Который в свою очередь загружает цепочку процессов, отвечающих за выполнение дальнейшей процедуры инициализации.
Ее мы с вами подробно разберём в следующем видео из цикла информационная безопасность с нуля до джуна.
Так что, если не хочешь пропустить это дело и более детально изучить механизмы безопасности операционной системы Windows – обязательно подпишись на канал кликнув на колокольчик.
Не пойму правда, какого лешего ты не сделал этого раньше, но всё-таки дам шанс и возможность исправить карму по-братски, раз уж ты так напрягся и досмотрел ролик до этой минуты.
Окей, друзья. Нынче мы рассмотрели общую архитектуру ОС Windows и базовый процесс загрузки. Тот, что происходит непосредственно до загрузки ядра.
На следующей лекции мы с вами уже подробно поговорим о процессе загрузки и механизмах безопасности, предоставляемых данной операционной системой.
Не забываем сделать домашнее задание по теме лекции. Ссылочка, как обычно, будет закреплена в описании. Ну и если урок зашёл – не пожидитесь и отблагодарите жирнейшим лайкосиком.
Вам не напряжно пару раз по экранчику тапнуть, а мне дико приятно. Приятно осознавать, что работа над контентом происходит не зря и среди современных ITшников есть спрос на инфу с уклоном в ИБ.
Ладненько. С вами, как обычно, был Денчик. В заключении, по традиции, желаю всем удачи, успеха и самое главное, отличного настроения.
Берегите себя и данные своих пользователей. Не позволяйте криворуким ломать винду. Для этого регулярно делайте бэкапы на сервер с наиболее важных тачек. И будем вам счастье.
Помните, технологии – это весело. Во всяком случае, если речь идёт об IT. Тут без креативности, улыбки и хорошего чувства юмора в принципе никуда. Унынение – главный враг любого развития.
Капец, я, как всегда, под конец видео ударяюсь в никому не нужную диванную философию. Всё короче. До новых встреч, мои кайфные друже. Всем пока.
Материал из РУВИКИ — свободной энциклопедии
| Windows | |
|---|---|
| Рабочий стол Windows 11 |
|
| Разработчик | Microsoft |
| Исходный код | Закрытый исходный код / Shared source |
| Первый выпуск | Windows 1.0x (20 ноября 1985) |
| Последняя версия | Windows 11 (5 октября 2021) |
| Последняя тестовая версия |
|
| Метод обновления | Центр обновления Windows |
| Менеджеры пакетов | Установщик Windows и Microsoft Store |
| Поддерживаемые языки | Многоязычная |
| Поддерживаемые платформы | IA-32, x86-64, ARM, ARM64 |
| Тип ядра | Гибридное ядро |
| Интерфейс | Windows Runtime, Windows API, .NET Framework, Универсальная платформа Windows, .NET Compact Framework, .NET, Windows Forms и Windows Presentation Foundation |
| Лицензия | Microsoft EULA |
| Состояние | Актуальное |
| Предыдущая | MS-DOS |
| Веб-сайт | support.microsoft.com/ru… |
| Медиафайлы на РУВИКИ.Медиа |
Запрос «WIN» перенаправляется сюда; см. также другие значения.
Windows ([ˈwindəʊz]; с англ. — «Окна», сокр. Win) — семейство многозадачных операционных систем с графическим интерфейсом, выпускаемых корпорацией Microsoft. Работает на таких платформах, как IA-32, x86-64, ARM, ARM64 и др.
Первая операционная система Microsoft — Windows 1.0x — представляла графическую оболочку операционной системы MS-DOS. По состоянию на осень 2023 года последняя операционная система Microsoft — Windows 11[1].
Согласно данным ресурса StatCounter, на март 2023 года Windows — самая популярная операционная система в мире (доля на мировом рынке — 70 %)[2]. Однако она не является наиболее используемой операционной системой из-за распространённости Android[3].
Версии
За свою историю корпорация Microsoft выпустила не меньше 30 основных версий Windows.
В таблицу включены как активные (поддерживаемые) программные продукты, так и устаревшие согласно действующему регламенту жизненного цикла программного обеспечения. За первоначальным Windows следует (необязательно) брендовое название версии, затем номер релиза или его год. Для десктопных версий брендовое название часто пропущено, например WIndows 98 или Windows 10.
Условные обозначения:
- RTM — окончание поддержки первого обновления
- осн. — окончание действия лицензии для первого (основного) релиза
- SBL — окончание срока лицензии для производителей[4]
- retail — окончание срока лицензии для розничных покупателей
- SPx — окончание срока лицензии для различных дополнений (сервис-паков) к системе
- ext — полное окончание поддержки системы
- платный — платные окончание поддержки системы
Версии Microsoft Windows
| Дата выхода | Название | Последняя версия | Дата прекращения поддержки[5] | Последняя версия встроенного браузера | Последняя версия DirectX | Семейство |
|---|---|---|---|---|---|---|
| 20 ноября 1985 | Windows 1.0x | 1.04 (апрель 1987) | 31 декабря 2001 | Нет браузеров | N/A | Оболочка для MS-DOS |
| 9 декабря 1987 | Windows 2.0 Windows 2.1x |
2.11 (13 марта 1989) | 31 декабря 2001 | |||
| 1 мая 1990 (RTM)
22 мая 1990 (продаж) |
Windows 3.0 | 3.00a (31 октября 1990) | 31 декабря 2001 | |||
| 10 марта 1992 (RTM)
6 апреля 1992 (продаж) |
Windows 3.1 | 3.11 | 31 декабря 2001 | Internet Explorer 5 | ||
| 1 октября 1992 | Windows для рабочих групп 3.1 | 3.11 (31 декабря 1993) | 31 декабря 2001 | |||
| 24 июля 1993 (RTM)
27 июля 1993 (продаж) |
Windows NT 3.1 | 3.10.528 SP3 (10 ноября 1994) | 31 декабря 2001 | Windows NT | ||
| 4 сентября 1994 (RTM)
21 сентября 1994 (продаж) |
Windows NT 3.5 | 3.50.807 SP3 (21 июня 1995) | 31 декабря 2001 | |||
| 31 января 1994 | Windows 95 Plus | 3.50.807 SP3 (21 июня 1995) | 31 декабря 2001 | |||
| 27 мая 1995 (RTM)
30 мая 1995 (продаж) |
Windows NT 3.51 | 3.51.1057 SP5 (19 сентября 1996) | 31 декабря 2001 | 6.1 | Windows NT | |
| 11 июля 1995 (RTM)
24 августа 1995 (продаж) |
Windows 95 | 4.00.950C (4.03.1214) (26 ноября 1997) | 31 декабря 2000 (осн) 31 декабря 2001 (ext) |
Internet Explorer 5.5 | 6.1 | Windows 9x |
| 3 августа 1996 (RTM)
24 августа 1996 (продаж) |
Windows NT 4.0 | 4.00.1381 / SP6a SRP (26 июля 2001) | 31 декабря 2001 (осн.) 30 июня 2003 (SBL) 11 января 2005 (ext) |
Internet Explorer 6 | N/A | Windows NT |
| 12 мая 1998 (RTM)
25 июня 1998 (продаж) |
Windows 98 | 4.10.2222A (SE) (5 мая 1999) | 13 января 2004 (осн.) 31 марта 2004 (SBL) 11 июля 2006 (ext) |
9.0c | Windows 9x | |
| 7 декабря 1999 (RTM) 17 февраля 2000 (продажи) |
Windows 2000 | 5.0.2195 / 5.0 SP4 Rollup 1 v2 (13 сентября 2005) | 31 марта 2004 (retail) 31 марта 2005 (SBL) 12 июля 2005 (осн) 13 июля 2010 (ext) |
Windows NT | ||
| 12 июля 2001 | Windows Whistler | RTM | 8 апреля 2008 | |||
| 17 августа 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) 9 апреля 2019 (для банкоматов и специализированных устройств) |
Internet Explorer 8 | ||
| Май 2001 | Windows Longhorn | RTM | Ноябрь 2006 | Internet Explorer 9 | ||
| 25 октября 2001 | Windows XP Plus! | 9 января 2007 (осн.) 10 января 2012 (ext) |
Internet Explorer 8 | |||
| 28 марта 2003 | Windows XP 64-bit Edition | 5.2.3790 | 14 апреля 2009 (осн.) 8 апрель 2014 (ext) |
Internet Explorer 6 | ||
| 29 мая 2003 | Windows Server 2003 | 5.2.3790.3959 SP2 (13 марта 2007) | 30 июня 2009 (RTM) 13 июля 2010 (осн.) 14 июля 2015 (ext) |
Internet Explorer 8 | ||
| 25 апреля 2005 | Windows XP Professional x64 Edition | 5.2.3790.3959 SP2 (13 марта 2007) | 30 июня 2008 (retail) 31 января 2009 (SBL) 14 апреля 2009 (осн.) 8 апрель 2014 (ext) |
11 | ||
| 20 января 2006 | Windows Blackcomb | RTM | 14 июля 2009 | 9.0c | ||
| 4 марта 2006 | Windows Server 2003 R2 | 5.2.3790.3959 SP2 (13 марта 2007) | 30 июня 2009 (RTM) 13 июля 2010 (осн.) 14 июля 2015 (ext) |
Internet Explorer 8 | ||
| 1 ноября 2006 (RTM) 25 января 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) |
Internet Explorer 9 | ||
| 16 июля 2007 | Windows Home Server | 5.2.4500 (16 июля 2007) | 8 января 2013 (ext) | Internet Explorer 8 | ||
| 17 июля 2007 | Windows Vienna | RTM | 14 июля 2009 | |||
| 27 февраля 2008 | Windows Server 2008 или Windows Longhorn Server | 6.0.6002 / SP2 build 6002 (25 мая 2009) | 12 июля 2011 (SP1) 13 января 2015 (осн) 14 января 2020 (ext) 10 января 2023 (платный) 9 января 2024 (бесплатный в Microsoft Azure) |
Internet Explorer 9 | 11 | |
| 13 июля 2009 (RTM) 25 октября 2009 (продажи) |
Windows 7 | 6.1.7601.25895 (12 марта 2022) | 9 апреля 2013 (RTM) 13 января 2015 (осн.) 14 января 2020 (ext.) 10 января 2023 (платный) 12 октября 2023 (платный, для редакции Windows Embedded 7 Standard) 8 октября 2024 (платный, для редакции Windows Embedded POSReady 7) |
Internet Explorer 11 / Microsoft Edge (только Chromium) | ||
| 22 июля 2009 (RTM) 22 октября 2009 (продажи) |
Windows Server 2008 R2 или Windows Server 7 | 6.1.7601 / SP1 Build 7601 (22 февраля 2011) | 13 января 2015 (осн) 14 января 2020 (ext)) 10 января 2023 (платный) 9 января 2024 (бесплатный в Microsoft Azure) |
Internet Explorer 9 / Microsoft Edge (только Chromium) | ||
| 6 апреля 2011 | Windows Home Server 2011 | 6.1.8400 | 12 апреля 2016 (ext) | |||
| 1 августа 2012 (RTM) 4 сентября 2012 (продажи) |
Windows Server 2012 или Windows Server 8 | 6.2.9200 (26 октября 2012) | 9 октября 2018 (осн) 10 октября 2023 (ext) 13 октября 2026 (платный) |
Internet Explorer 11 / Microsoft Edge (только Chromium) | 11.1 | |
| 23 августа 2012 (RTM)
26 октября 2012 (продажи) |
Windows RT | 9 января 2018 (осн)
10 января 2023 (ext) |
Internet Explorer 11/ Microsoft Edge | |||
| 25 июля 2012 (RTM) 26 октября 2012 (продажи) |
Windows 8 | 6.2.9200 (26 октября 2012) | 12 января 2016 (RTM) | |||
| Windows Embedded 8 Standard: | 10 июля 2018 (осн) 11 июля 2023 (ext) |
Internet Explorer 11/ Microsoft Edge (только Chromium) | ||||
| 21 августа 2013 (RTM) 26 ноября 2013 (продажи) |
Windows Server 2012 R2 или Windows Server Blue | 6.3.9600 (17 октября 2013) | 9 октября 2018 (осн) 10 октября 2023 (ext) 13 октября 2026 (платный) |
Internet Explorer 11 / Microsoft Edge (только Chromium) | 11.2 | |
| 21 августа 2013 (RTM) 12 ноября 2013 (продажи) |
Windows 8.1 | 6.3.9600 (17 октября 2013) | 9 января 2018 (осн.) 10 января 2023 (ext) |
|||
| Windows Embedded 8.1 Industry: | 10 июля 2018 года (осн.) 11 июля 2023 года (ext) |
|||||
| 9 июля 2015 (RTM) 29 июля 2015 (продажи) |
Windows 10 | 22H2 (18 октября 2022) | 13 октября 2020 (RTM) 14 октября 2025 (осн.) 12 января 2027 (осн.) 13 января 2032 (ext) для редакции Windows 10 LTSC 2021 |
Microsoft Edge / Internet Explorer 11 (оставлен для совместимости) | 12 | |
| 29 сентября 2016 (RTM) 15 октября 2016 (продажи) |
Windows Server 2016 или Windows Server 10 | 1607 (10.0.14393) (26 сентября 2016) | 11 января 2022 (осн.) 12 января 2027 (ext.) |
Internet Explorer 11 / Microsoft Edge (только Chromium) | ||
| 14 августа 2018 (RTM) 13 ноября 2018 (продажи) |
Windows Server 2019 или Windows Server 10 | 1809 (10.0.17763) (11 ноября 2018) | 9 января 2024 (осн.) 9 января 2029 (ext.) |
|||
| 24 июня 2021 (RTM)
17 августа 2021 (продажи) |
Windows Server 2022 или Windows Server 10 | RTM (1 сентября 2021) | 13 октября 2026 (осн.) 14 октября 2031 (ext.) |
|||
| 24 июня 2021 (RTM)
5 октября 2021 (продажи) |
Windows 11 | 22H2 (22621.1344) (14 марта 2023) | 12 января 2027 (осн.) 13 января 2032 (ext) |
Microsoft Edge | 13 |
Семейства
Все версии Windows классифицируются на семейства (и подсемейства): активные (Windows NT и Windows IoT) и устаревшие (Windows 9x, Windows Mobile и Windows Phone). Каждое семейство предназначено для конкретного сектора компьютерной индустрии: Windows NT — для потребителей, Windows Server — для серверов, Windows IoT — для специализированных устройств и т. д.
Графические интерфейсы и расширения для DOS
Логотип первых версий Windows
Первые версии Windows не были полноценными операционными системами, а представляли собой надстройки над операционной системой DOS. Они добавляли новые режимы работы процессора, многозадачность, стандартизировали интерфейсы аппаратного обеспечения и поддерживали единообразие пользовательских интерфейсов программ.
Для создания графического интерфейса использовались встроенные средства GDI и USER. Первые версии Windows состояли из трёх модулей: KERNEL, GDI и USER. KERNEL управлял памятью, запускал исполняемые файлы и загружал динамические библиотеки DLL. GDI отвечал за графику, а USER — за окна. Эти версии Windows работали на процессорах Intel 8086 и выше.
Список версий:
- Windows 1.0 (1985)
- Windows 2.0 (1987) — в системе появилась возможность запуска DOS-приложений в графических окнах, причём каждому приложению предоставлялись полные 640 КБ памяти. Улучшена поддержка процессоров 80286. В версии 2.03 (2.0/386) появилась поддержка процессоров 80386[6][7]
- Windows 2.1 (1988) — полная поддержка всех особенностей процессоров 80286 и 80386
- Windows 3.0 (1990) — улучшена поддержка процессоров 80386 и защищённого режима
- Windows 3.1 (1992) — серьёзно переработанная Windows 3.0: устранены UAE (фатальные ошибки прикладных программ), добавлен механизм OLE, печать в режиме WYSIWYG («что видишь, то и получишь»), шрифты TrueType, изменён диспетчер файлов, добавлены мультимедийные функции. Прекращена поддержка процессора 8086 и реального режима[8]
- Windows 3.2 (1994) — китайская версия Windows 3.1. Обновление было ограничено, поскольку оно исправляло только проблемы, связанные со сложной системой написания в китайском языке[9]
- Windows for Workgroups 3.11 (1993) — Windows для рабочих групп, первая версия ОС семейства с поддержкой локальных сетей. В системе также испытывались отдельные усовершенствования ядра, применённые позднее в Windows 95. С этой версии прекратилась поддержка процессора 80286 и стандартного режима
Windows 9x
Логотип первой системы семейства Windows 9x
Windows 9x — устаревшее семейство компьютерных операционных систем Microsoft Windows, которые выпускались с 1995 по 2000 год и были основаны на ядре Windows 95 и лежащей в его основе MS-DOS.
Система Windows 95 была выпущена в 1995 году и является первой в данном семействе[5][10][11]. Она отличалась новым пользовательским интерфейсом, поддержкой длинных имён файлов, автоматической конфигурацией периферийных устройств Plug and Play, возможностью запускать 32-битные приложения и наличием поддержки TCP/IP в системе. Windows 95 использовала вытесняющую многозадачность и каждое 32-битное приложение выполняла в своём адресном пространстве. К данному семейству также относятся Windows 98[5] и Windows Me[12][13].
Логотип второй системы семейства Windows 9x
Из соображений совместимости вся подсистема пользовательского интерфейса и графики оставалась 16-битной и мало отличалась от той, что была в Windows 3.x, в связи с чем операционные системы этого семейства не отличались безопасностью. Вследствие этого все вызовы в подсистему оборачивались в мьютекс по имени Win16Lock, который ещё и находился всегда в захваченном состоянии во время исполнения 16-битного приложения. В результате если 16-битное приложение зависало, то это немедленно блокировало всю операционную систему. Однако в 1999 году вышло второе исправленное издание.
Программный интерфейс был частью Win32 API, поддерживаемым Windows NT, поддерживаемой Windows NT, но его поддержка Юникода была очень ограниченной[14]. Кроме того, он не обладал должным уровнем безопасности (отсутствовали списки доступа к объектам и понятие «администратор»).
Windows 95 включала MS-DOS 7.0, но её функции сводились к загрузке и выполнению 16-битных DOS-приложений. Ядро Windows 95 — VMM — использовало DOS только для некоторых обращений, а главная функция DOS — файловая система FAT — не использовалась. Интерфейс между VMM и DOS никогда не публиковался, и Эндрю Шульман (автор книги «Недокументированный Windows 95») обнаружил недокументированные вызовы DOS, которые использовались только для поддержки VMM.
Список версий:
- Windows 95 (24 августа 1995 года) — в этой ОС появились кнопка «Пуск», панель задач и кнопки закрытия окон, а также возможности Интернета
- Windows 98 (25 июня 1998 года) — первая система, созданная специально для домашних пользователей, которая содержала улучшенный поиск информации на ПК и в Интернете, поддерживала DVD и USB, имела панель быстрого запуска программ. Последняя система, основанная на MS-DOS
- Windows 98 SE (Second Edition) (9 мая 1999 года)
- Windows ME (2000) — обладала улучшенным воспроизведением видео и музыки, повышенной надёжностью и System Restore, с Windows Media Player и Windows Movie Maker
Windows NT
Windows NT (аббр. от англ. New Technology) — семейство операционных систем, работающих на процессорах с архитектурами x86, x86-64, ARM[15][16]. До версии 4.0 включительно Windows поддерживала процессоры Alpha, MIPS и PowerPC. Все операционные системы этого семейства являются полностью 32- или 64-битными и не нуждаются в MS-DOS даже для загрузки. Только в этом семействе есть операционные системы для серверов. До версии Windows 2000 включительно они выпускались под тем же названием, что и аналогичная версия для рабочих станций, но с добавлением суффикса, например «Windows NT 4.0 Server» и «Windows 2000 Datacenter Server». Начиная с Windows Server 2003 серверные операционные системы называются добавлением суффикса «Server» и года выпуска.
Семейство Windows NT базируется на разделении адресных пространств между процессами, что позволяет каждому процессу работать с выделенной ему памятью. Однако он не может записывать данные в память других процессов, драйверов и системного кода.
Операционные системы семейства Windows NT относятся к ОС с вытесняющей многозадачностью. При этом процессорное время разделяется между потоками по принципу «карусели», где каждому потоку выделяется квант времени (в Windows 2000 — около 20 мс), если все потоки имеют одинаковый приоритет. Если поток отказывается от выделенного ему кванта времени, система перехватывает управление и передает его другому потоку, сохраняя при этом состояние всех регистров процессора в специальной структуре в оперативной памяти — контексте потока. Этого достаточно для возобновления работы потока в будущем.
Список версий:
- Windows NT 3.1 (1993)
- Windows NT 3.5 (1994)
- Windows NT 3.51 (1995)
- Windows NT 4.0 (1996)
- Windows 2000 — Windows NT 5.0 (2000)
- Windows XP[5][17] — Windows NT 5.1 (2001)
- Windows XP 64-bit Edition — Windows NT 5.2 (2003)
- Windows Server 2003 — Windows NT 5.2 (2003)
- Windows XP Professional x64 Edition — Windows NT 5.2 (2005)
- Windows Home Server — Windows NT 5.2 (2007)
- Windows Vista — Windows NT 6.0 (2007)
- Windows Server 2008 — Windows NT 6.0 (2008)
- Windows Small Business Server — Windows NT 6.0 (2008)
- Windows 7[18][19] — Windows NT 6.1 (2009)
- Windows Server 2008 R2 — Windows NT 6.1 (2009)
- Windows Home Server 2011 — Windows NT 6.1 (2011)
- Windows 8[20][21][22][23][24][25] — Windows NT 6.2 (2012)
- Windows Server 2012 — Windows NT 6.2 (2012)
- Windows 8.1[26] — Windows NT 6.3 (2013)
- Windows Server 2012 R2 — Windows NT 6.3 (2013)
- Windows 10[27][28][29][30] — Windows NT 10.0 (2015)[31][32][33]
- Windows Server 2016 — Windows NT 10.1 (2016)
- Windows Server 2019 — Windows NT 10.2 (2019)
- Windows 11 — Windows NT 10.0.22000 (2021)
- Windows Server 2022 — Windows NT 10.3 (2021)
Семейство мобильных операционных систем Microsoft Windows
Операционные системы реального времени данного семейства специально разработаны для мобильных устройств и поддерживают процессоры ARM, MIPS, SuperH и x86. В отличие от остальных операционных систем Windows эти системы продаются только вместе с готовыми устройствами: смартфонами, карманными персональными компьютерами, GPS-навигаторами, MP3-проигрывателями и др. Под термином Windows CE понимают только ядро операционной системы. Например, Windows Mobile 5.0 включает ядро Windows CE 5.0. Windows Phone и Windows 10 Mobile неактуальны в связи с тем, что уступили популярность Android и iOS.
Список версий:
- Windows CE
- Windows Mobile
- Windows Phone
- Windows 10 Mobile
Windows IoT
Windows IoT (ранее — Windows Embedded) — семейство операционных систем реального времени, специально разработанных для использования в качестве встраиваемых систем. Данные ОС имеют такое же ядро, как и версии семейства Windows CE, и поддерживают процессоры ARM, MIPS, SuperH и x86. Windows IoT включает дополнительные функции по встраиванию, такие как фильтр защиты от записи (EWF и FBWF), возможность загрузки с флеш-памяти, CD-ROM, сети, использование собственной оболочки системы и т. д.
Операционные системы данного семейства не продаются отдельно: они поставляются только вместе с готовыми устройствами, такими как банкоматы, медицинские приборы, навигационное оборудование, «тонкие» клиенты, VoIP-терминалы, медиапроигрыватели, цифровые рамки (альбомы), кассовые терминалы, платёжные терминалы, роботы, игровые автоматы, музыкальные автоматы и др.
Список версий[34]:
- Windows Embedded CE
- Windows Embedded Standard
- Windows Embedded POSReady
- Windows Embedded Enterprise
- Windows Embedded Industry
- Windows Embedded NavReady
- Windows Embedded Handheld
- Windows Embedded Server
- Windows 10 IoT Core
- Windows 10 IoT Core Services
- Windows 10 IoT Enterprise
Windows Server
Windows Server — семейство серверных систем, предназначенных для использования на серверных компьютерах и ноутбуах.
Логотип Windows Server 2008
Логотип Windows Server 2022
Список версий:
- Windows Server 2003
- Windows Server 2003 R2
- Windows Home Server 2007
- Windows Server 2008
- Windows Server 2008 R2
- Windows Home Server 2011
- Windows Server 2012
- Windows Server 2012 R2
- Windows Server 2016
- Windows Server 2019
- Windows Server 2022
Windows Azure
Windows Azure — облачная операционная система компании Microsoft, предназначенная для разработки и запуска веб-приложений, которые выполняются на сервере поставщика, а не на компьютере пользователя. Входит в состав платформы Microsoft Azure[35].
Интегрированные программные продукты
В пакет Windows входят стандартные приложения[36], такие как браузер (Internet Explorer и Microsoft Edge), почтовый клиент (Outlook Express или Почта Windows), музыкальный и видеопроигрыватель (Проигрыватель Windows Media). Их компоненты могут использоваться в приложениях сторонних производителей с помощью технологий COM и OLE. Начиная с Windows 98 и более новых версий эти продукты являются неотъемлемой частью системы (ранее их можно было бесплатно скачать с официального сайта Microsoft, но для установки некоторых из них требовалась лицензионная версия ОС). Запуск этих программ под другими операционными системами возможен только с помощью эмуляторов среды Windows (Wine).
Список основных стандартных приложений:
- Paint
- WordPad
- Блокнот
- Internet Explorer
- Звукозапись
- Калькулятор
- Командная строка
- Подключение к удалённому рабочему столу
- Проводник
- Центр синхронизации
- Windows Power Shell
Microsoft Plus!
Коммерческий продукт, дополняющий возможности Microsoft Windows. Последней редакцией была Plus! SuperPack, которая включала заставки, темы, игры и мультимедийные приложения. Microsoft Plus! впервые был анонсирован 31 января 1994 года под кодовым названием Frosting[37]. Поддержка была прекращена в пользу Ultimate Extras для Windows Vista и Windows 7.
Популярность
Согласно данным ресурса StatCounter, на март 2023 года Windows — самая популярная операционная система в мире (доля на мировом рынке — 70 %)[2]. Среди достоинств операционных систем Microsoft Windows пользователи выделяют следующие[38]:
- простота использования;
- наличие разнообразного программного обеспечения сторонних производителей (AutoCAD, Photoshop и др.);
- игровая платформа;
- персонализация (частичная);
- автоматические обновления;
- драйверы для периферийных устройств и др.
На июнь 2019 года ОС Windows была установлена не менее чем на 88,5 % персональных компьютеров и рабочих станций. По данным компании Net Applications, на июнь 2019 года рыночная доля Windows составила 88,33 %. Среди различных версий Windows, по данным W3Schools, с июля 2017 года наиболее популярна Windows 10[39] (около 37 %). На февраль 2019 года доля мобильных версий Windows составила 0,16 %, версий для ПК — 74,0 %[39][40].
Популярность различных версий Windows по данным статистических агрегаторов, %[41][42]
| Версия | Net Market Share, август 2014 |
GoStats.ru, август 2015 |
Февраль 2016 | Апрель 2016 | StatCounter | |||||||
| Net Market Share | GoStats.ru | Net Applications | StatCounter[43] | Ноябрь 2017 | Март 2019 | Декабрь 2020 | Июнь 2022 | Март 2023 | Апрель 2023 | |||
| Все версии | 91,68 | 84,76 | 88,66 | 90,10 | 88,77 | 83,29 | 76,50 | 74,21 | 77,10 | 75,50 | 74,14 | 69,43 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Windows 11 | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | 10,96 | 18,13 | 20,94 |
| Windows 10 | N/A | 2,87 | 12,82 | 29,66 | 15,34 | 18,88 | 40,95 | 54,78 | 75,96 | 71,76 | 68,75 | 73,48 |
| Windows 8 | 12,48 | 33,67 | 12,26 | 20,76 | 13,04 | 13,37 | 9,03 | 6,55 | 3,98 | 3,07 | 2,31 | 0,84 |
| Windows 7 | 51,22 | 40,63 | 52,34 | 32,07 | 47,82 | 43,95 | 42,67 | 33,89 | 17,68 | 13,06 | 9,62 | 3,72 |
| Windows XP | 23,89 | 6,55 | 11,24 | 7,42 | 10,63 | 7,09 | 3,89 | 1,97 | 0,79 | 0,40 | 0,40 | 0,40 |
По данным группы компаний Softline, в течение первого полугодия 2023 года продажи цифровых копий операционных систем Windows на российском рынке сократились на 78 % по сравнению с аналогичным периодом предыдущего года. Продажи коробочных версий Windows в РФ в годовом исчислении упали в 10 раз. Наблюдающаяся ситуация объясняется импортозамещением в сфере программного обеспечения в условиях сложившейся геополитической обстановки. В Softline отмечают, что по состоянию на август 2023 года распродаются складские остатки Windows и постепенно реализуется процесс отключения возможности приобретения ОС через Интернет[44].
Интересные факты
- В Windows нельзя создать папки con, prn, aux, nul, так как эти слова были зарезервированы для обозначения устройств ввода-вывода.
- На рекламу Windows 95 было потрачено более $300 млн.
- Создатели Windows разработали компьютерную версию игры Реверси для обучения пользователей обращению с мышкой посредством кликов по фишкам. Существует мнение, что для этих же целей была сделана игра «Сапёр»[45].
См. также
- Microsoft
- Билл Гейтс
- Пионеры Windows
- Windows API
- Проводник Windows
- Многозадачность
- Windows Script Host
Примечания
- ↑ Представлена Windows 11. Вести.Ру (24 июня 2021). Дата обращения: 9 октября 2023. Архивировано 5 октября 2021 года.
- ↑ 1 2 Desktop Operating System Market Share Worldwide (англ.). Statcounter GlobalStats. statcounter.com. Дата обращения: 9 октября 2023.
- ↑ Microsoft Gets Real, Admits Its Device Share is Just 14 % (англ.). ComputerWorld. computerworld.com. Дата обращения: 9 октября 2023.
- ↑ Лицензирование для сборщиков систем OEM. Дата обращения: 9 октября 2023. Архивировано 19 апреля 2014 года.
- ↑ 1 2 3 4 Политика жизненного цикла поддержки Microsoft. Дата обращения: 9 октября 2023. Архивировано 24 января 2018 года.
- ↑ The Apple vs. Microsoft GUI Lawsuit | Low End Mac. Дата обращения: 9 октября 2023. Архивировано 28 июня 2018 года.
- ↑ APPLE COMPUTER, INC. v. MICROSOFT CORP., 35 °F.3d 1435 (9th Cir. 1994). Дата обращения: 9 октября 2023. Архивировано из оригинала 14 декабря 2007 года.
- ↑ Поиск сведений о жизненном цикле продуктов и служб. Microsoft Ignite. learn.microsoft.com. Дата обращения: 9 октября 2023.
- ↑ Microsoft Windows Simplified Chinese 3.2 Upgrade is Available (англ.). Microsoft: Help and Support. support.microsoft.com. Дата обращения: 9 октября 2023. Архивировано 8 ноября 2006 года.
- ↑ Windows 95 turns 15: Has Microsoft’s OS peaked? — CNN.com. Дата обращения: 9 октября 2023. Архивировано 28 апреля 2019 года.
- ↑ Microsoft Internet Explorer Web Browser Available on All Major Platforms, Offers Broadest International Support | Stories. Дата обращения: 9 октября 2023. Архивировано 15 января 2008 года.
- ↑ Improving “Cold Boot” Time for System Manufacturers (англ.). Microsoft. microsoft.com (4 декабря 2001). Дата обращения: 9 октября 2023. Архивировано 13 января 2010 года.
- ↑ Windows Millennium Edition: All About Me (англ.). PCWorld. pcworld.com (24 июля 0200). Дата обращения: 9 октября 2023. Архивировано 1 августа 2013 года.
- ↑ Unicode support in Windows 95 and Windows 98. Дата обращения: 9 октября 2023. Архивировано 8 октября 2009 года.
- ↑ Inside Windows NT — Helen Custer — Google Книги. Дата обращения: 9 октября 2023. Архивировано 28 июня 2018 года.
- ↑ Paul Thurrott. Windows Server 2003: The Road To Gold Part One: The Early Years (англ.). Paul Thurrott’s SuperSite for Windows. winsupersite.com (24 января 2003). Дата обращения: 9 октября 2023. Архивировано 1 января 2005 года.
- ↑ Microsoft Windows XP — Home Edition review: Microsoft Windows XP — Home Edition — CNET. Дата обращения: 9 октября 2023. Архивировано 24 июня 2018 года.
- ↑ Windows 7 Unveiled Today at PDC 2008 — Windows Experience Blog. Дата обращения: 9 октября 2023. Архивировано 1 ноября 2008 года.
- ↑ How Libraries & HomeGroup Work Together in Windows 7 — Windows Experience Blog. Дата обращения: 9 октября 2023. Архивировано 2 ноября 2008 года.
- ↑ Test Driving Windows 8 RTM | PCWorld. Дата обращения: 9 октября 2023. Архивировано 21 сентября 2018 года.
- ↑ Matt Rosoff. Here’s Everything You Wanted To Know About Microsoft’s Upcoming iPad Killers Read (англ.). Business Insider. articles.businessinsider.com (9 февраля 2012). Дата обращения: 9 октября 2023. Архивировано 22 января 2013 года.
- ↑ Brandon LeBlanc. Blogging Windows: Announcing the Windows 8 Editions (англ.). Wndows. windowsteamblog.com. Дата обращения: 9 октября 2023. Архивировано 18 апреля 2012 года.
- ↑ Building Windows for the ARM processor architecture — Building Windows 8. Дата обращения: 9 октября 2023. Архивировано 21 мая 2018 года.
- ↑ Microsoft talks Windows Store features, Metro app sandboxing for Windows 8 developers — The Verge. Дата обращения: 9 октября 2023. Архивировано 10 сентября 2012 года.
- ↑ Build: More Details On Building Windows 8 Metro Apps | PCMag.com. Дата обращения: 9 октября 2023. Архивировано из оригинала 17 февраля 2012 года.
- ↑ Windows 8.1 now available! — Windows Experience Blog. Дата обращения: 9 октября 2023. Архивировано 3 ноября 2019 года.
- ↑ Announcing Windows 10 — Windows Experience Blog. Дата обращения: 9 октября 2023. Архивировано 10 сентября 2015 года.
- ↑ Windows 10 1511 Build 10586 November Update Is Out, Here’s How To Update Now | Redmond Pie. Дата обращения: 9 октября 2023. Архивировано 3 января 2016 года.
- ↑ What’s New in Windows 10’s First Big November Update. Дата обращения: 9 октября 2023. Архивировано 28 июня 2018 года.
- ↑ Windows switch to Git almost complete: 8,500 commits and 1,760 builds each day | Ars Technica. Дата обращения: 9 октября 2023. Архивировано 24 мая 2017 года.
- ↑ Microsoft Confirms that Windows 10 will also be Version 10 Internally | Windows 10 content from SuperSite for Windows. Дата обращения: 9 октября 2023. Архивировано из оригинала 16 октября 2017 года.
- ↑ Microsoft Confirms Windows 10 Kernel Version Update to 10.0 — Softpedia. Дата обращения: 9 октября 2023. Архивировано 9 октября 2015 года.
- ↑ Microsoft confirms that Windows 10 kernel will be 10.0. Дата обращения: 9 октября 2023. Архивировано 5 марта 2016 года.
- ↑ What is Windows Embedded. Дата обращения: 9 октября 2023. Архивировано 18 сентября 2009 года.
- ↑ Знакомство с Azure. Azure. azure.microsoft.com. Дата обращения: 9 октября 2023.
- ↑ Загрузки для Windows. windows.microsoft.com. Дата обращения: 9 октября 2023. Архивировано 26 июня 2013 года.
- ↑ Consumer Companion for Windows 98 Offers Powerful New Utilities Desktop Themes and Exciting Games (англ.). Microsoft. microsoft.com (10 февраля 2009). Дата обращения: 9 октября 2023. Архивировано 10 февраля 2009 года.
- ↑ Достоинства и недостатки операционной системы. Достоинства и недостатки операционной системы Windows. BiathlonMordovia. biathlonmordovia.ru. Дата обращения: 9 октября 2023.
- ↑ 1 2 OS Platform Statistics. w3schools.com. Дата обращения: 9 октября 2023. Архивировано 7 июня 2018 года.
- ↑ Mobile Devices Statistics. www.w3schools.com. Дата обращения: 9 октября 2023. Архивировано 10 апреля 2019 года.
- ↑ Market Share Statistics for Internet Technologies (англ.). Net Marketshare. netmarketshare.com. Дата обращения: 9 октября 2023.
- ↑ Net Applications (англ.). Net Applications. netapplications.com. Дата обращения: 9 октября 2023.
- ↑ StatCounter Global Stats — Browser, OS, Search Engine including Mobile Usage Share (англ.). gs.statcounter.com. Дата обращения: 9 октября 2023. Архивировано 26 мая 2012 года.
- ↑ Продажи цифровых копий и коробочных версий Windows от Microsoft резко упали в России. Forbes. forbes.ru (30 августа 2023). Дата обращения: 9 октября 2023.
- ↑ Windows — что это такое? Internet-lab.ru. internet-lab.ru (9 сентября 2009). Дата обращения: 9 октября 2023.
Литература
- Ливингстон Б., Таррот П. Секреты Microsoft Windows Vista = Windows Vista Secrets. — М.: Диалектика, 2007. — С. 456. — ISBN 0-7645-7704-2.
- Мак-Федрис П. Microsoft Windows 7. Полное руководство = Microsoft Windows 7 Unleashed. — М.: Вильямс, 2012. — С. 800. — ISBN 978-5-8459-1614-3.
- Томашевский Д. Microsoft Windows 8. Руководство пользователя = Microsoft Windows 8. Руководство пользователя. — Вильямс, 2013. — С. 352. — ISBN 978-5-8459-1827-7.
Ссылки
- http://windows.microsoft.com/ru-ru/windows/home — официальный сайт Windows
- Центр загрузки Майкрософт: Windows
- Официальный блог Windows. Дата обращения: 9 октября 2023.
