LINUX.ORG.RU
ФорумTalks

Windows NT kernel vs. Linux kernel

 


0

4

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



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

модераторы ЛОРа не знают, что ядро ОС != ОС ?

оскорбление чувств верующих же!

annulen ★★★★★
()

Где-то тут должен быть комментарий про стабильный ABI.

cipher ★★★★★
()

Ядро Linux монолитное, ядро winnt гибридное. Гибридное ядро унаследовало недостатки как монолитных, так и микро-ядер.

Black_Shadow ★★★★★
()

Можно ли в полной мере оценивать крутизну ядра ОС, не имея доступа к исходным кодам?

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

Будто исходники Win2k не утекали. Да и WRK есть.

Kuzz ★★★
()

На ядре линукс видно как убунту с гентой, так и андроид и различную ембедщину. В некоторых случаях даже файловую систему не придумывают, тупо скармливают ядру единственный бинарник. А ядро винды рассмотреть в отрыве от ОС не получится.

PolarFox ★★★★★
()
Последнее исправление: PolarFox (всего исправлений: 1)

Где-то на серверке валялась древняя, середины 90-х, дока по поводу сравнения ядра NT 4.0 и kernel 2.2.x

Deleted
()

Главные отличие ядра NT - 1. Оно гибридное, в отличие от монолитного ядра Linux. Состоит из модулей как в микроядерных ОС, но все компоненты выполняются в едином адресном пространстве. 2. Графика выполняется в режиме ядра

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

Главные отличие ядра NT - 1. Оно гибридное, в отличие от монолитного ядра Linux. Состоит из модулей как в микроядерных ОС, но все компоненты выполняются в едином адресном пространстве

И отличие в чем именно? Ядро Linux монолитное, но тоже из модулей, и тоже в одном адресном пространстве.

tailgunner ★★★★★
()

Философия linux (unix) - «все есть файл». Это дает возможность работать с объектами ядра как с файлами.

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

Сравнивать их не совсем корректно, так как это разные архитектуры.

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

Состоит из модулей как в микроядерных ОС, но все компоненты выполняются в едином адресном пространстве.

И в чём тогда «гибридность»? В том, что так написано в рекламном буклетике?

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

Обычно даваемый ответ - в NT модули (компоненты) ядра могут обмениваться сообщениями, взаимодействовать и так далее. А в Linux это лишь вынесенная в модуль часть кода ядра. Насколько это так и насколько это существенное отличие - тут можно спорить долго, я не знаю.

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

И в чём тогда «гибридность»? В том, что так написано в рекламном буклетике?

Ну не в буклетике конечно. Так в технической литературе написано. Но насколько это соответствует истине не могу с уверенностью сказать.

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

Общепринято мнение, что у Linux - обычное монолитное ядро (здесь «монолитное» означает, что всё выполняется в одном алдресном пространстве). А ты хочешь сказать, что у Linux тоже гибридное ядро?

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от mbivanyuk

И в чём тогда «гибридность»? В том, что так написано в рекламном буклетике?

Ну не в буклетике конечно.

Вообще-то именно в буклетике. «Гибридное ядро» - это маркетинговый термин, и то, что этот маркетинг ориентирован на технарей, ничего не меняет.

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

Какое же оно монолитное, если можно модули загружать?

Монолитное как я понимаю означает что все части ядра выполняются в едином адресном пространстве. А модульное - что части ядра могут подгружаться динамически. То есть ядро Linux будучи модульным продолжает оставаться монолитным.

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

в NT модули (компоненты) ядра могут обмениваться сообщениями, взаимодействовать и так далее

Компоненты NT executive взаимодействуют посредством вызовов процедур - так же, как и в Linux.

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

А ты хочешь сказать, что у Linux тоже гибридное ядро?

Я всегда считал, что гибридное. Сейчас глянул вики. Похоже, остальной мир иного мнения. Но там на картинке вне ядра какой-то Unix Server и файловая система. FUSE вполне на роль файловой системы подходит.

В общем, все эти классификации слишком мутные. И бесполезные.

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

Ну маркетинг тоже наверное имеет место быть, но не всё так просто. Отдельные модули ядра NT обмениваются сообщениями (только не спрашивай какими, тут важна принципиальная возможность), то есть взаимодействуют как в микроядерных ОС. Это невозможно если ядро монолитное. Но учитывая общее адресное пространство назвать это микроядерной ОС тоже неправильно. Поэтому и придумали такой нейтральный термин. Это вроде как общераспространённая точка зрения, так что просьба лично меня сильно не пинать.

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

Отдельные модули ядра NT обмениваются сообщениями

Какие именно модули? Все, о которых я читал, взаимодействуют на уровне процедурных вызовов.

tailgunner ★★★★★
()

В одной из тем Reset сказал что ядро winnt лучше ядра linux.

Ну да, оно «четче».
А скажите пожалуйста, а где вы вообще Windows NT kernel видели? Или я что-то пропустил или оно теперь открыто?
Или вы устроились в компаньоны Babushkin'ну о пилите масдайные ядра потихонечку для майкрософта?

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

Как раз прикол микроядра в том, что каждый сервис в своём адресном пространстве. А то, что ядро нт называют «гибридным» - очередной маркетинговый ход, имхо.

Кстати, в линуксе есть user space helpers, которые как бы часть ядра, но работают на стороне юзера. Так, что линукс можно считать даже большим микроядром, чем виннт.

nanoolinux ★★★★
()

если ресет принял лекарства, то кина не будет, а если пропустил, то ты получишь ответ на свой вопрос ;)

GoNaX ★★★
()

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

http://habrahabr.ru/post/179333/

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

Ну и вопросы ты задаёшь на ночь :) Я призвал на помощь гугл и нашёл принципиальное описание - «Часть Windows NT, работающая в режиме ядра, называется executive - исполнительной частью. Она включает ряд компонент, которые управляют виртуальной памятью, объектами (ресурсами), вводом-выводом и файловой системой (включая сетевые драйверы), взаимодействием процессов и частично системой безопасности. Эти компоненты взаимодействуют между собой с помощью межмодульной связи. Каждая компонента вызывает другие с помощью набора тщательно специфицированных внутренних процедур». То есть некие внутренние процедуры между модулями (компонентами). Источник - http://emanual.ru/download/9550.html

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

эээээ всё есть файл это план9 и далее инферно ну ща в golang - (всё стараются через Ридер/Врайтер и каналы внутри)

а linux - как юникс имел 100500 разных интерфейсов для разных разностей так и имеет.

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

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

«I will tell you anything based on message passing is stupid. It's very simple:

- if you end up doing remote communication, the largest overhead is in the communication, not in how you initiate it. This is only going to be more true with mobile computing, not less.

Ergo: optimizing for message passing is stupid. You should _always_ optimize for the local case, because it's the only case where the calling protocol really matters - once you go remote you have time to massage the arguments any which way you like.

- Most operations are going to be local. Any operating system that starts out from the notion that most operations are going to be remote is going to die off as computers get more and more powerful.

[...]

In short: message passing as the fundamental operation of the OS is just an excercise in computer science masturbation. It may feel good, but you don't actually get anything DONE. Nobody has ever shown that it made sense in the real world. It's basically just much simpler and saner to have a function call interface, and for operations that are non-local it gets transparently _promoted_ to a message. There's no reason why it should be considered to be a message when it starts out. »

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

их передача сообщений такаяже как

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

очень печалит когда маркетологические+идеологические соображения коррумпируют язык.

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

Какие именно модули? Все, о которых я читал, взаимодействуют на уровне процедурных вызовов.

Всяческие связанные с I/O, в части асинхронных запросов и подтверждений завершения их выполнения как минимум.

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

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

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

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

Всяческие связанные с I/O, в части асинхронных запросов и подтверждений завершения их выполнения как минимум.

Будет время - посмотрю в краденые исходники. Но я бы не назвал IRP-пакеты сообщениями.

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