LINUX.ORG.RU
ФорумTalks

Windows NT kernel vs. Linux kernel

 


0

4

В одной из тем Reset сказал что ядро winnt лучше ядра linux.
Это не вопрос из серии «что лучше, виндавс или линуск». Таких вопросов не встречал на лоре, зато забитых спамом неочемных тредов хватает. Но вопрос не об этом.
Так вот, чем отличаются эти два различных ядра ОС на данный момент, их достоинствах и недостатках, удобству и возможностям API, особенностям написания драйверов и пр. по теме предлагаю здесь обсудить.



Последнее исправление: cetjs2 (всего исправлений: 3)

Ядро NT более модульное, чем Linux. Все разделено и порезано на интерфейсы. И довольно стабильные.
Раньше ядро NT было более технологичным, чем Linux. Когда там в Linux появились вытесняемые потоки ядра? Так вот в NT это было изначально.

bigbit ★★★★★
()
Ответ на: комментарий от Black_Shadow

(пожимая плечами) Вики против Руссиновича и здравого смысла, okay.

tailgunner ★★★★★
()
Ответ на: комментарий от GanGSISoft

в ядре linux нету internet explorer

Хорошо сказано, так и есть. Хотя уже есть планы впилить в kernel аналог... dbus. Хорошо что Леннарт не в разработчиках ядра.

nerdogeek
() автор топика
Ответ на: комментарий от tailgunner

А почему нет? Организованные в очереди. отправляемые из отдельных потоков... Классические сообщения, в общем-то.

no-dashi ★★★★★
()
Ответ на: комментарий от comp00

Возьми например исходники ReactOS, стыбренные куски win2000, почитай Руссиновича, всякие мануалы по написанию ядерных модулей под винду содержат много интересной инфы. Для различий на прикладном уровне посмотри имплементацию boost::asio под винду, попрогай на системном уровне под обе платформы, попробуй написать реализацию пула потоков под обе платформы.

nerdogeek
() автор топика
Ответ на: комментарий от Black_Shadow

Учитывая FUSE, libusb, User-space page fault handling можно ли считать Linux гибридным ядром? Кроме того, разве ядро Linux не находится частично в вытесняемой памяти? И в чем заключается «передача сообщений» в рамках одного адресного пространства?

DesertFox
()
Ответ на: комментарий от no-dashi

А почему нет?

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

Классические сообщения, в общем-то.

Я бы назвал «классическим» сообщение, которое можно передать по сети или между двумя изолированными процессами. IRP под таоке определение не подходят.

tailgunner ★★★★★
()
Ответ на: комментарий от DesertFox

Можно считать, что границы между микроядрами и монолитными ядрами уже не такие четкие, как в конце 80-х.

разве ядро Linux не находится частично в вытесняемой памяти?

Если ты о коде, то нет.

tailgunner ★★★★★
()

их достоинствах и недостатках,

в вантузе драйвера не надо переписывать для каждой новой/старой версии ведра, нэ? ещё, вроде, при падении драйверов на видео, он может сам переключиться на vesa, не уронив de.

thunar ★★★★★
()
Ответ на: комментарий от i-rinat

fuse — это очень хорошо. ещё некоторые драйвера на wifi прямиком с свенды похожим способом могут в линаксе выполняться. но таким примеров мало, а пока по прежнему — кривые драйвера ставят раком всю систему.

thunar ★★★★★
()
Ответ на: комментарий от tailgunner

У меня вопросы к термину «гибридный». А то что в Linux появляются возможности придуманные изначально для микроядер, не делает его самого микроядром.

Если ты о коде, то нет.

Даже код модулей? А структуры данных хоть?

DesertFox
()
Ответ на: комментарий от Black_Shadow

Ну вот из ссылки не ясно что есть такого в винде такого, чего нет линуксе, что делает ее гибридной.

DesertFox
()
Ответ на: комментарий от tailgunner

В русской википедии вообще странная класификация. Там например есть такой класс, как экзоядро, хотя в англиской вики — это уже просто реализация микроядра, разработанная в MIT. Да и я раньше слышал упоминания о экзоядре, как о конкретной реализации, а не о классе ядер.

DesertFox
()
Ответ на: комментарий от thunar

в вантузе драйвера не надо переписывать для каждой новой/старой версии ведра, нэ?

Еще как надо, особенно после глобальных переделок с архитектурой драйверов начиная с windows vista (пруф в win ddk)

nerdogeek
() автор топика
Ответ на: комментарий от DesertFox

Код же маленький, какой смысл его свопить и усложнять ядро. Насчет данных - вроде бы да, но сам я не пользовался; в любом случае, на использование выгружаемой памяти накладываются ограничения.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Это «гибридное ядро» - термин мутный.

Торвальдс считает этот термин маркетинговым фуфлом. В данном случае он прав. Linux, NT, ядра *BSD, xnu — всё это монолитные ядра с поддержкой загружаемых модулей.

Relan ★★★★★
()
Ответ на: комментарий от tailgunner

anything based on message passing is stupid

Угу. Я тут как раз недавно измерял одну фигню. Оказалось, что в OS X взаимодействие между приложением и драйвером посредством сообщений Mach в 4 раза медленнее старого-доброго ioctl.

Relan ★★★★★
()
Ответ на: комментарий от RedPossum

у маркетологовжадных до денег писателей про ООП языки(С++,жаба) call (процедурный) метода обьекта называют «посылкой сообщения»

ни разу не видел

Посмотри Objective-C например.

Relan ★★★★★
()
Ответ на: комментарий от qulinxao

у маркетологовжадных до денег писателей про ООП языки(С++,жаба) call (процедурный) метода обьекта называют «посылкой сообщения»

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

mono ★★★★★
()
Ответ на: комментарий от RedPossum

есть/были ширпотребные книжки

где сначала «втирают» про всесильное и потому верное учение ооп, обмен сообщений промеж объектов , затем хеловордят всякими круг и квадрат наследники фигура и там «посылки сообщений» во «все поля» через вызовы методов - печаль печаль.

qulinxao ★★☆
()
Ответ на: комментарий от mono

Вызов метода в нормальных ООП-языках - это не одно и тоже, что и (процедурный) вызов функции

Думаю, такие языки никому не интересны, по крайней мере в контексте обсуждения ядер.

tailgunner ★★★★★
()
Ответ на: комментарий от thunar

при падении драйверов на видео, он может сам переключиться на vesa, не уронив de.

Это самая большая киллер-фича после фотошопов, драйверов и ИГОР.

druganddrop-2 ★★
()
Ответ на: комментарий от mono

сожелею , но с теорией акторов знаком.

я веду речь про «макулатуру» в которой вызов(даже не виртуальный) называют посылкой сообщения .

qulinxao ★★☆
()
Ответ на: комментарий от svu

Каким боком тут 4.4?

Запрещаются обсуждения действия или бездействия модераторов, за исключением форума «Linux-org-ru». Оставьте модерирование модераторам, в случае их бездействия используйте email.

dk-
()
Ответ на: комментарий от qulinxao

Вызывающему вообще не обязательно знать, что там будет дальше, виртуальный это метод или нет, поэтому и зовется все единообразно.

Посылка сообщений подчеркивает тот факт, что это не прямой вызов конкретной функции.

Я думаю, что это скорее хорошо чем плохо, потому что разграничивает прямой вызов функции и вызов метода через посылку сообщений.

mono ★★★★★
()
Ответ на: комментарий от mono

прикол вот в чём.

когда реально посылка сообщения то в поведении реализации не важно мир обьектов процесируется всеведующим CPU -1 штука или каждый обьект это реально отдельное исполняющее устройство.

а вот когда втирают про обьекты и посылку сообщения а реализация использует что точка исполнения монопольно всем миром может распоряжатся - вот это вот «идти против реальности» и калечит всяких ООП фанатов наследования круга и квадрата от фигуры.

всеобуч при котором задачи декомпозиции начинают обьяснят людям просто не понимающим классификации это заведомый фэйл.

называть посылкой сообщения хардкоденый вызов (даже и виртуальный) который синхронен и остановливается в месте вызова пока обработчик сообщения не вернёт - это просто «порча языка» вынуждающая для отличения ситуацию с реальной посылкой сообщения (допускающую асинхроность) - обзывать колбэками и иными крокодилами.

qulinxao ★★☆
()
Ответ на: комментарий от mono

отправляющий сообщения не обязан ждать ответа.

может ждать . и может и не ждать. в этом суть .

qulinxao ★★☆
()
Ответ на: комментарий от druganddrop-2

С семерочки вроде это убрали

А еще ее с нуля написали.

roman77 ★★★★★
()
Ответ на: комментарий от thunar

А в вантузе всю систему раком ставят не только кривые драйвера, но и любой удачный баг обычного приложения: например, прорисовка 3Д графики в бесконечном цикле без временных задержек между кадрами. Ещё, неудачная инициализация окошка прикладным приложением - и привет, система ловит блюскрин: вся графика в ядре же.

next_time ★★★★★
()

ты пытаешься сравнить тёплое с мягким. Ядро венды нельзя рассматривать отдельно от венды. Ядро Linux можно, да только использовать его отдельно тоже нельзя. Потому сравнение не имеет смысла. Деление на ноль ИМХО.

drBatty ★★
()
Ответ на: комментарий от vklolz

Например, Руссинович в одном из интервью сказал, что он переписал свой FileMon под винду, потому что там было проще повесить свои хуки. И это часть функционала ядра NT, в линуксе он такой гибкости не увидел.

а в линуксе его файлмон и не нужен. Есть lsof. Никаких хуков не нужно, всё делается стандартно.

drBatty ★★
()
Ответ на: комментарий от qulinxao

у маркетологовжадных до денег писателей про ООП языки(С++,жаба) call (процедурный) метода обьекта называют «посылкой сообщения»

ну это и есть посылка сообщения. Лично я не очень понимаю, о чём вы спорите? Ярлыки вешаете что-ли?

drBatty ★★
()
Ответ на: комментарий от Black_Shadow

выше в треде уже рассказали, что «гибридное ядро» - это не то, чтобы marketing bullshit, но недалеко.

И да, по определению линукс - вполне себе гибридное ядро, особенно если учеть FUSE и userspace helpers

Dark_SavanT ★★★★★
()
Ответ на: комментарий от drBatty

не не не Дэвид Блэйн.

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

just it

поэтому «маркетологи» монолитное ядро на чистом глазу называют ядро гибридным ибо в нём есть пересылка сообщений . ибо есть вызовы(синхроные) функций.

qulinxao ★★☆
()
Ответ на: комментарий от drBatty

а в линуксе его файлмон и не нужен. Есть lsof. Никаких хуков не нужно, всё делается стандартно.

разрыдался

vasily_pupkin ★★★★★
()
Ответ на: комментарий от drBatty

И в каком месте lsof аналог FileMon, если последний показывает все обращения всей системы в реальном времени?

Впрочем, внятного ответа от тебя не добьёшься.

Artificial_Thought ★★★★
()
Ответ на: комментарий от drBatty

Так в технической литературе написано

такой большой, а в сказки веришь...

Не думаю что сравнение технической литературы со сказками корректно. Давай так, называть ядро NT «гибридным» - устоявшийся техническим термин. Сколько в этом названии маркетинга, а сколько здравого смысла - этот вопрос открыт для обсуждения. Но то, что большинство специалистов всё таки называет его гибридным - факт. Именно об этом я и говорил, не более.

mbivanyuk ★★★★★
()
Ответ на: комментарий от qulinxao

поэтому «маркетологи» монолитное ядро на чистом глазу называют ядро гибридным ибо в нём есть пересылка сообщений . ибо есть вызовы(синхроные) функций.

Извини, я немного запутался. То есть то, что такая пересылка сообщений (ну или назови её как тебе нравится, суть от этого не меняется) между модулями (компонентами) ядра в NT, находящимися в вытесняемой памяти, есть ты согласен? В ядре Linux как я понимаю такого нет, ну только если между ядром и модулем, который по сути и есть вынесенная для динамической загрузки часть ядра, не более. Следовательно называть ядро NT монолитным нельзя, поскольку это присуще как раз микроядрам, правильно? Тогда почему ты не согласен с термином «гибридное»?

mbivanyuk ★★★★★
()
Ответ на: комментарий от qulinxao

ИМХО «сообщения» это вообще говоря функция в общем виде. Т.е. «вызов функции» можно считать «отправкой сообщения». Почему нет? Например, когда я вызываю unlink(2), я отправляю сообщение ядру «удали имя файла», на что мне приходит ответ, 0 или -1. Т.о. _любое_ ядро можно считать «гибридным» в этой вашей терминологии. Эта «гибридность» не более чем плюсик в таблице из википедии и пункт в рекламной листовке. ИМХО winnt имеет типичное монолитное ядро, а «сообщения» там истинными сообщениями не являются, а являются скорее просто внутренним стандартом вызова внутренних функций(который ещё и AFAIK нарушается сплошь и рядом)

drBatty ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.