42

Архитектура ОС Windows и Linux

Добрый день Пикабушники!


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


Начнем с относительно простого ядра Linux.

Обсуждать тут в принципе нечего - любая программа через системные вызовы обращается к ядру ОС через интерфейс системных вызовов. Ядро через архитектурно зависимый код транслирует команды аппаратному обеспечению. Все это очень просто и быстро, единственное что заслуживает внимание - то что программы "видят" себя в едином виртуальном окружении независимо от архитектуры системы. Структура и системные вызовы стандартизированы и едины для любой аппаратной платформы. Графичесая подсистема является одной из внешних программ, поэтому сменить графическую оболочку можно без перезагрузки ОС. Кстати о графических оболочках:

GNOME3

KDE (Windows 7)

E17 (MacOS)

XFCE4 (WindowsXP)

I3 (фреймовый)


Теперь перейдем к Windows:

Как видим структура ядра намного более сложная. Преимущество это или недостаток? Каждый решает для себя сам. Программа под Windows обращается через документированный Windows API к "своей" библиотеке (например Kernel32.dll, Advapi32.dll, User32.dll, Gdi32.dll), эти библиотеки по внутреннему протоколу (документация для разработчиков не из Microsoft не доступна) обращается по протоколу Native API к Ntdll.dll и далее передается через диспетчер системных сервисов ядру (все это внутри Ntoskrnl.exe).


После обработки в режиме ядра и использованию драйверов данные передаются Hal.dll - библиотеке которая непосредственно управляет оборудованием. Второй системой управляющей оборудованием является графическое ядро (проприетарные функции видеокарт в основном касаются именно этого).


Важно отметить одну особенность пользовательского режима ядра Windows - "Подсистемы окружения". Эта компонента позволяет Windows использовать коды стандартов POSIX, Win16 и т.п. Данный механизм по сути является набором виртуальных ядер сторонних ОС и позволяет быстро адаптировать под Windows любой сторонний код.


Не менее важным является включение графической подсистемы в ядро (в современных серверных ОС данная система отключена или отсутствует), что во-первых не дает сменить графическую оболочку "на ходу", а во-вторых уже не способствует быстродействию...


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

Вы смотрите срез комментариев. Показать все
0
Маячок
Автор поста оценил этот комментарий

Не понял из статьи как между собой связаны "монолитность" и "быстродействие". По мне так параллельное обращение к службам, отвечающим за свою функцию, быстрее, чем последовательно нагружать систему разными командами. Надёжнее и менее требовательная к аппаратному обеспечению - вот это понятно из поста про Linux.

раскрыть ветку (9)
Автор поста оценил этот комментарий

Передача данных внутри программы всегда быстрее, чем межпрограммная передача. Если вспомнить о том как реализуется многозадачность.

раскрыть ветку (8)
0
Маячок
Автор поста оценил этот комментарий
Между чем и чем передача то?
раскрыть ветку (2)
0
Автор поста оценил этот комментарий
Посмотри на схемы
раскрыть ветку (1)
1
Маячок
Автор поста оценил этот комментарий

ну, я вижу в винде кучу параллельных передач, в линуксе такой параллельности не достичь. Это по схеме.

0
Автор поста оценил этот комментарий

а что вы подразумеваете под "передачей данных"? это такое емкое понятие..

раскрыть ветку (4)
0
Автор поста оценил этот комментарий
Системный вызов Linux попадает в ядро и через систему виртуализации передается на оборудование. Вызов Windows API проходит последовательно через несколько исполняемых модулей и библиотек. Сперва Windows API уходит в Native API, потом в исполнительную систему, потом в Hal, а уже потом на оборудование.
раскрыть ветку (3)
0
Автор поста оценил этот комментарий

Ваш ответ такой уверенный, что я Вам даже завидую: как можно так просто и четко ответить парой предложений на очень сложный вопрос.. Но ведь любая ОС содержит массу возможностей и вариантов реализации драйверов..

Например, и в Линукс и в Виндовс можно (при наличии прав пользователя и написания своего драйвера к своему оборудованию) тупо сделать мап адресов ввода-вывода устройства (например диапазон адресов памяти PCI устройства) прямо в пользовательское приложение. И тогда пользовательское приложение сможет напрямую обращаться в оборудование через указатель. Уж быстрее не куда.. Как вариант.. И все Ваши рассуждения о том какой вызов куда уходит и куда попадает - просто теряют смысл..

раскрыть ветку (2)
0
Автор поста оценил этот комментарий
Можно. Вы на практике так часто делаете?
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

не могу сказать чтобы прям все время так делаю (это совсем не мой профиль), но так можно и это вполне легально.

Что касается иных "системных" вызовов, то мне кажется довольно опрометчиво говорить о всех вызовах огульно. Имхо, многое зависит от типа обслуживаемого оборудования, класса устройства, типа и целей драйверов. Много нюансов.

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества