Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Религиозные войны > Какая архитектура ядра лучше?


Автор: alir 8.4.2006, 09:44
Неплохая тема для спора, так как обе архитектуры абсолютно противоположные.

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

P.S. Конечно, так напрямую сравнивать эти архитектуры неслишком корректно, все-таки я бы отнес их к разным задачам: например, монолитка очень подходит к системам, которые расширят попросту не нужно (например, система управления метрополитеном), а микро - для декстопов домашних пользателей. Но спор вызван тем, что большинство linux систем содержат более поздние реализации монолиток и являются, в какой-то мере пользовательскими, наряду с микроядром винды.

Ваше мнение?

Автор: ToshaCh 8.4.2006, 11:44
У винды микроядро???? Парень, ты не опечатался?
Цитата(alir @ 8.4.2006, 09:44 Найти цитируемый пост)
наряду с микроядром винды.


Автор: Exekutor 8.4.2006, 13:45
Цитата

Парень, ты не опечатался?


На сколько я знаю, у винды действительно микроядро

Автор: ToshaCh 8.4.2006, 14:00
Мдя
Я в шоке. alir, сорри.

Автор: VectorMan 9.4.2006, 18:29
знаменитый спор Торвальдса и Таненбаума на тему моно- и микро- ядер :-)

http://people.fluidsignal.com/~luferbu/misc/Linus_vs_Tanenbaum.html

Автор: Exekutor 18.4.2006, 14:02
Думаю, дело не в том, монолитное ядро или нет, а в том как оно организовано smile  

Автор: ALKS 19.4.2006, 10:41
у Семейства Windows NT (NT,2000,2003,XP) действительно микро ядро... ну настолько, насколько это понимает Microsoft smile 
а в целом спорить тут не очем. это таже история как что лучше RISC или CISC - сейчас уже нету разницы современные CPU используют и тот и другой подход и много чего еще. то же и с ядрами со временем провинутые OC будут использовать лучшее из обоих идей вот и всё. 

Автор: Парис 28.4.2006, 23:55
У винды микроядро?! Откуда такая информация, если не секрет (линк дайте)? Я, например, в этом очень сомневаюсь... 

Автор: Exception 29.4.2006, 00:02
Моё мнение? Везде нужно знать меру. 

Автор: chipset 29.4.2006, 09:33
Мне нравится ядро планеты Земля, вроде уже довольно долго работает а и не скажешь что оно маленькое. Посему микроядра хуже макроядер. 

Автор: dvd 20.6.2006, 12:44
А почему здесь не обсуждаются экзоядерные структуры? Они ведь тоже имеют место в современных ВС.
При активизации задачи выделяется определенное кол-во ресурсов (ядром) для ее решения (место на диске, порты и т.д.)  

Автор: nerezus 25.6.2006, 13:19
Цитата
знаменитый спор Торвальдса и Таненбаума на тему моно- и микро- ядер :-)

ну и где сейчас таненбаумовский миникс?
сравним линукс и миникс по актальности - вывод: линус прав ) 

Автор: powerfox 6.7.2006, 11:36
Цитата(nerezus @  25.6.2006,  14:19 Найти цитируемый пост)
ну и где сейчас таненбаумовский миникс?
сравним линукс и миникс по актальности - вывод: линус прав )

Minix - учебная операционная система, linux - рабочая станция. Их нельзя сравнивать. 

Автор: Sardar 7.7.2006, 11:19
dvd, они через чур экзотичные, тем более провести чёткую грань между экзоядерной и микроядерной ОС сложно, минимальное ядро что будет с тредами работать по любому должно существовать, ИМХО.

Парис, William Stallings - Operating Systems 5 издание.

Винда ИМХО впереди всех в этом плане по моему smile , микроядро, но все сервисы (Executive) находяться тоже в режиме ядра, потому тормозят меньше. Микро ядро не только означает, что сервисы должны выполняться в ползовательском режиме, но и чётко определённые минимальные интерфейсы/механимзы между сервисами. Таким образом винда быстра, но и модульна согласно общему дизайну, а не как в линухе где каждый модуль экспортирует набор символов, а другие эти символы юзают. Каждый модуль собственные символы экспортирует, вроде бы намёков на некие общие стандарты (хотя бы именование) по моему нет.

С другой стороны польза от микроядра малая если работа с тредами никакая или через чур тормозная. В этом плане по моему Solaris наиболее гибкий с его light-weight процессами и пользовательскими (не настоящими) тредами.

Микро ядра себя проявят на компах с десятками малых (допустим Cell) процессоров, это время ещё не пришло. Посмотрим что будет лет через 5 smile  

Автор: dvd 7.7.2006, 12:06
Sardar, сейчас грань между любой архитектурой ядра довольно размыта, поэтому нужно рассматривать все-таки уже полный спектр вариантов.
 

Автор: Sardar 7.7.2006, 12:23
dvd, между "настоящим" монолитом и микроядром всё таки чёткая граница есть smile
Монолит просто собирать, это единый process image, который разом можно зашить в микроконтроллер, который будет пахать несколько лет "без перезагрузки". Туева хуча функций, все доступны, жизнь красива пока железо не разрасёться, либо какой нибудь функции будет не хватать (зависимости по именам это жо...). Микроядро привлекает именно тем что ифейс чётко определён, в идеале можно получить спосок операций/мессаджей которые сервис может принять и пользуем сервис не выходя за рамки этого обявленного API. Типы мессаджей, их назначение, чётко описанны, отсюда сервис можно заменить, либо запустить несколько сервисов с похожим функционалом.

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

Автор: dvd 7.7.2006, 18:09
Sardar, я говорю о том, что в современных ВС присутсвуют так называемые гибридные типы архитектуры ядра. Ты же называешь разницу между эталонными примерами монолита и микроядра...
Гибридным присущи качества как одного, так и другого типа. 

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)