Структура ОС Windows
Общее описание структуры системы
Архитектура ОС Windows (в данном разделе она излагается, следуя главным образом
[
Кастер
]
и
[
Руссинович
]
), претерпела ряд изменений в процессе эволюции. Первые версии системы имели микроядерный дизайн, основанный на микроядре Mach, которое было разработано в университете Карнеги-Меллона. Архитектура более поздних версий системы микроядерной уже не является.
Причина заключается в постепенном преодолении основного недостатка микроядерных архитектур — дополнительных накладных расходов, связанных с передачей сообщений. По мнению специалистов Microsoft, чисто микроядерный дизайн коммерчески невыгоден, поскольку неэффективен. Поэтому большой объем системного кода, в первую очередь управление системными вызовами и экранная графика, был перемещен из адресного пространства пользователя в пространство ядра и работает в привилегированном режиме. В результате в ядре ОС Windows переплетены элементы микроядерной архитектуры и элементы монолитного ядра (комбинированная система). Сегодня микроядро ОС Windows слишком велико (более 1 Мб), чтобы носить приставку «микро». Основные компоненты ядра Windows NT располагаются в вытесняемой памяти и взаимодействуют друг с другом путем передачи сообщений, как и положено в микроядерных операционных системах.
В тоже время все компоненты ядра работают в одном адресном пространстве и активно используют общие структуры данных, что свойственно операционным системам с монолитным ядром.
Высокая модульность и гибкость первых версий Windows NT позволила успешно перенести систему на такие отличные от Intel платформы, как Alpha (корпорация DEC), Power PC (IBM) и MIPS (Silicon Graphic). Более поздние версии ограничиваются поддержкой архитектуры Intel x86.
Упрощенная схема архитектуры, ориентированная на выполнение Win32-приложений, показана на
рис.
1.4.
Рис.
1.4.
Упрощенная архитектурная схема ОС Windows
ОС Windows состоит из компонентов, работающих в режиме ядра, и компонентов, работающих в режиме пользователя. Несмотря на миграцию системы в сторону монолитного ядра она сохранила некоторую структуру. В схеме, представленной на
рис.
1.4, отчетливо просматриваются несколько функциональных уровней, каждый из которых пользуется сервисами более низкого уровня.
Задача уровня абстрагирования от оборудования (hardware abstraction layer, HAL) — скрыть аппаратные различия аппаратных архитектур для потенциального переноса системы с одной платформы на другую.
HAL предоставляет выше лежащим уровням аппаратные устройства в абстрактном виде, свободном от индивидуальных особенностей. Это позволяет изолировать ядро, драйверы и исполнительную систему ОС Windows от специфики оборудования (например, от различий между материнскими платами).
Ядром обычно называют все компоненты ОС, работающие в привилегированном режиме работы процессора или в режиме ядра. Корпорация Microsoft называет ядром (kernel) компонент, находящийся в невыгружаемой памяти и содержащий низкоуровневые функции операционной системы, такие, как диспетчеризация прерываний и исключений, планирование потоков и др. Оно также предоставляет набор процедур и базовых объектов, применяемых компонентами высших уровней.
Ядро и HAL являются аппаратно-зависимыми и написаны на языках Си и ассемблера. Верхние уровни написаны на языке Си и являются машинно-независимыми.
Исполнительная система (executive) обеспечивает управление памятью, процессами и потоками, защиту, ввод-вывод и взаимодействие между процессами. Драйверы устройств содержат аппаратно-зависимый код и обеспечивают трансляцию пользовательских вызовов в запросы, специфичные для конкретных устройств. Подсистема поддержки окон и графики реализует функции графического пользовательского интерфейса (GUI), более известные как Win-32-функции модулей USER и GDI
В пространстве пользователя работают разнообразные сервисы (аналоги демонов в Unix), управляемые диспетчером сервисов и решающие системные задачи. Некоторые системные процессы (например, обработка входа в систему) диспетчером сервисов не управляются и называются фиксированными процессами поддержки системы. Пользовательские приложения (user applications) бывают пяти типов: Win32, Windows 3.1, MS-DOS, POSIX и OS/2 1.2. Среду для выполнения пользовательских процессов предоставляют три подсистемы окружения: Win32, POSIX и OS/2. Таким образом, пользовательские приложения не могут вызывать системные вызовы ОС Windows напрямую, а вынуждены обращаться к DLL подсистем (краткое определение dll имеется в приложении).
Основные компоненты ОС Windows реализованы в следующих системных файлах, находящихся в каталоге system32:
- ntoskrnl.exe — исполнительная система и ядро;
- ntdll.dll — внутренние функции поддержки и интерфейсы диспетчера системных сервисов с функциями исполнительной системы;
- hal.dll — уровень абстрагирования от оборудования;
- win32k.sys — часть подсистемы Win32, работающая в режиме ядра;
- kernel32.dll, advapi32.dll, user32.dll, gdi32.dll — основные dll подсистемы Win32.
Время на прочтение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.
Для рядовых пользователей работа с ПК под управлением 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 Windows. ComputerBild расскажет, что из себя представляет эта ОС и каковы перспективы ее развития.
Любая операционная система, будь то Windows, Mac OS X или Linux, работает по одному и тому же принципу: она автоматически загружается после включения компьютера и управляет работой всех его компонентов (центральным процессором, видеокартой и жесткими дисками). Именно «операционка» обеспечивает работу всех прикладных программ, позволяя, например, текстовому редактору распечатывать документы, а браузеру – отображать веб-страницы.
Операционные системы на первых персональных компьютерах – MS-DOS и ее клоны – управлялись командной строкой: пользователь должен был набирать все команды и запускать их на выполнение нажатием клавиши Enter. Однако с тех пор все радикально изменилось. Само название Windows отражает суть нового принципа взаимодействия пользователя с программами: каждое приложение запускается в своем собственном окне, а пользователь имеет доступ ко всем открытым окнам. Переключение между ними и управление программой в отдельном окне может быть выполнено как посредством клавиатурных команд, так и с помощью мыши (но в обоих случаях вам не придется вводить команды – достаточно будет выбрать нужные пункты меню).
В пору ранней юности операционных систем пользователи MS-DOS управляли системой посредством ввода команд с клавиатуры: эта команда выводит на экран содержимое каталога
Windows состоит из набора компонентов, образующих иерархическую структуру, на каждом уровне которой выполняются определенные задачи:
на самом нижнем уровне располагается
– его еще называют сердцем операционной системы. «Нижний» в данном контексте означает близость к аппаратным компонентам ПК, с которыми ядро взаимодействует напрямую. Оно осуществляет общее управление всеми происходящими в Windows процессами, например определяет, сколько вычислительной мощности процессора нужно выделить той или иной программе. Windows всегда старается так распределить системные ресурсы, чтобы параллельно работающие приложения получали их в достаточном количестве;
– компонент, расположенный «над ядром» ОС и отвечающий за выполнение системных функций, например за работу службы автоматического обновления Windows;
– располагается на третьем уровне и предоставляет прикладным программам важнейшие интерфейсы (см. раздел «Как осуществляется взаимодействие прикладных программ и Windows»);
• программные интерфейсы (API)
– располагаются на последнем уровне и отвечают за доступность различных технологий Windows, используемых, например, более ранними версиями программ или играми.
Как осуществляется взаимодействие
прикладных программ и Windows
Прикладные программы – антивирусы, офисные приложения или игры – не могут напрямую обращаться к процессору или осуществлять вывод результатов на экран монитора. Разработка программного обеспечения превратилась бы в довольно трудную задачу, если бы в код программы нужно было добавлять модули для выполнения всех стандартных операций. Каждое приложение использует готовые функции операционной системы, которые и позволяют отображать картинку на экране или, например, выполнять распечатку текста.
Вызов этих функций происходит через специальные программные интерфейсы (API), которые связывают прикладные программы с операционной системой и устройствами компьютера. Если программе требуется записать файл на диск, она обращается к функции сохранения данных Windows. Приложение дает указание операционной системе: «Сохрани файл AБВГД на жесткий диск!», а Windows принимает эту команду и проделывает всю необходимую для записи файла работу: находит на жестком диске свободную область, резервирует это место под будущий файл, затем записывает туда информацию. Кроме того, система информирует программу о результате операции: прошло ли создание файла успешно или же возникли какие-либо проблемы. Как видите, Windows выступает посредником между программой и устройствами компьютера. Самый известный программный интерфейс называется DirectX – он служит для поддержки графических режимов в играх (см. врезку).
Программные интерфейсы существенно облегчают разработку программ под Windows. Так, большинство компьютерных игр использует DirectX, поставляемый в составе Windows. Данный API переводит команды, получаемые от игровой программы, на язык, понятный видеоконтроллеру. В упрощенном виде это можно представить следующим образом: от игры поступает команда: «Изобрази на экране в точке XY взрыв!». DirectX принимает команду и передает видеокарте инструкции на выполнение целого набора необходимых операций. Аналогичным образом DirectX управляет функциями вывода звука или передачей данных по Сети.
Программы, разработанные для Windows, в большинстве случаев не будут работать под другими ОС (например, Linux или Mac OS); заметим, что и обратное тоже верно (то есть программа для Mac OS не будет работать под управлением Windows). Основная причина этого кроется в том, что в системах используются уникальные API, на работу с которыми рассчитаны прикладные программы.
прикладных программ и Windows
Каждая программа, работающая под управлением Windows, использует множество функций ОС. Это взаимодействие происходит в фоновом режиме и остается прозрачным для пользователя. Заметить то, что операционная система в данный момент выполняет какую-либо задачу, полученную от прикладной программы, можно по появлению на экране песочных часов; это происходит, например, во время чтения или сохранения данных.
Сколько версий Windows существует?
Их очень много – больше дюжины. Microsoft подразделяет все операционные системы Windows на две категории:
– в их число входят такие ОС, как Windows 98, XP и Vista – предназначены для домашнего или офисного использования. Наиболее распространенной является Windows XP, а самой новой – Windows Vista;
– такие системы, как Windows Server 2003 или 2008, существуют в нескольких версиях, отличающихся производительностью. Они устанавливаются на серверы, которые выполняют обслуживание многопользовательской сети.
С момента выпуска Windows XP компания Microsoft стала разделять операционную систему на несколько версий:
– это стандартная версия Windows XP, которая обычно предустанавливается на новые компьютеры;
– в этой версии имеются дополнительные сетевые функции, которые, однако, вряд ли пригодятся большинству индивидуальных пользователей;
– версия, выпущенная в 2004 году, в которой реализован дополнительный Рабочий стол, подходящий для отображения на экране телевизора.
В самой новой версии Windows – Vista – не так-то просто выбрать подходящий вариант системы – их целых шесть:
– самая простая версия ОС, предназначенная для работы с фотографиями, видеофильмами и музыкой. Кроме того, в нее включены такие стандартные программы, как Internet Explorer и Почта Windows;
– эта версия предустановлена на большинстве новых компьютеров. От версии Basic ее отличает наличие элегантного Aero-интерфейса, а также дополнительных функций для работы с мультимедийным содержимым;
– версия, предназначенная для использования на предприятиях благодаря наличию в ней сетевых функций;
– эта версия сочетает в себе возможности версий Home Premium и Business. Она задумана как система для профессионалов, которые используют компьютер для решения бизнес-задач, но при этом не отказываются и от работы с мультимедийным контентом;
– эта версия доступна для предприятий и компаний, заключивших с Microsoft специальный договор. По сути, она представляет собой расширенный вариант Business Edition.
В апреле 1983 года компания Microsoft впервые представила так называемый Interface Manager, разработанный ею для собственной операционной системы MSDOS. С помощью него можно было одновременно запускать на компьютере несколько программ, например текстовый редактор и табличный процессор. На жаргоне программистов эти отдельно исполняемые программы стали называться окнами – так вскоре родилось название «Windows», и с таким именем появилась в 1985 году первая версия Windows – 1.0.
Вы уже привыкли к тому, что после запуска системы на экране монитора появляется
с расположенными на нем ярлыками. А вот при запуске Windows 1.0 на экране можно было видеть только содержимое жесткого диска. Чтобы запустить программу, пользователь должен был сначала перейти в нужную папку на диске, затем найти в ней файл программы и только потом запустить его двойным щелчком мыши или нажатием клавиши Enter на клавиатуре.
Windows 1.0 поставлялась на двух дискетах и состояла из 90 файлов, общий объем которых равнялся 2 Мб. С выходом каждой новой версии запросы системы к занимаемому ею месту на диске росли: для Windows Vista уже требуется около 12 Гб дискового пространства и состоит она примерно из 73 тысяч файлов, то есть эта ОС в 6000 раз объемнее, чем Windows 1.0.
Простой текстовый редактор, средство построения диаграмм, меню, предназначенное для настройки параметров компьютера, а также простая карточная игра – вот и все основные функции, которые содержала первая версия Windows, появившаяся на свет в 1985 году. На диаграмме снизу показаны важнейшие нововведения, которыми Microsoft снабжала каждую последующую версию Windows. По прошествии более чем двух десятилетий Windows обзавелась колоссальным количеством самых разных функций!
1985
Windows 1.0 стала первой ОС от Microsoft, управляемой с помощью мыши. Несколько видоизмененная Windows 2.0 была последней системой, которая могла загружаться с дискеты – на случай если компьютер не был укомплектован жестким диском. Правда, установка и конфигурирование системы были по плечу только специалисту.
Windows 3.0 получила поддержку 65 тыс. цветов и встроенные функции для работы со звуком. Версия 3.11 позволила соединять компьютеры в локальную сеть. В это же время Microsoft трудилась над созданием профессиональной операционной системы Windows NT, которая основывалась не на DOS, а полностью разрабатывалась «с нуля».
1995
Вышла Windows 95. Основной ее элемент – Рабочий стол – не утратил своих основных черт до сегодняшнего дня. Windows 95 умела автоматически распознавать и добавлять в систему многие новые устройства. Кроме того, она гораздо лучше справлялась с одновременным исполнением нескольких программ, чем Windows 3.11.
1998
Благодаря поддержке интерфейса USB в Windows 98 значительно расширились возможности работы с внешними устройствами. Управление веб-браузером Internet Explorer упростилось и стало понятно даже начинающим пользователям. Последовательница этой версии – Windows ME (Millenium Edition) не получила широкого признания, так как она практически не отличалась от Windows 98.
2001
Появилась Windows XP, в которой к новому и яркому дизайну Рабочего стола Microsoft добавила повышенную стабильность работы (унаследованную от Windows NT) и совместимость с самыми различными программами и внешними устройствами (от Windows 98). Кроме того, появилась версия операционной системы Media Center.
2007
«Воздушный» интерфейс Рабочего стола и значительно пополнившийся набор прикладных программ выгодно отличают ОС Vista. Microsoft потрудилась и над улучшением безопасности, введя функции управления учетными записями пользователя и родительского контроля.
Планы компании Microsoft относительно разработки будущих версий Windows разъяснит врезка «Что придет на смену Windows Vista?».
Почему Windows так долго загружается?
Windows запускается не в тот момент, когда вы нажимаете на кнопку включения ПК. Сначала выполняется этап тестирования всех аппаратных компонентов, а потом в работу вступает модуль, записанный в загрузочном секторе жесткого диска. Он отыскивает в системном разделе файлы операционной системы и запускает их. Только после этого выполняется собственно старт Windows, которая затем сама контролирует процесс загрузки своих модулей.
Каким образом Windows сохраняет настройки?
Как и многие другие программы, Windows содержит тысячи настроек и параметров. Все они сохраняются в системном реестре. Работая в Windows, вы, сами того не подозревая, каждую секунду обращаетесь к реестру за информацией: при открытии текстового файла именно в реестре система находит информацию о том, какую программу (например, Word) следует запустить для работы с ним. Из него же Windows узнает, в каком месте жесткого диска следует искать эту программу, затем запускает Word и загружает в него текст.
С помощью встроенного в Windows редактора реестра можно изменять существующие значения параметров реестра, добавлять или удалять ключи.
Ошибочные настройки реестра могут нарушить нормальную работу отдельных приложений или всей системы. Ведь редактор позволяет вносить изменения в реестр, не проверяя, являются ли они корректными. Поэтому заниматься редактированием реестра следует только «продвинутым» пользователям и только в крайних случаях.
рживают 4 Гб памяти, реально работают с 2–3,5, поскольку другие компоненты компьютера, например видеокарта, занимают под свою работу часть «оперативки».
64-битная версия Windows (или x64) поддерживает ОП объемом до 128 Гб. Этого более чем достаточно для работы Windows-приложений в перспективе на ближайшие 10 лет. Естественно, 64-битная версия Windows требует значительных вычислительных ресурсов: ей нужен ПК, оснащенный более чем 4 Гб оперативной памяти и мощным процессором. Если установить 64-битную версию на ПК с процессором с тактовой частотой менее 2 ГГц и недостаточным количеством памяти (менее 2 Гб), она будет работать ощутимо медленнее, чем 32-битная.
Большой недостаток 64-битной версии заключается в том, что разработанные для 32-битной версии драйверы с ней не работают, а предназначенные для 64-битной есть далеко не ко всем устройствам. Кроме того, для многих из них создание таких драйверов даже и не планируется (эти устройства либо вообще нельзя использовать с 64-битной системой, либо функциональность их будет сильно ограничена).
В составе операционных систем Windows XP и Vista имеется множество утилит, которые нужны в повседневной работе. Вот наиболее важные из них:
Проигрывателя Windows Media, Фотогалереи
легко и удобно просматривать фотографии и фильмы, а также слушать музыку. Программы
помогут смонтировать фильм из отдельных видеоклипов и записать его на оптический диск;
• заниматься веб-серфингом вы можете с помощью встроенного в систему браузера
. Для приема и отправки электронных сообщений предназначены
• для управления файлами и папками как нельзя лучше подойдет
, а сохранить текущие настройки и файлы на случай непредвиденных сбоев системы позволит утилита
• на страже безопасности системы стоит
проинформирует о том, насколько хорошо защищен компьютер, а также загружены ли последние обновления системы. В Windows Vista, помимо этого, имеется средство защиты от сетевых атак
и функции родительского контроля и контроля учетных записей пользователя;
• прочие полезные утилиты – программа звукозаписи, текстовый редактор, калькулятор и графический редактор – также входят в состав стандартной поставки Windows. В Vista имеются и средства для распознавания голоса, которые позволяют управлять компьютером с помощью голосовых команд (пока только в англоязычной версии ОС).
Каковы перспективы развития Windows?
Ядро системы Windows XP и Vista все еще базируется на разработках, сделанных при проектировании Windows NT, то есть на технологиях пятнадцатилетней давности. Несмотря на то, что Microsoft дорабатывает это ядро для каждой новой версии Windows, в нем скопилось достаточно «пережитков прошлого». Функции, которые сейчас используются в Windows очень редко или не используются вообще, стали слабым местом в безопасности ОС и могут привести к сбоям в ее работе. Поэтому в настоящее время компания Microsoft работает над созданием нового ядра, получившего название Singularity (см. врезку).
Microsoft планирует изменить не только ядро системы, но и технологию хранения данных. В настоящий момент файлы размещаются на жестком диске компьютера, в будущем же не только большая часть самой Windows, но и данные пользователя (по его желанию) будут храниться на веб-сервере, что позволит получать доступ к своим данным и программам с любого ПК, и пользователь не будет жестко привязан к своему компьютеру. Концепция хранения данных в Сети не нова. Прежде попытки ее реализации терпели неудачу из-за низкой пропускной способности каналов связи, а также по соображениям недостаточной безопасности при передаче и сохранении персональных данных на удаленных компьютерах. И все-таки Microsoft шаг за шагом продвигается по этому пути: чат-клиент Windows Live Messenger после ввода данных пользователя загружает из Сети его профиль, список контактов и информацию о статусе, независимо от того, с какого ПК выполнен вход в программу.
Windows 7
Первые скриншоты операционной системы Windows 7 – преемника Vista – уже вовсю «гуляют» по Интернету! Новая операционная система должна увидеть свет в следующем году, о чем заявил основатель Microsoft Билл Гейтс. Пока неясно, идет ли речь о появлении предварительной версии или же о выпуске полноценной законченной ОС. Некоторые новшества уже известны. Windows 7 будет помещать файлы пользователя в специальный банк данных (а не записывать их на произвольное место жесткого диска), что позволит ускорить поиск нужной информации. Эта операционная система получит и новый Рабочий стол, разработанный той же командой, которая трудилась над интерфейсом Office 2007.
Пока что внешний вид рабочей версии Windows 7 мало чем отличается от Windows Vista
Singularity
За закрытыми дверями лабораторий Microsoft идет процесс создания «с нуля» абсолютно новой операционной системы, оснащенной другим ядром. Она будет лишена недостатков предыдущих версий Windows, и как результат, ей потребуется заметно меньше памяти для работы: 20 Мб против 300 или 500 Мб Windows Vista. Ядро Singularity будет поддерживать новые функции безопасности. Программы теперь не смогут напрямую обращаться к операционной системе или другим приложениям. Все подобные обращения будут отслеживаться специальными «охранниками», и система даст разрешение на их исполнение, только если они будут признаны безопасными.
Публикуется с сокращениями.
Windows — это одна из самых известных и распространенных операционных систем в мире, которая используется на множестве компьютеров, ноутбуков, планшетов и смартфонов. Но что же находится за ее привлекательным интерфейсом и как она функционирует внутри? В этой статье мы попытаемся разобраться в основных элементах архитектуры Windows, таких как ядро, подсистемы, драйверы устройств и т.д., и понять их роль и взаимосвязь.
Что такое архитектура Windows?
Архитектура Windows — это совокупность программных и аппаратных компонентов, которые определяют, как операционная система управляет ресурсами компьютера, обеспечивает взаимодействие между приложениями и устройствами, решает проблемы и защищает данные от постороннего доступа. Архитектура Windows может быть разделена на два основных уровня: ядро (kernel) и пользовательский режим (user mode). Ядро — это низкоуровневая часть операционной системы, которая работает в специальном режиме процессора и имеет непосредственный доступ к аппаратным ресурсам. Пользовательский режим — это высокоуровневая часть операционной системы, которая работает в обычном режиме процессора и содержит разнообразные приложения и службы. Ядро и пользовательский режим общаются друг с другом через специальные механизмы, такие как системные вызовы (system calls), сообщения (messages) и объекты ядра (kernel objects).
Windows поддерживает различные архитектуры процессоров, такие как x86, x64, ARM и ARM64. Каждая архитектура имеет свои особенности, такие как размер адресного пространства, набор инструкций, регистры и т.д. Windows адаптируется к разным архитектурам с помощью специального слоя абстракции аппаратного обеспечения (hardware abstraction layer, HAL), который предоставляет единый интерфейс для доступа к аппаратным ресурсам.
Windows отличается от других операционных систем своей гибкостью и совместимостью. Windows может запускать приложения, написанные для разных API (application programming interface), таких как Win32, POSIX, WinRT и т.д., благодаря подсистемам пользовательского режима, которые реализуют эти API. Windows также может работать с разными типами устройств, таких как клавиатуры, мыши, диски, принтеры и т.д., благодаря драйверам устройств, которые обеспечивают связь между ядром и устройствами.
Ядро: сердце операционной системы
Ядро — это низкоуровневая часть операционной системы, которая работает в специальном режиме процессора и имеет непосредственный доступ к аппаратным ресурсам, таким как память, диски, процессоры и т.д. Ядро отвечает за обработку запросов от приложений и устройств, планирование потоков исполнения, синхронизацию данных, обработку прерываний и исключений, защиту памяти и т.д.
Ядро Windows имеет гибридную структуру, то есть оно состоит из нескольких компонентов, которые работают на разных уровнях абстракции. Основные компоненты ядра Windows — это:
Ядро (kernel) — это самая низкоуровневая часть ядра, которая содержит базовые функции для работы с процессором, памятью и прерываниями. Ядро также содержит диспетчер объектов (object manager), который управляет объектами ядра, такими как потоки (threads), процессы (processes), события (events), семафоры (semaphores) и т.д., и предоставляет механизмы для синхронизации и коммуникации между ними.
Слой абстракции аппаратного обеспечения (hardware abstraction layer, HAL) — это часть ядра, которая адаптирует ядро к разным архитектурам процессоров и аппаратным платформам. HAL предоставляет единый интерфейс для доступа к аппаратным ресурсам, таким как таймеры, прерывания, шины и т.д., и скрывает от ядра специфические детали реализации этих ресурсов.
Executive — это часть ядра, которая содержит высокоуровневые службы для управления системными ресурсами, такими как память (memory manager), процессы (process manager), потоки (thread manager), ввод-вывод (I/O manager), безопасность (security reference monitor), конфигурация (configuration manager) и т.д. Executive также содержит подсистему Plug and Play (PnP), которая обнаруживает, устанавливает и управляет устройствами в системе.
Драйверы — это часть ядра, которая содержит программы для работы с различными типами устройств, такими как диски, клавиатуры, мыши, принтеры и т.д. Драйверы обеспечивают связь между ядром и устройствами через стек ввода-вывода (I/O stack) и модель драйверов Windows (WDM).
Ядро Windows работает в соответствии с моделью клиент-сервер. Клиентами являются приложения и подсистемы пользовательского режима, которые отправляют запросы к ядру через системные вызовы (system calls). Серверами являются компоненты ядра, которые обрабатывают эти запросы и возвращают результаты клиентам. Системные вызовы — это специальные функции API, которые переводят процессор из обычного режима в специальный режим и передают управление ядру. Системные вызовы обычно имеют префикс Nt или Zw, например, NtCreateFile или ZwQuerySystemInformation.
Ядро Windows также работает в соответствии с моделью прерываний. Прерывания — это сигналы от аппаратных устройств или программ, которые требуют срочного внимания от ядра. Прерывания могут быть синхронными или асинхронными. Синхронные прерывания — это прерывания, которые возникают в результате действий текущего потока, например, деления на ноль или обращения к неверному адресу памяти. Асинхронные прерывания — это прерывания, которые возникают в результате действий внешних устройств, например, нажатия клавиши или прихода пакета по сети. Прерывания обрабатываются специальными функциями, называемыми обработчиками прерываний (interrupt handlers), которые выполняют необходимые действия и возвращают управление ядру.
Ядро Windows обеспечивает высокую производительность, надежность и безопасность системы за счет своей гибридной структуры, модели клиент-сервер, модели прерываний и механизмов защиты памяти и доступа к ресурсам. Ядро Windows также поддерживает многозадачность (multitasking), многопоточность (multithreading) и многопроцессорность (multiprocessing), что позволяет эффективно использовать ресурсы компьютера и выполнять несколько задач одновременно.
Подсистемы: мост между ядром и приложениями
Подсистемы — это часть операционной системы, которая работает в пользовательском режиме и предоставляет различные API (application programming interface) для приложений. API — это набор функций, констант, типов данных и структур, которые определяют, как приложение может взаимодействовать с операционной системой и использовать ее ресурсы. Подсистемы реализуют разные API для разных типов приложений, таких как Win32, POSIX, WinRT и т.д.
Win32 — это основной API для приложений Windows, который поддерживает графический интерфейс пользователя (GUI), файловую систему, сетевое взаимодействие, безопасность и т.д. Win32 состоит из двух частей: пользовательской (user) и ядерной (kernel). Пользовательская часть отвечает за работу с окнами, меню, диалогами, контролами и т.д. Ядерная часть отвечает за работу с файлами, реестром, процессами, потоками и т.д.
POSIX — это API для приложений, написанных для UNIX-подобных операционных систем, который поддерживает базовые функции для работы с файлами, процессами, сигналами и т.д. POSIX позволяет запускать на Windows приложения, которые были разработаны для других платформ.
WinRT — это API для приложений Windows Store, который поддерживает сенсорный интерфейс пользователя (touch), метро-стиль (metro-style), контракты (contracts), уведомления (notifications) и т.д. WinRT основан на объектно-ориентированной модели COM (component object model) и может быть использован из разных языков программирования, таких как C#, C++, JavaScript и т.д.
Подсистемы пользовательского режима общаются с ядром через системные вызовы (system calls), которые передают запросы от приложений к ядру и возвращают результаты от ядра к приложениям. Подсистемы также общаются друг с другом через механизмы IPC (interprocess communication), такие как каналы (pipes), очереди сообщений (message queues), разделяемая память (shared memory) и т.д.
Подсистемы пользовательского режима работают под управлением интегральной подсистемы (integral subsystem), которая выполняет системные функции от имени подсистем среды. Интегральная подсистема состоит из двух компонентов: службы локального процедурного вызова (local procedure call service, LPCS) и службы сервера процессов (process server service, PSS). LPCS отвечает за передачу сообщений между подсистемами пользовательского режима и ядром через порты LPC (local procedure call ports). PSS отвечает за создание и завершение процессов подсистем пользовательского режима.
Подсистемы пользовательского режима обеспечивают гибкость и совместимость операционной системы за счет поддержки разных API для разных типов приложений. Подсистемы также обеспечивают изоляцию и безопасность операционной системы за счет работы в обычном режиме процессора и ограничения доступа к ресурсам ядра. Подсистемы также поддерживают многозадачность (multitasking) и многопоточность (multithreading), что позволяет выполнять несколько приложений и потоков одновременно.
Драйверы устройств: связующее звено между ядром и устройствами
Драйверы устройств — это часть операционной системы, которая содержит программы для работы с различными типами устройств, такими как диски, клавиатуры, мыши, принтеры и т.д. Драйверы устройств обеспечивают связь между ядром и устройствами через стек ввода-вывода (I/O stack) и модель драйверов Windows (WDM).
Стек ввода-вывода — это набор структур данных и функций, которые определяют, как данные передаются от приложений к устройствам и обратно. Стек ввода-вывода состоит из нескольких слоев, каждый из которых содержит один или несколько драйверов устройств. Слои стека ввода-вывода — это:
Высший слой (upper layer) — это слой, который содержит драйверы устройств, которые реализуют логические функции для работы с данными, например, шифрование, сжатие, фильтрация и т.д.
Промежуточный слой (intermediate layer) — это слой, который содержит драйверы устройств, которые реализуют протоколы для работы с данными, например, SCSI, USB, TCP/IP и т.д.
Низший слой (lower layer) — это слой, который содержит драйверы устройств, которые реализуют физические функции для работы с данными, например, чтение и запись на диск, передача и прием по сети и т.д.
Модель драйверов Windows (WDM) — это стандарт для разработки драйверов устройств для Windows, который определяет общие требования и интерфейсы для драйверов устройств разных типов. WDM состоит из трех частей: WDM базовый (WDM basic), WDM расширенный (WDM extended) и WDM потоковый (WDM stream). WDM базовый определяет общие функции для всех драйверов устройств, такие как загрузка и выгрузка драйверов, обработка запросов ввода-вывода (I/O requests), обработка прерываний и т.д. WDM расширенный определяет специфические функции для драйверов устройств Plug and Play (PnP) и энергосбережения (power management), такие как обнаружение и удаление устройств, переход в разные состояния питания и т.д. WDM потоковый определяет специфические функции для драйверов устройств аудио-видео потоков (audio-video streams), такие как форматирование и обработка потоковых данных, синхронизация потоков и т.д.
Драйверы устройств обеспечивают поддержку разных типов устройств в операционной системе за счет реализации специфических функций для работы с данными на разных уровнях абстракции. Драйверы устройств также обеспечивают гибкость и совместимость операционной системы за счет поддержки механизма Plug and Play (PnP), который позволяет автоматически обнаруживать, устанавливать и управлять устройствами в системе.
Подводим итоги
В этой статье мы рассмотрели основные элементы архитектуры Windows, такие как ядро, подсистемы и драйверы устройств, и поняли их роль и взаимосвязь. Мы увидели, что архитектура Windows имеет гибридную структуру, модель клиент-сервер, модель прерываний и механизмы защиты и синхронизации. Мы также увидели, что архитектура Windows поддерживает разные архитектуры процессоров, разные API для приложений и разные типы устройств. Мы поняли, что архитектура Windows обеспечивает высокую производительность, надежность, безопасность, гибкость и совместимость операционной системы. Мы также поняли, что архитектура Windows поддерживает многозадачность, многопоточность и многопроцессорность, что позволяет эффективно использовать ресурсы компьютера и выполнять несколько задач одновременно.