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

Чтобы выяснить, насколько Windows хороша на самом деле, нужно изучить ее ядро и понять, как оно устроено и на что способно. В этой статье мы сравнили Windows с Linux и Mac OS X и выявили сильные и слабые стороны этой операционной системы, имеющей так много пользователей и так мало поклонников.
 со словом «Windows» связано много предубеждений и мифов.  Например, бытует мнение, что работать в Windows крайне опасно, так как миллионы вирусов, гуляющих по Интернету, атакуют исключительно эту ОС. К тому же многие уверены, что детище Microsoft не отличается высокой производительностью: чем дольше вы пользуетесь этой системой, тем медленнее она работает. Что касается стабильности, то всем хорошо знаком пресловутый «синий экран». Это и неудивительно: Vista состоит из семидесяти миллионов строк кода — как тут не запутаться!
 Чтобы выяснить, справедливы ли все эти обвинения, необходимо заглянуть в ядро операционной системы и проверить, насколько оно отвечает трем критериям — безопасности, производительности и стабильности. А для сравнения рассмотрим ядра двух других систем — Linux и Mac OS X. Кроме того, мы подробно расскажем, какие методы используют Windows и ее конкуренты.
 Контроль над системой
 Ядро управляет операционной системой, поэтому именно от него зависит качество ОС. На нем держится буквально все. В частности, ядро выполняет роль интерфейса для компьютер ного оборудования: оно общается с внешними устройствами и управляет встроенными компонентами, такими как оперативная память, центральный процессор и жесткий диск.
 Чтобы обеспечить безопасность системы, ядро следит за всеми текущими
 процессами, определяя, какие программы и как долго могут пользоваться аппаратными ресурсами. Стабильность достигается за счет структурирования ресурсов. За этим стоят функции, к которым мы обращаемся каждый день — например, отображение файловых систем на жестком диске. Высокая производительность важна при возникновении конфликтов доступа — например, когда две программы пытаются записать данные на жесткий диск одновременно. В этом случае ядро расставляет приоритеты и предоставляет доступ одной из них, в то время как другой приходится ждать. Ниже мы подробно расскажем, как именно Windows справляется со всеми этими задачами.

Windows: работает на любом оборудовании
 Начиная с NT в архитектуре Windows выделяется два режима - пользовательский и привилегированный (режим ядра). Это относится и к Vista. В первом случае работает практически все, что доступно обычному пользователю, то есть приложения вроде Word или Photoshop. В этом режиме программы не имеют прямого доступа к оборудованию
 
 или оперативной памяти. Таким образом, пользовательский режим надежно изолирован, а все обращения к глубинам системы направляются через специальные интерфейсы, такие как Win32 API с системными библиотеками DLL (Dynamic Link Libraries).
 Такой режим ядра - фоновый и практически незаметен для пользователя. Все хорошо до тех пор, пока не возникает какая-либо проблема - например, драйвер режима ядра  не обрушивает всю систему, и взору пользователя предстает синий экран.
 Центральное значение здесь имеет файл ntoskrnl.exe. По аналогии с режимом ядра и пользовательским режимом его задачи также делятся на две части - слой ядра и исполнительную систему. Главная задача слоя ядра - планировать загрузку центрального процессора, то есть распределять процессорное время между отдельными программами. Исполнительная система отвечает за виртуальную память, процессы ввода-вывода и другие задачи.
 Глубже всего в системе располагается уровень аппаратных абстракций (Hardware Abstraction Layer, HAL). Он предоставляет другим слоям ОС службы для работы со встроенным оборудованием. За счет этого слой ядра может распределять процессорное время между программами независимо от того, какой процессор используется в компьютере - двуядерный AMD или четырехъядерный Intel. Если бы не HAL, Microsoft пришлось бы разрабатывать отдельную Windows для каждого компьютера.
 Linux: подгружает модули при необходимости
 Хотя ядро Linux и основано на Unix, сходства с Windows у него больше, -
 чем можно подумать. Оно также располагается непосредственно над оборудованием и играет роль своеобразной прослойки между ним и работающими программами. Стандартные задачи тоже схожи: как и в Windows, ядро сотрудничает с устройствами ввода-вывода и берет на себя управление памятью. Также оно управляет процессами, то есть решает, какая задача в данный момент имеет приоритет, и получает доступ к процессорному времени. Для этого на самых нижних уровнях ядра располагаются функции управления прерываниями (interrupts).

Запрос на прерывание посылает, к примеру, клавиатура, когда пользователь нажимает на любую клавишу. Этот запрос обрабатывается специальным системным механизмом - диспетчером. Он решает, насколько высока приоритетность прерывания, и включает его в очередь текущих процессов. Как только появляется возможность выполнить его, диспетчер приостанавливает протекающий процесс и сохраняет его статус. Только тогда прерывание, то есть введенная с клавиатуры команда, может быть реализовано.
 Архитектура Linux, как и Windows, имеет монолитное строение. Тем не менее ядро может динамически догружать различные модули. В основном они дополняют имеющиеся компоненты или даже полностью заменяют их.
 В ядро Linux встроены интерфейсы системных и библиотечных вызовов, а также пользовательский интерфейс. При этом важную роль играет интерфейс системных вызовов: он отвечает за процессы в целом. Специальной командой процессы переключаются из пользовательского режима в режим ядра.
 Mac OS X: сила двух ядер
 Ядро Mac OS X сокращенно обозначается как XNU - X is Not Unix. Эта аббревиатура соответствует действительности, потому что ядро операционной системы Apple скомбинировано из двух источников, и лишь часть его имеет отношение к Unix. Остальное компания взяла из проекта Mach - классического примера микроядра . При этом Mach используется только для передачи сообщений (message passing), то есть эффективной коммуникации между отдельными частями ядра. Помимо Mach XNU содержит код проекта FreeBSD, который основан на Unix. Эта часть отвечает за взаимодействие с пользователем, обработку сигналов и совместимость со стандартами POSIX. Последнее гарантирует, что большинство программ для Unix будут функционировать и в Mac OS X.
 Важным компонентом Mach является система ввода-вывода (I/O Kit). Именно в ней состоит существенное отличие от Windows и Linux: I/O Kit представляет собой дополнительный слой абстракций между оборудованием и остальной системой. Здесь находятся стандартные модели драйверов, на основе которых разработчики пишут их специализированные версии. Это способствует стабильности и повышает вычислительную мощность.
 Помимо служб ядра Mac OS X позволяет также использовать расширения ядра. Система загружает их динамически по мере необходимости. Часто в таких случаях говорят о гибридном ядре, однако эксперты относят ядро Mac OS X скорее к монолитным из-за особенностей его строения.

Процессы: цифровая подпись как средство защиты
 Важной задачей ядра является управление процессами. Под этим подразумевается не только расстановка приоритетов, но и обеспечение безопасности. В классическом варианте в Windows процессы запускаются и управляются через интерфейс Win32 API. В ядре этим занимается исполнительная система NTOS. Доступ к объектам ядра, относящимся к процессу, обеспечивают так называемые дескрипторы (handles). Текущие процессы в Windows могут запускать новые. Так, Word (процесс 1) может открыть новый документ (процесс 2). В классической модели Windows Word имеет право также стереть или изменить новый документ. Иными словами, по общему правилу процесс может
 распоряжаться порожденными собою же процессами.
 Однако в стандартных процессах есть одна лазейка, позволяющая обойти структуру доступа: это возможно при наличии полномочий на отладку программ - в данном случае администратору предоставляется полный доступ к процессу. Так, он может заглянуть в адресное пространство процесса, считать и изменить используемые в нем данные. Злоумышленникам это позволяет добавлять в процесс новые потоки.
 В связи с этим в Vista пересмотрена процессная модель специально для мультимедийных файлов и введен новый тип процессов - защищенные. Возможности манипулирования ими существенно ограничены: хотя ядро и предоставляет диагностическую информацию о таких процессах, но непосредственный доступ закрыт даже для администраторов.
 Согласно этому методу, кодек для просмотра фильма, например, может работать как защищенный процесс только при одном условии - его полный исполняемый код должен быть подписан цифровой подписью. Защищенные процессы - показательный пример того, как Microsoft приспосабливает устаревшую архитектуру Windows к современным проблемам.
 В Linux и Mac OS X процессная модель схожа с моделью Windows: процессы-«родители» контролируют порожденных ими «детей». Однако защищенных процессов, таких как в Vista, нет. Это неудивительно: Microsoft использует эту технологию в первую очередь для цифрового управления правами (Digital Rights Management). Таким образом, при наличии администраторских (root) прав в Linux и Mac OS X можно делать все, даже анализировать процессы и манипулировать ими.

Современные процессоры имеют адресную шину шириной 64 бит, однако несколько бит изначально отводится под другие задачи. Например, NX-бит препятствует исполнению данных DEP (Data Execution Prevention). При попытке выполнить код, который находится в участке памяти, помеченном «не для исполнения», возникает внутренняя ошибка. В Windows отключить DEP для 64-битных программ и драйверов нельзя, зато для 32-битных (все еще весьма распространенных) - не проблема. Это позволяет злоумышленникам вызывать переполнение буфера. В результате они могут инфицировать такие процессы, как Internet Explorer, и проникнуть внутрь системы. После того как вредитель закрепился в Windows, он может использовать Windows-API в своих интересах - например, для того чтобы считать нужные ему данные или изменить конфигурацию системы.


 Поэтому Microsoft ввела новую функцию защиты ядра - Address Space Load Randomization (ASLR - «рандомизация адресного пространства»). Частично она была реализована уже в SP2 для XP, но полностью - только в Vista. Ее суть заключается в следующем. В Windows входными воротами для злоумышленников обычно являются библиотеки - DLL, которые в предшествовавших версиях системы всегда загружались в одни и те же участки памяти. С ASLR системные DLL и исполняемые файлы при каждой загрузке системы попадают в разные участки оперативной памяти, чтобы вредоносное ПО больше не могло атаковать системные операции по стандартным адресам. Для этого менеджер памяти имеет в своем распоряжении 256 различных адресов и при загрузке DLL выбирает один из них случайным образом. Такая «плавающая» стратегия ASLR имеет дополнительное преимущество: адресное пространство упаковано плотнее, чем в более ранних версиях Windows, так что непрерывных свободных участков в памяти остается больше.
 В специальных дистрибутивах Linux, таких как Hardened Gentoo, ASLR уже полностью реализована. В стандартном же ядре содержится лишь неполный вариант. В современной Mac OS X ASLR используется для нескольких библиотек, но их полноценная реализация, к сожалению, отсутствует.

Проверка подлинности: надежный код
 В качестве противоядия Microsoft использует в Vista подпись кода в режиме ядра (KMCS), которая разрешает загружать лишь те драйверы устройств, которые снабжены цифровой подписью. Большинство драйверов получают подписи через лабораторию WHQL (Windows Hardware Quality Lab), однако разработчики могут подписывать свой код сами - правда, для этого им нужен действительный сертификат.
 Windows проверяет также, имеет ли выданный сертификат отношение к одному из центров сертификации, данные о которых содержатся в загрузчике Windows и ядре ОС. Надо сказать, что 32-битные системы Vista, хотя и проверяют цифровые подписи, все-таки позволяют загружать и неподписанные драйверы. В 64-битных Windows такой номер не пройдет.
 Все модули ядра в Mac OS X и Linux, в принципе, могут иметь цифровую подпись. Хотя теоретически это относится и к драйверам, никаких механизмов проверки в этих операционных системах не встроено.
 MMCSS: приоритет видео
 Планировщик Windows «жонглирует» несколькими процессами, открытыми одновременно. Каждое приложение на определенное время получает доступ к вычислительным мощностям центрального процессора, затем уступает место другим и снова ждет своей очереди. Чтобы такого не происходило, например, когда вы смотрите фильм, в Windows встроены специальные функции для мультимедийных файлов. Поэтому антивирусы и службы Windows работают, как правило, в фоновом режиме и не мешают просмотру.
 В Vista приоритет фильмов и музыки обеспечивается службой планирования мультимедийных классов - MMCSS. Для этого мультимедийное приложение, такое как Windows Media Player, сначала должно зарегистрироваться в этой системе. Данная служба, реализованная в файле %SystemRoot%\ System32\Mmcss.dll, включает в себя поток для управления приоритетами. Windows предусматривает ступени приоритетности от 0 до 31, при этом MMCSS получила очень высокое значение - 27. Соответственно, приоритетность всех зарегистрированных мультимедийных потоков поднимается до 27. С 16-й ступени начинается режим реального времени, то есть потоку с приоритетом 16 остальные помешать уже не могут.

Linux предлагает более высокую градацию шкалы приоритетности - от 0 до 99. Для мультимедийных задач, например на медиасерверах, такая разбивка подходит лучше. В Mac OS X планировщик является одним из используемых компонентов Mach. Шкала приоритетности здесь еще мельче - от 0 до 127, и это не единственное подтверждение того, что Mach намного современнее, чем Linux и Windows. В Mac OS X мультимедийное приложение может даже присвоить себе фиксированную долю вычислительного времени. При достаточной мощности это практически исключает риск образования узких мест.
 Ввод-вывод: приоритетность задач
 Высокая приоритетность при просмотре фильмов может негативно отразиться на многозадачности. Так, до XP в Windows существовали серьезные проблемы с фоновыми службами, например автоматической дефрагментацией. Конечно, это помогало поддерживать жесткий диск в порядке, но кому же понравится, когда, к примеру, Outlook перестает работать на два часа?
 Однако благодаря приоритетности ввода-вывода ждать больше не придется. Так, в Vista процессы «переднего плана» (не фоновые) всегда пользуются преимуществом, и дефрагментация приостановится до тех пор, пока пользователь не сделает в своей работе очередную паузу. Система ввода-вывода в Vista предполагает пять ступеней приоритетности - от «очень низкая» до «критически важная»; стандартный уровень - «нормальная». Фоновым задачам Windows автоматически присваивает низкую приоритетность, однако менеджер памяти всегда считается критически важным: действительно, когда оперативной памяти начинает не хватать, он должен незамедлительно сбросить данные на жесткий диск.
 Такие команды ввода-вывода, посылаемые от драйверов устройств, как движение мыши, поступают в очередь обычно со средней приоритетностью.
 Еще одна ценная возможность заключается в том, что Vista может резервировать для операций    ввода-вывода фиксированные диапазоны.  Так,  например, Windows Media Player может потребовать от системы  ввода-вывода гарантию,  что   фильм будет считываться с DVD в определенном темпе. В то время как в Vista приоритетность ввода-вывода - нововведение, в Mac OS X и Linux данный прием используется давно. В Mac OS X это заложено глубоко в архитектуре, так как для передачи сообщений используется Mach. В Linux начиная с ядра 2.6 тоже встроена эффективная схема приоритетов.

Адресное пространство: динамическое управление
 32-битные процессоры накладывают на Windows и инсталлированные программы серьезные ограничения в отношении адресного пространства. Так, ядро Windows не может занимать больше 2 Гбайт. Если нужно выделить место для драйверов, кеша файловой системы и стека, это может привести к определенным трудностям. Поэтому в Vista адресное пространство ядра динамическое: оно занимается раздачей и разблокированием участков в зависимости от рабочих потребностей.
 Linux и Mac OS X не имеют строгих ограничений. Конечно, и в этих операционных системах общие размеры ядра имеют свой предел. Однако в целом формат отдельных компонентов никак не ограничен. Действительно, в отличие от Windows, в этих системах нет четкого разделения между пространством ядра и драйверов.
 KTM: предотвращение программных сбоев
 Если приложение намерено предпринять ряд взаимосвязанных изменений, оно может создать либо дескриптор KTM («диспетчера транзакций ядра») и транзакцию DTC (Distributed Transaction Coordinator - «координатора распределенных транзакций»), либо просто дескриптор KTM и выполнять изменения файлов и ключей реестра в рамках этой транзакции. Если все проходит успешно, транзакция подтверждается и изменения принимаются. До этого программа может в любой момент отменить весь процесс. Дополнительное преимущество заключается в том, что другие приложения видят эти изменения только после того, как транзакция принята.
 Ядра Mac OS X и Linux тоже работают с транзакциями. Пользователь, как правило, этого совсем не замечает, если не считать сбоев при установке обновлений. Впрочем, в обеих ОС это никак не подрывает стабильность системы, просто транзакции не будут исполнены.

Windows 7, 8, 9...
 На данный момент следующая за Vista версия называется просто Windows 7 . При этом ни для кого уже не секрет, что Microsoft работает над новой архитектурой Windows. Прототипом операционной системы будущего должны стать два проекта. Singularity обещает нам Windows без «синих экранов» и зависаний. Проект основан на трех ключевых функциях: программно-изолированные процессы (SIP), микроядро и каналы (channels). Микроядро обеспечивает лишь неотъемлемые «ядерные» функции, такие как управление памятью, процессами и каналами, планировка процессорного времени и управление вводом-выводом. Все другие функции перекладываются на модули и реализуются изолированно друг от друга через SIP-процессы. Проект Midori рассчитан на отдаленную перспективу. Его ядро будет иметь модульную структуру. Преимущество заключается в том, что новая Windows будет лучше работать на различных платформах, таких как нетбуки, КПК и мобильные телефоны.

 
 
Подписка
На новости


Подписаться письмом
Поиск на сайте 

 
   
 
DSGN © Rambler's Top100
Hosted by uCoz