Время на прочтение11 мин
Количество просмотров84K
Несколько дней назад в сеть просочился образ ранней версии Windows 11. Различные издательства провели тесты по производительности и пришли к неутешительному выводу: Windows 11 в среднем работает хуже, чем Windows 10. Но расстраиваться рано! Проблемы производительности могут быть связаны с «сыростью» слитого образа и нюансами совместимости с текущими программами. Так или иначе, 24 июня состоится официальная презентация нового поколения операционных систем Windows, которая, возможно, даст ответы на многие вопросы. Если сегодня у вас есть настроение для ностальгии, предлагаем вам окунуться в мир Windows: познакомиться с историей, как менялась ось и что у нее внутри.
История Windows
В начале 80 годов прошлого века компания IBM работала над персональным компьютером на базе процессора Intel 8088. С середины 70 годов компания Microsoft была основным поставщиком Basic для восьмибитных микрокомпьютеров. Когда IBM обратилась к Microsoft для лицензирования Basic для их нового компьютера IBM PC, Microsoft согласилась, а также посоветовала обратиться к компании Digital Research для лицензирования операционной системы CP/M. Но, получилось так, что глава Digital Research не нашел в своем графике времени для встречи для IBM, и IBM снова обратилась к Microsoft, теперь уже с просьбой решить вопрос операционной системы для IBM PC. Microsoft купила клон ОС CP/M у компании Seattle Computer Products и перенесла её на IBM PC. Итоговым названием получившейся ОС стало MS-DOS 1.0.
IBM PC
Первые продукты с названием «Windows» от Microsoft не были операционными системами. Это были графические среды для MS-DOS. На фоне успеха, в том числе и коммерческого, пользовательского интерфейса на Apple Lisa, компания решила реализовать графический интерфейс на IBM PC с MS-DOS. В отличии от относительно дешевых IBM PC, Apple Lisa стоили дорого (почти 10 тысяч долларов), и немногие покупатели могли позволить купить их. Microsoft решила занять нишу дешевых компьютеров с графическим интерфейсом. При этом низкая стоимость достигалась экономией на комплектующих и более низкая производительность, по сравнению с Lisa, избежать не получилось. Так, в 1985, 1987 и в 1990 выходят первые три версии Windows — 1.0, 2.0 и 3.0. Причем за первые шесть месяцев после релиза Windows 3.0 было продано более 1 миллиона экземпляров. Дальнейшее развитие Windows можно разделить на два направления — Windows на базе MS-DOS и Windows на базе NT.
Windows 1.01
Windows 9x
Windows на базе MS-DOS или Windows 9x не были первыми ОС от Microsoft, но они продолжали «старые традиции» и были построены на основе 16-битного кода MS-DOS. В августе 1995 года была выпущена Windows 95 — первая система семейства Windows 9x. Она уже была полноценной операционной системой с соответствующими возможностями. Однако у системы были проблемы с безопасностью (например, не было «администратора») и с изоляцией приложений. Зависание 16-битного приложения приводило к блокировке всей системы. Проблемы со стабильностью достались и Windows 98 и Windows ME, которые отличались от выпуска 95 года рядом небольших обновлений.
Windows 95
Windows NT
В целом, к концу 80-х годов в Microsoft появилось понимание о необходимости разработки операционной системы не на базе MS-DOS. Параллельно с разработкой софта, связанного с MS-DOS, Microsoft наняла команду инженеров из компании DEC для разработки новой 32-битной операционной системы. Главой группы стал Дэйв Катлер — один из главных разработчиков ОС VMS. Новая система была названа NT — от сокращения New Technology. Основной упор при разработке NT делался на безопасность и надежность системы, а также на совместимость с Windows на MS-DOS. Так получилось, что опыт при разработке VMS повлиял на NT и сходство между ними стало причиной спора между DEC и Microsoft. По итогу спор был решен во внесудебном порядке.
Дэйв Катлер
Первая система Windows называлась Windows NT 3.1 и была выпущена в 1993 году. Это была первая ОС от Microsoft. Индекс 3.1 был выбран для соответствия Windows 3.1 на MS-DOS. Эта версия не имела особого успеха. Для NT требовалось больше памяти, 32-разрядных приложений на рынке было мало, возникали проблемы с совместимостью драйвером. Достичь поставленных целей смогли в NT 3.5. А первым серьезным обновлением для NT стала версия 4.0 в 96 году. Теперь эта система была мощна, надежна и безопасна, а также обеспечивала тот же интерфейс, что и Windows 95 (которая к тому моменту была чрезвычайно популярной).
Windows NT 3.1
В 2000 году вышла новая версия Windows — Windows 2000. Она развивала идеи, заложенные в системы NT. Был добавлена технология Plug-and-Play, управление электропитанием и улучшен интерфейс пользователя.
Windows 2000
Успех Windows 2000 задал вектор развития для следующего поколения — Windows XP. В «хрюшке» Microsoft улучшила совместимость, интерфейс стал более дружелюбным. Стратегия Microsoft завоевывать аудиторию уже знакомыми системами дала плоды — за несколько лет Windows XP была установлена на сотнях миллионах ПК. Эпоха MS-DOS подошла к концу.
Windows XP
Следующий проект Microsoft пал жертвой собственных амбиций. Через пять лет после Windows XP, в 2006 году на свет вышла Windows Vista. В ней был переделан графический интерфейс, переработаны и добавлены функциональные возможности в плане безопасности. Была улучшена производительность, надежность.
Первоначальные планы Microsoft по поводу Vista были настолько обширны, что через несколько лет после начала разработки проект пришлось сильно ограничить. Vista включала в себе 70 миллионов строк кода, часть которого составлял «причесанный» код XP. Неудача Vista отчасти с тем, что она вышла не в то время. На 2006 год пришелся бум недорогих компьютеров, которые не могли обеспечить достаточную для Vista производительность.
Windows Vista
Проблемы Vista были учтены при разработке Windows 7. Microsoft уделила большее внимание тестированию и производительности новой системы. Windows 7 быстро вытеснила Vista, а затем и XP, став самой популярной версией Windows до появления Windows 10 (сейчас Windows 7 на втором месте по популярности).
Windows 7
Бум смартфонов в начале 2010-х подтолкнул Microsoft к созданию операционной системы, которую можно было бы развернуть на разных устройствах: на телефонах, планшетах, приставках и т. д. В результате этой работы мир узрел Windows 8. «Восьмерка» построена на модульном подходе MinWin для получения небольшого ядра ОС, которое можно было бы расширить на линейку других типов устройств. Но аудитория встретила холодно такой подход. Многие люди критиковали «смартфоноподобный» интерфейс на ПК, отсутствие кнопки пуск. Для решения многих проблем Microsoft выпустила обновление под названием Windows 8.1, которая, помимо исправления имеющихся ошибок, добавила новые функции.
Windows 8.1
И вот, к 2015 году Microsoft выпускает Windows 10. При разработке Microsoft продолжала развитие идеи единой системы для разных устройств. В «десятке» появилась голосовая помощница Кортана, вернули меню «Пуск», улучшена системная безопасность.
Технические аспекты
Чтобы осветить все технические аспекты и тонкости операционной системы Windows понадобится не менее 1000 страниц. Для особо любопытных советуем 7-е издание «Внутреннего устройства Windows« Марка Руссиновича, специалиста по внутреннему устройству Windows. Также можно почитать «Современные операционные системы« Эндрю Таненбаума и «Operating System Concepts«: в обеих книгах есть главы, посвященные Windows. Здесь же ограничимся рассмотрением инструментов взаимодействия приложений пользователя с операционной системой (Windows API) и архитектуры «оси».
Архитектура
Во многих многопользовательских операционных системах сама ОС отделяется от приложений. Код ядра ОС выполняется в привилегированном режиме процессора (режим ядра). Для него доступны системные данные и оборудование. В непривилегированном режиме (пользовательский режим) выполняется код приложений. Ему предоставляется ограниченный набор интерфейсов и ограниченный доступ к системным данным. Прямой доступ к оборудованию заблокирован. При вызове программой пользовательского режима системной функции процессор выполняет специальную команду, переключающую вызывающий поток (последовательность команд внутри процесса, планируемая Windows для исполнения) в режим ядра. Когда системная функция завершается, операционная система переключает контекст потока обратно в пользовательский режим и дает возможность вызывающей стороне продолжить работу.
Windows считается операционной системой с гибридным ядром. С одной стороны компоненты ядра Windows располагаются в вытесняемой памяти и взаимодействуют друг с другом путем передачи сообщений, как в микроядерных системах. С другой стороны ядро слишком велико (более 1 Мбайт), а большая часть кода ОС и кода драйверов устройств использует одно защищенное пространство памяти защищенного режима, что свойственно монолитным ОС. Это означает, что в теории любой компонент ОС или драйвер устройства может повредить данные, используемые другими системными компонентами. В Windows эта проблема решается за счет повышения качества и контроля происхождения сторонних драйверов через такие программы, как WHQL или KMCS. Одновременно применяются дополнительные технологии защиты ядра, такие как безопасность на базе виртуализации, функции Device Guard.
Рассмотрим ключевые системные компоненты, формирующие архитектуру системы. На рисунке ниже представлена упрощенная схема, на которой опущены некоторые элементы, например, сетевые компоненты и различные уровни драйверов. Первое, на что стоит обратить внимание — это линия, разделяющая части пользовательского режима и режима ядра. Как упоминалось выше, потоки пользовательского режима выполняются в закрытом адресном пространстве процессов. На время выполнения в режиме ядра они получают доступ к системному пространству. Таким образом, системные процессы, пользовательские процессы, процессы служб и подсистемы среды обладают собственным закрытыми адресными пространствами.
Упрощенная схема архитектуры Windows
Вторая линия разделяет компоненты режима ядра и гипервизор (Hyper-V). Гипервизор перехватывает многие привилегированные операции, выполняемые ядром, и эмулирует их таким образом, чтобы позволить на одной и той же машине одновременно работать нескольким операционными системам. Гипервизор работает на том же уровне привилегий процессора (0), что и ядро. Но из-за использования специализированных команд процессора (VT-x у процессоров Intel, SVM у АMD) он может изолироваться от ядра с сохранением контроля над ним и приложениями. Поэтому некоторые иногда применяют термин «кольцо -1».
Четыре базовых типа процессов пользовательского режима:
- Пользовательские процессы. Эти процессы относятся к одному из следующих типов: 32- или 64-разрядные приложения Windows (приложения Windows Apps, работающие на базе среды Windows Runtime в Windows 8 и выше, включаются в эту категорию), 16-разрядные приложения Windows 3.1, 16-разрядные приложения MS-DOS, 32- и 64-разрядные приложения POSIX. Заметим, что 16-разрядные приложения могут выполняться только в 32-разрядных версиях Windows, а приложения POSIX в Windows 8 уже не поддерживаются.
- Процессы служб. В эту категорию входят процессы, являющиеся хостами для служб Windows (например, службы планировщика задач и диспетчер печати). Обычно к службам предъявляется требование независимости выполнения от входа пользователя. Многие серверные приложения Windows (например, Microsoft SQL Server и Microsoft Exchange Server) также включают компоненты, выполняемые как службы.
- Системные процессы. Фиксированные процессы, такие как процесс входа или диспетчер сеансов, не являются службами Windows. Другими словами, они не запускаются диспетчером служб.
- Серверные процессы подсистем среды. Такие процессы реализуют часть поддержки среды ОС, предоставляемой пользователю и программисту. Изначально в Windows NT было три подсистемы среды: Windows, POSIX и OS/2. Подсистема OS/2 включалась только до Windows 2000, подсистема POSIX в последний раз была включена в Windows XP.Ultimate- и Enterprise-выпуски клиента Windows 7. Все серверные версии Windows 2008 R2 включают поддержку расширенной подсистемы POSIX, называемой SUA (Subsystem for UNIX-based Applications). Сейчас подсистема SUA не поддерживается и уже не включается как необязательное часть в версии Windows (Windows 10 версии 1607 включает подсистему Windows для Linux — WSL, Windows Subsystem for Linux).
Обратим внимание на блок DLL подсистем под блоками Процессы служб и Пользовательские процессы. В Windows пользовательские приложения не вызывают низкоуровневые сервисные функции операционной системы напрямую. Вместо этого они проходят через одну или несколько динамических библиотек (DLL) подсистем. Их роль состоит в том, чтобы преобразовывать документированные функции в соответствующие внутренние (недокументированные) вызовы системных функций, реализованных в основном в Ntdll.dll. Преобразование может включать (а может не включать) отправку сообщения процессу, обслуживающему пользовательский процесс.
Компоненты режима ядра:
- Исполнительная система. Она содержит базовые сервисные функции ОС: управление памятью, управление процессами и потоками, безопасность, ввод/вывод, сетевая поддержка и межпроцессные коммуникации.
- Ядро Windows. Низкоуровневые функции ОС: планирование потоков, диспетчеризация прерываний и исключений и многопроцессорная синхронизация. Также ядро предоставляет набор функций и базовых объектов, которые используются исполнительной системой для реализации высокоуровневых конструкций.
- Драйверы устройств. Сюда входят как драйверы физических устройств, преобразующие вызовы пользовательских функций ввода/вывода в конкретные запросы ввода/вывода к устройству, так и драйверы устройств, не относящихся к физическому оборудованию, например драйверы файловой системы или сетевые драйверы.
- Слой абстрагирования оборудования (HAL). Прослойка кода, изолирующее ядро, драйверы устройств и прочий исполняемый код Windows от платформенно-зависимых различий в работе оборудования, например различий между системными платами.
- Оконная и графическая система. Реализация функций графического интерфейса (GUI), также известных как функции GDI: работа с окнами, элементы пользовательского интерфейса и графический вывод.
- Уровень гипервизора. Включает всего-навсего один компонент: сам гипервизор. В этой среде нет ни драйверов, ни других модулей. При этом сам гипервизор состоит из нескольких внутренних уровней и служб: собственный диспетчер памяти, планировщик виртуальных процессов, управление прерываниями и таймером, функции синхронизации, разделы (экземпляры виртуальных машин) и внутрипроцессные коммуникации (IPC, Inter-Process Communication) и многие другие.
В таблице ниже представлены некоторые файлы некоторых базовых компонентов Windows:
Windows API
Windows API (Application Programming Interface) — это программный интерфейс пользовательского режима для Windows. До появления 64-разрядной версии операционной системы программный интерфейс 32-разрядных версий Windows назывался Win32 API в отличие от исходного 16-разрядного Windows API (программный интерфейс для исходных 16-разрядных версий Windows). На данный момент термин Windows API или Win32 API относят как к 32-разрядным, так и к 64-разрядным версиям.
В «доисторические времена» Windows API состоял только из функций в стиле C. Выбор языка C был обусловлен тем, что написанный на нем код также мог использоваться из других языков. Он являлся достаточно низкоуровневым для предоставления сервиса ОС. Но огромное количество функций в сочетании с недостаточной последовательностью выбора имен и отсутствием логических группировок (вроде пространств имен C++) привели к тому, что в некоторых новых API используется другой механизм — модель COM.
COM базируется на двух основных принципах. Во-первых, клиенты взаимодействуют с объектами (серверные объекты COM) через интерфейсы — четко определенные контракты с набором логически связанных методов, сгруппированных посредством механизма диспетчеризации по виртуальным таблицам. Такой же механизм, к слову, обычно применяется компиляторами C++ для реализации диспетчеризации виртуальных функций. Таким образом обеспечивается двоичная совместимость и снимаются проблемы с декорированием имен компилятором. Поэтому, такие методы могут вызываться из многих других языков и компиляторов, включая C, C++, VB, языки .NET, Delphi и т. д. Вторым принципом является динамическая загрузка компонентов (вместо статической компоновки с клиентом).
WinRT
В Windows 8 появился новый API и исполнительная среда поддержки Windows Runtime (WinRT). WinRT состоит из платформенных сервисов, предназначенных для разработчиков приложений Windows Apps (приложения Windows Apps подходят для устройств, начиная от миниатюрных IoT-устройств до телефонов, планшетов, десктопных систем, ноутбуков и даже Xbox One и Microsoft HoloLens).
С точки зрения API платформа WinRT строится на базе COM, добавляя в базовую инфраструктуру COM различные расширения. С архитектурной точки зрения она обладает намного большей целостностью: в ней реализованы иерархии пространств имен, последовательная схема назначения имен и паттерны программирования. На базовом двоичном уровне WinRT API все равно строится на основе унаследованных двоичных файлов и API Windows. Это не новый «машинный» API для системы: ситуация немного напоминает то, как .NET строится на основе традиционного Windows API.
.NET Framework
.NET Framework является частью Windows. Он состоит из двух основных компонентов:
- CLR (Common Language Runtime). Исполнительная среда .NET, включает JIT-компилятор для преобразования инструкций языка CIL в низкоуровневый язык машинных команд процессора, сборщик мусора, систему проверки типов, безопасность обращения к коду и т. д. Среда реализована в виде внутрипроцессного сервера COM (DLL) и использует различные средства, предоставляемые Windows API.
- .NET Framework Class Library (FCL). Обширная подборка типов, реализующих функциональность, часто используемую в клиентских и серверных приложениях, — средства пользовательского интерфейса, поддержка сети, работа с базами данных и т. д.
На схеме представлены отношения между .NET Framework и ОС Windows:
Отношение между .NET и ОС Windows. Термин «сервер COM» обычно относится к DLL библиотеке или исполняемому файлу (EXE), в котором реализованы классы COM.
From Wikibooks, open books for an open world
Windows was originally a 16-bit graphical layer for MS-DOS that was written by Microsoft. As it grew, it gained the ability to handle 32-bit programs and eventually became totally 32-bit when Windows NT and 2000 came out. After Windows 95, Microsoft began to remove dependencies on DOS and finally fully implemented the separation in Windows 2000. Windows has many advanced features as well as many platform specific problems. It possesses an Application Programming Interface that consists of thousands of mostly undocumented GUI functions as well as having varying degrees of MS-DOS compatibility. Additionally, with the advent of NT (New Technology), Windows relies completely on the NT kernel instead of its MS-DOS subsystem, the NT kernel is capable of emulating the necessary DOS functionality. In addition to the NT kernel, Microsoft has also introduced many API wrappers, such as the MFCs (Microsoft Foundation Classes), COM (Component Object Model), and .NET technologies.
The most popular languages for use on Windows include Visual Basic/VB6 and C/C++, although C++ is quickly being replaced by the .NET platform, specifically C# (C Sharp).
Windows 1.0, 2.0, and 3.11 are considered to be an older generation of Windows systems that were built to be a simple graphical layer over the MS-DOS operating system. Windows 95, Windows 98, and Windows ME were designed to bypass MS-DOS (although DOS was still present), and were all based on the same code structure known as the «9x Kernel». Windows NT 4.0, Windows 2000, Windows XP, Windows Vista, Windows 7, and Windows Server are all based on a collection of code known as the «NT Kernel».
Today we’re starting a new series of posts focused on understanding the Windows System Architecture itself. In our first post, we’re going to quickly review some basic Windows concepts and terms including a brief overview of the Windows API, Services and the difference between a Process and a Thread. Think of this as laying the groundwork for our future posts which will cover topics such as the Registry, Session Space and Desktop Heap. So, without further ado – let’s start with an introduction to the Windows API.
The Windows NT Kernel is divided into several sections, here we will briefly discuss how the Windows operating system is put together. At the most basic level is the file NTOSKRNL.EXE, the kernel of the Windows operating system, and the most important file on your computer. If you are interested in seeing this for yourself, you can find it in the C:\Windows\System32 folder (this can also be found using the following path %systemroot%\system32 ) on your own Windows NT machines.
NTOSKRNL.EXE provides some of the basic functionality of Windows, but one file alone cannot make the whole system work. NTOSKRNL relies heavily on a Dynamic Link Library (DLL) known as HAL.DLL. HAL stands for «Hardware Abstraction Layer», and is the portion of code that allows low-level mechanisms such as interrupts and BIOS communication to be handled independently.
If we consider Windows architecture as a layered architecture, with NTOSKRNL.EXE and HAL.DLL on the bottom layer, the next layer up contains two important files, NTDLL.DLL, and WIN32K.SYS. NTDLL contains a number of user-mode functions such as system call stubs and the run-time library (RTL) code, collectively known as the (largely undocumented) «Native API». Much of the run-time library code is shared between NTOSKRNL and NTDLL. WIN32K.SYS is a kernel-mode driver that implements windowing and graphics, allowing for user interfaces to be created.
The next layer up contains a number of libraries that will be of primary interest to us. This layer comprises what is called the Win32 API, and it contains (almost) all the functions that a user will need in order to program in Windows. The Win32 API is divided into 4 component parts, each one a .DLL:
- kernel32.DLL
- This contains most of the system-related Win32 API functions. Most of these functions are just wrappers around the lower-level NTDLL functions, but some functionality such as National Language Support (NLS) and console handling are not available in NTDLL.
- advapi32.DLL
- This contains other system-related functions such as registry and service handling.
- gdi32.DLL
- This contains a number of basic functions for drawing. These functions are all relatively simple, and allow the user to draw shapes (circles, rectangles, etc.) on the screen, to display and manipulate bitmaps, etc.
- user32.DLL
- This contains a number of functions that implement the familiar user-interface of Windows. Programs, message boxes, prompts, etc are all implemented using the User32 functions. User32 performs its tasks by calling system calls implemented by WIN32K.SYS.
In addition to the 4 primary libraries in the Win32 API, there are a number of other important libraries that a Windows programmer should become familiar with:
- MSVCRT.DLL
- MSVCRT.DLL is the dynamic link library that contains the implementations of the C standard library (stdlib) functions that C programmers should be familiar with. These are the functions defined in the common header files stdio.h, string.h, stdlib.h, etc.
- WS2_32.DLL
- This is the Winsock2 library, that contains the standard Berkeley socket API for communicating on the internet. We will talk about winsock programming later in this book.
The Windows system, it might be surprising for some people to learn, is a very hands-on system. This is not a familiar concept for people who are just beginning C programming using the standard library. In a normal software project, there is typically a main function, and the main function in turn calls other functions that are defined in your project. In a Windows function, typically the programmer provides function pointers to the system, and Windows will make calls into your program. Also, in a Windows program, your code will sit idle when there is nothing to be done. Using the message loop architecture, Windows will send messages to your program when an event needs to be handled, and the program responds to the messages. If the program doesn’t respond, the message is ignored.
For each program, Windows sets up a message queue structure to handle the message transmission process. Windows will maintain a listing of all the objects and system resources in use by a program, and will assign each one a handle. These handles are useless by themselves, but they can be passed to the system to reference particular objects and resources.
- User Mode vs Kernel Mode
Для рядовых пользователей работа с ПК под управлением 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. Тут без креативности, улыбки и хорошего чувства юмора в принципе никуда. Унынение – главный враг любого развития.
Капец, я, как всегда, под конец видео ударяюсь в никому не нужную диванную философию. Всё короче. До новых встреч, мои кайфные друже. Всем пока.
Детище Microsoft
Microsoft Corporation,
широко известная как Microsoft,
— американская многонациональная технологическая компания, основанная
Биллом Гейтсом и Полом Алленом 4 апреля 1975 года. Штаб-квартира компании
расположена в Редмонде, штат Вашингтон.
Компания впервые стала известна благодаря разработке и
продаже дисковой операционной системы Microsoft (MS-DOS), которая использовалась
в персональных компьютерах IBM.
Однако 1985 году Microsoft
выпустила Windows,
которая быстро стала доминирующей операционной системой для персональных
компьютеров и сделала ее лидером рынка.
На протяжении 1990-х и 2000-х годов Microsoft продолжала доминировать на
рынке персональных компьютеров именно благодаря своей операционной системе Windows и пакету программного
обеспечения Office.
Сейчас Microsoft
является одной из крупнейших технологических компаний в мире с рыночной
капитализацией более 2 триллионов долларов. В компании работает более 181 000
сотрудников по всему миру, а ее деятельность осуществляется в более чем 190
странах.
С чего все началось
История операционной системы Windows началась в начале 1980-х
годов, когда соучредитель компании Microsoft Билл Гейтс осознал потенциал
графических пользовательских интерфейсов (GUI) в вычислительной технике. Он
представлял себе удобную операционную систему, которая могла бы работать на
IBM-совместимых персональных компьютерах.
В 1983 году компания Microsoft начала разработку
операционной системы на основе графического интерфейса пользователя под
названием Windows, которая должна была работать поверх существующей
операционной системы MS-DOS. Первая версия, Windows 1.0, была выпущена в 1985
году и имела простой интерфейс с плиточными окнами, выпадающими меню и системой
навигации с помощью мыши.
Windows 2.0 была выпущена в 1987 году и содержала
значительные усовершенствования, включая возможность перекрытия окон и улучшенные
графические возможности. За ней последовала Windows 3.0 в 1990 году, которая
стала первой широко успешной версией Windows, было продано более 10 миллионов
копий.
Windows 95 была выпущена в 1995 году и стала важной вехой в
истории операционной системы Windows. В ней появились знаковое меню «Пуск» и
панель задач, которые стали неотъемлемой частью пользовательского интерфейса
Windows. Она также отличалась повышенной производительностью и стабильностью, а
также поддержкой оборудования Plug and Play.
Последующие версии Windows: Windows 98, Windows 2000 и
Windows NT — продолжали развивать эти улучшения и добавляли
новые функции, такие как подключение к Интернету и улучшенные мультимедийные
возможности.
В 2001 году компания Microsoft выпустила Windows XP, которая
представляла собой значительную переработку операционной системы и ввела ряд
новых функций, включая переработанный пользовательский интерфейс, улучшенную
производительность и встроенную поддержку беспроводных сетей.
С тех пор Microsoft продолжает выпускать новые версии
Windows, включая Windows Vista, Windows 7, Windows 8, Windows 10 и Windows 11.
Каждая новая версия привносит новые функции и улучшения.
Сегодня Windows — самая распространенная операционная
система в мире, насчитывающая более 1,3 миллиарда активных пользователей.
Развитие пользовательского интерфейса
За прошедшие годы интерфейс Windows претерпел множество
изменений, предлагая пользователям все больше удобств.
Windows 1.0 (1985): Первая версия Windows имела простой
графический интерфейс пользователя (GUI), который позволял пользователям
использовать мышь для навигации по меню и открытия программ.
Windows 95 (1995): В этой версии появилось знаковое меню «Пуск»,
которое позволяло пользователям быстро открывать программы и файлы. В ней также
появилась панель задач, которая отображала запущенные программы и позволяла
пользователям переключаться между ними.
Windows XP (2001): В Windows XP были переработаны меню «Пуск»
и панель задач, которые имели более современный вид. В ней также были
представлены визуальные стили, которые позволяли пользователям настраивать
внешний вид операционной системы.
Windows Vista (2006): В Vista был значительно переработан
пользовательский интерфейс с новой темой Aero, включающей полупрозрачные окна и
анимацию. В ней также появилась боковая панель, которая позволяла пользователям
добавлять и настраивать гаджеты.
Windows 7 (2009): Windows 7 усовершенствовала тему Aero,
представленную в Vista, улучшила производительность и добавила новые функции,
такие как Jump Lists, которые обеспечивали быстрый доступ к часто используемым
файлам.
Windows 8 (2012): Windows 8 существенно отличается от
предыдущих версий Windows, представляя собой интерфейс, ориентированный на
сенсорное управление и оптимизированный для планшетов и других сенсорных
устройств. Меню «Пуск» было заменено полноэкранным экраном «Пуск» с живыми
плитками, отображающими информацию и обновления приложений.
Windows 10 (2015): Windows 10 объединила традиционный
интерфейс рабочего стола с сенсорно-ориентированным дизайном Windows 8, вновь
представив меню «Пуск» и добавив новые функции, такие как Task View и
виртуальные рабочие столы. В ней также была представлена система Fluent Design
System, которая обеспечивает более современный и последовательный внешний вид и
ощущение на различных устройствах и в приложениях.
Windows 11 (2021): появился новый вариант многозадачности с
большим количеством окон, обновленный проводник имеет современный и более
чистый вид с новыми элементами дизайна пользовательского интерфейса, появились
макеты прикрепления с двумя колонками для упрощения многозадачности. Также Windows
11 поддерживает анимированный фон экрана блокировки на компьютерах, оснащенных
акселерометром.
Провалы и неудачи
Хотя у каждой версии Windows есть свои сильные и слабые
стороны, некоторые считаются неудачными и провалились в продажах. Обычно к ним
относят следующие версии:
Windows ME (Millennium Edition): выпущенная в 2000 году,
Windows ME страдала от проблем со стабильностью и совместимостью, ее
критиковали за низкую производительность, частые сбои и отсутствие новых
функций. Она не была хорошо принята критиками и потребителями, и считается
одной из худших версий Windows.
Windows Vista: хотя Vista внесла несколько значительных
улучшений по сравнению со своей предшественницей, Windows XP, она также
страдала от проблем с производительностью и совместимостью, а также от высоких
системных требований. Vista критиковали за медлительность, ошибки и отсутствие
новых интересных функций, что заставило многих пользователей отказаться от нее
или перейти на Windows XP.
Windows 8: Ориентируясь на удобные сенсорные интерфейсы и
мобильные устройства, Windows 8 значительно отличалась от предыдущих версий
Windows и столкнулась с критикой со стороны пользователей, которые сочли новый
интерфейс запутанным и сложным в использовании на настольных компьютерах и
ноутбуках. Отказ от традиционного меню «Пуск» и ставка на начальный экран также
вызвали критику.
Стоит отметить, что даже в этих версиях были свои сильные
стороны и были представлены некоторые инновационные функции, но они не были
приняты пользователями.
Особенности системы
Операционная система Windows имеет различные особенности,
которые делают ее популярной и широко используемой. Вот некоторые из них:
Пользовательский интерфейс: Windows предоставляет
графический интерфейс пользователя (GUI), который прост в использовании и
настраивается. Пользователи могут легко перемещаться по различным приложениям и
настройкам.
Многозадачность: Windows позволяет пользователям запускать
несколько приложений одновременно, что облегчает переключение между различными
программами.
Управление файлами: Windows имеет мощную систему управления
файлами, которая позволяет легко организовывать, искать и извлекать файлы.
Совместимость: Windows совместима с широким спектром
аппаратного и программного обеспечения, что облегчает поиск совместимых
устройств и приложений.
Безопасность: Windows имеет встроенные функции безопасности,
такие как антивирус и брандмауэр, которые помогают защитить пользователей от
вредоносных программ и других угроз безопасности.
Регулярные обновления: Windows регулярно обновляется для
повышения производительности, исправления ошибок и добавления новых функций.
Универсальные приложения: Windows имеет платформу
универсальных приложений, которая позволяет разработчикам создавать приложения,
которые могут работать на различных устройствах, включая ПК, планшеты и
смартфоны.
Cortana: Cortana — это персональный цифровой помощник,
который может помочь пользователям в решении различных задач, таких как
установка напоминаний, планирование встреч и поиск информации в Интернете.
Microsoft Store: Microsoft Store — это цифровой магазин, где
пользователи могут загружать приложения, игры и другой контент.
Игры: Windows также является популярной платформой для игр,
поддерживая DirectX и другие игровые технологии.
Модели распространения
Microsoft использует различные модели коммерческого
распространения своей операционной системы Windows, включая:
Розничная торговля: Windows можно приобрести в розничных
магазинах в виде коробочных пакетов программного обеспечения, включающих
установочные диски и лицензионные ключи.
OEM (Original Equipment Manufacturer): Windows
предустановлена на компьютерах и устройствах, продаваемых такими
производителями, как Dell, HP и Lenovo. Эти производители приобретают лицензии
на Windows у Microsoft и устанавливают операционную систему на свои устройства,
прежде чем продавать их потребителям.
Объемное лицензирование: Эта модель предназначена для
предприятий и организаций, которым необходимо установить Windows на несколько
компьютеров. Microsoft предлагает лицензии на объем, которые позволяют
организациям устанавливать Windows на определенное количество устройств, как
правило, по более низкой цене за лицензию, чем розничные или OEM-лицензии.
Подписка: Microsoft предлагает модель Windows на основе
подписки под названием Microsoft 365, которая включает доступ к операционной
системе, приложениям Microsoft Office и другим облачным сервисам. Эта модель
предназначена для предприятий и частных лиц, которые хотят вносить ежемесячную
или ежегодную плату за доступ к программному обеспечению и услугам Microsoft.
В целом, модели коммерческого распространения Windows
позволяют Microsoft охватить широкий круг клиентов, от индивидуальных
потребителей до крупных организаций, предлагая различные варианты ценообразования
и лицензирования.
В России сейчас есть определенные затруднения с покупкой
лицензий, но они преодолимы.
Альтернативы – преимущества и недостатки
Windows, Linux и MacOS — три популярные операционные
системы, используемые частными лицами и предприятиями по всему миру. Каждая из
них имеет свои уникальные особенности и характеристики, которые отличают ее от
других. Вот некоторые ключевые различия между Windows, Linux и MacOS, а также
их преимущества и недостатки.
Пользовательский интерфейс:
Одно из самых значительных различий между тремя
операционными системами — это пользовательский интерфейс. Windows известна
своим простым и легким в использовании интерфейсом, который делает ее удобной
для начинающих пользователей. Linux, с другой стороны, предлагает настраиваемый
интерфейс, который может быть настроен по вкусу пользователя. MacOS имеет
изящный и минималистичный интерфейс, в котором основное внимание уделяется
эстетике и простоте использования.
Открытый исходный код против закрытого:
Linux — это операционная система с открытым исходным кодом,
что означает, что исходный код доступен для всех желающих, его можно свободно
просматривать, изменять и распространять. Windows и MacOS являются
операционными системами с закрытым исходным кодом, что означает, что исходный
код недоступен для общественности.
Доступность программного обеспечения:
Windows имеет самую большую библиотеку программного
обеспечения и поддержку, так как это самая распространенная операционная
система в мире. MacOS имеет меньшую библиотеку программного обеспечения, но она
предлагает высококачественное программное обеспечение, оптимизированное для
этой платформы. Linux имеет обширную коллекцию программного обеспечения с
открытым исходным кодом, но найти совместимое с ней коммерческое программное
обеспечение может быть сложнее.
Безопасность:
Windows считается наиболее уязвимой для вирусов и
вредоносных программ, что делает ее частой мишенью для хакеров. MacOS известна
как более безопасная, чем Windows, но и она не полностью защищена от угроз
безопасности. Linux — самая безопасная из трех систем, с меньшим количеством
уязвимостей в безопасности благодаря своей природе с открытым исходным кодом,
что позволяет чаще получать исправления и обновления.
Совместимость оборудования:
Windows совместима с широким спектром аппаратного
обеспечения, что делает ее популярной среди геймеров и пользователей, которым
требуется высококлассное оборудование. MacOS имеет ограниченный спектр
аппаратных возможностей, поскольку она доступна только на устройствах Apple.
Linux имеет ограниченную совместимость с оборудованием, но популярен для работы
на старых машинах и серверах.
Преимущества Windows:
Большая библиотека программного обеспечения и поддержка
Удобный интерфейс
Совместимость с широким спектром аппаратных средств
Широко используется и знакома многим пользователям
Недостатки Windows:
Уязвимость к вирусам и вредоносным программам
Закрытый исходный код
Ограниченные возможности настройки
Преимущества MacOS:
Изящный и минималистичный интерфейс
Высококачественное программное обеспечение
Повышенная безопасность по сравнению с Windows
Интеграция с устройствами Apple
Недостатки MacOS:
Ограниченная совместимость с аппаратным обеспечением
Меньшая библиотека программного обеспечения
Закрытый исходный код
Преимущества Linux:
Код с открытым исходным кодом
Высоко настраиваемый интерфейс
Более безопасный, чем Windows и
MacOS
Свободен в использовании и распространении
Недостатки Linux:
Ограниченная совместимость с коммерческим программным
обеспечением
Может быть более сложным для начинающих пользователей
Ограниченная совместимость с аппаратным обеспечением
Перспективы развития Windows
Основываясь на отраслевых тенденциях, можно сделать
предположения о направлениях развития Windows.
Интеграция облака: Microsoft продвигает интеграцию облака с
Windows, облегчая пользователям доступ к облачным службам прямо с рабочего
стола. Сюда входят такие функции, как интеграция OneDrive, поддержка Azure
Active Directory и Windows Virtual Desktop.
Безопасность: В связи с ростом числа кибератак компания
Microsoft уделяет большое внимание повышению безопасности Windows. Сюда входят
такие функции, как распознавание лица Windows Hello, улучшенная биометрическая
аутентификация и интеграция с Microsoft Defender for Endpoint.
Интеграция искусственного интеллекта: Microsoft работает над
интеграцией искусственного интеллекта в Windows, чтобы обеспечить более
интеллектуальный и персонализированный опыт для пользователей. Сюда входят
такие функции, как Cortana, виртуальный помощник на базе ИИ, который может
помочь пользователям в решении задач, и платформа Windows AI, которая
предоставляет разработчикам инструменты для создания интеллектуальных
приложений.
Интеграция между устройствами: Microsoft работает над
созданием более унифицированного опыта работы на различных устройствах, включая
ПК с Windows, планшеты и смартфоны. Это включает в себя такие функции, как
приложение Your Phone, которое позволяет пользователям получать доступ к своему
смартфону с ПК, и Windows Timeline, которая обеспечивает временную шкалу
действий на разных устройствах.
Пользовательский интерфейс: Microsoft вносит изменения в
пользовательский интерфейс Windows, чтобы сделать его более современным и
удобным. Сюда входит внедрение системы Fluent Design System, которая
обеспечивает более плавный и интуитивно понятный интерфейс, а также добавление
темного режима, который снижает напряжение глаз и увеличивает время автономной
работы на устройствах с OLED-экранами.
Это лишь несколько примеров направлений развития Windows.
Microsoft постоянно развивает и адаптирует Windows для удовлетворения
меняющихся потребностей пользователей и технологического ландшафта.
Аннотация: Общая схема архитектуры. Компоненты пользовательского режима. Компоненты режима ядра.
Общая схема архитектуры
Windows представляет собой операционную систему с гибридным ядром (см. лекцию 1 «Введение в операционные системы»). В ней основные системные функции по управлению процессами, памятью, устройствами, файловой системой и безопасностью реализованы в компонентах, работающих в режиме ядра; но существует ряд важных системных компонентов пользовательского режима, например системные процессы входа в систему, локальной аутентификации, диспетчера сеансов, а также подсистемы окружения.
Архитектура Windows представлена на рис.4.1 [5; 2].
Рис.
4.1.
Архитектура Windows
Компоненты пользовательского режима
В пользовательском режиме работают следующие виды процессов:
- системные процессы (system processes) – компоненты Windows, отвечающие за решение критически важных системных задач (т. е. аварийное завершение одного из этих процессов вызывает крах или нестабильную работу всей системы), но выполняемые в пользовательском режиме.
Основные системные процессы:- Winlogon.exe – процесс входа в систему и выхода из неё;
- Smss.exe (Session Manager – диспетчер сеансов) – процесс выполняет важные операции при инициализации системы (загрузка необходимых DLL, запуск процессов Winlogon и Csrss и др.), а затем контролирует работу Winlogon и Csrss;
- Lsass.exe (Local Security Authentication Subsystem Server – сервер подсистемы локальной аутентификации) – процесс проверяет правильность введенных имени пользователя и пароля;
- Wininit.exe – процесс инициализации системы (например, запускает процессы Lsass и Services);
- Userinit.exe – процесс инициализации пользовательской среды (например, запускает системную оболочку – по умолчанию, Explorer.exe);
- Services.exe (SCM, Service Control Manager – диспетчер управления службами) – процесс, отвечающий за выполнение служб – см. ниже;
- службы (сервисы, services) – приложения, работающие в фоновом режиме и не требующие взаимодействия с пользователем. Службы могут быть как частью операционной системы (например, Windows Audio – служба для работы со звуком, или Print Spooler – диспетчер печати), так и частью пользовательского приложения (например, служба СУБД SQL Server). За службы отвечает системный процесс Services.exe;
- пользовательские приложения (user applications) ¬– прикладные программы, запускаемые пользователем;
- подсистемы окружения (environment subsystems) – компоненты, предоставляющие доступ приложениям к некоторому подмножеству системных функций. Windows поддерживает две подсистемы окружения:
- собственно Windows – при помощи данной подсистемы выполняются 32 разрядные приложения Windows (Win32), а также 16 разрядные приложения Windows (Win16), приложения MS DOS и консольные приложения (Console). За подсистему Windows отвечает системный процесс Csrss.exe и драйвер режима ядра Win32k.sys;
- POSIX (Portable Operating System Interface for UNIX – переносимый интерфейс операционных систем UNIX) – подсистема для UNIX-приложений. Начиная с Windows Server 2003 R2 компонент, реализующий эту подсистему, называется SUA (Subsystem for UNIX-based Applications). Компонент не устанавливается в Windows по умолчанию.
Все перечисленные процессы пользовательского режима (кроме подсистемы POSIX1Подсистема POSIX использует библиотеку Psxdll.dll.) для взаимодействия с модулями режима ядра используют библиотеки Windows DLL (Dynamic Link Library – динамически подключаемая библиотека). Каждая DLL экспортирует набор Windows API функций, которые может вызывать процесс.
Windows API (Windows Application Programming Interface, WinAPI) – это способ взаимодействия процессов пользовательского режима с модулями режима ядра. WinAPI включает тысячи функций и хорошо документирован [10].
Основные Windows DLL следующие:
- Kernel32.dll – базовые функции, в том числе работа с процессами и потоками, управление памятью и вводом выводом;
- Advapi32.dll – функции, в основном связанные с управлением безопасностью и доступом к реестру;
- User32.dll – функции, отвечающие за управление окнами и их элементами в GUI приложениях (Graphical User Interface – графический интерфейс пользователя);
- Gdi32.dll – функции графического пользовательского интерфейса (Graphics Device Interface, GDI), обеспечивающие рисование на дисплее и принтере графических примитивов и вывод текста.
Библиотека Ntdll.dll экспортирует в большинстве своем недокументированные системные функции, реализованные, в основном, в Ntoskrnl.exe. Набор таких функций называется Native API («родной» API).
Библиотеки Windows DLL преобразуют вызовы документированных WinAPI функций в вызовы функций Native API и переключают процессор на режим ядра.
Компоненты режима ядра
Диспетчер системных сервисов (System Service Dispatcher) работает в режиме ядра, перехватывает вызовы функций от Ntdll.dll, проверяет их параметры и вызывает соответствующие функции из Ntoskrnl.exe.
Исполнительная система и ядро содержатся в Ntoskrnl.exe (NT Operating System Kernel – ядро операционной системы NT) (по поводу использования термина «ядро» в Windows см. лекцию 1 «Введение в операционные системы»).
Исполнительная система (Executive) представляет собой совокупность компонентов (называемых диспетчерами – manager), которые реализуют основные задачи операционной системы:
- диспетчер процессов (process manager) – управление процессами и потоками (см. лекцию 6 «Процессы и потоки»);
- диспетчер памяти (memory manager) – управление виртуальной памятью и отображение её на физическую (см. лекцию 8 «Управление памятью»);
- монитор контроля безопасности (security reference monitor) – управление безопасностью (см. лекцию 9 «Безопасность»);
- диспетчер ввода вывода (I/O manager), диспетчер кэша (cache Manager), диспетчер Plug and Play (PnP Manager) – управление внешними устройствами и файловыми системами (см. лекцию 10 «Управление устройствами» и лекцию 11 «Файловая система NTFS»);
- диспетчер электропитания (power manager) – управление электропитанием и энергопотреблением;
- диспетчер объектов (object manager), диспетчер конфигурации (configuration manager), механизм вызова локальных процедур (local procedure call) – управление служебными процедурами и структурами данных, которые необходимы остальным компонентам.
Ядро (Kernel) содержит функции, обеспечивающие поддержку компонентам исполнительной системы и осуществляющие планирование потоков (см. лекцию 7 «Планирование потоков»), механизмы синхронизации, обработку прерываний.
Компонент Windows USER и GDI отвечает за пользовательский графический интерфейс (окна, элементы управления в окнах – меню, кнопки и т. п., рисование), является частью подсистемы Windows и реализован в драйвере Win32k.sys.
Взаимодействие диспетчера ввода вывода с устройствами обеспечивают драйверы (drivers) – программные модули, работающие в режиме ядра, обладающие максимально полной информацией о конкретном устройстве (драйверы подробнее рассматриваются в лекции 10 «Управление устройствами»).
Однако, и драйверы, и ядро не взаимодействуют с физическими устройствами напрямую – посредником между программными компонентами режима ядра и аппаратурой является HAL (Hardware Abstraction Layer) – уровень абстрагирования от оборудования, реализованный в Hal.dll. HAL позволяет скрыть от всех программных компонентов особенности аппаратной платформы (например, различия между материнскими платами), на которой установлена операционная система.
Резюме
В лекции представлена архитектура операционной системы Windows и описаны основные компоненты пользовательского режима и режима ядра.
В следующей лекции рассматривается исследовательское ядро Windows (Windows Research Kernel) – вариант Ntoskrnl.exe с исходным кодом, доступным академическим организациям.
Контрольные вопросы
- К какому типу ядер в большей степени относится Windows NT, к монолитным или микроядрам? Ответ обоснуйте.
- Перечислите основные компоненты пользовательского режима.
- Перечислите основные компоненты режима ядра.
- Что такое Windows API? Где можно найти информацию по этому вопросу?
- Каковы основные функции исполнительной системы, входящей в состав Ntoskrnl.exe?
- Каковы основные функции ядра, входящего в состав Ntoskrnl.exe?
- Что такое HAL?