qeos писал(а):
помнится на лекциях по операционным системах давали вводную что для ядра достаточно нескольких функций (около 3-х)..
значит микро ядро это минимальный набор функций...
Точнее, не минимальный, а минимальный, реализованный именно в ядре. Фактически нужны как раз три или четыре функции: создать "почтовый ящик", удалить "почтовый ящик" и послать сообщение, а в случае, если микроядро не занимается переключением потоков -- ещё и получить сообщение (в этом случае микроядро -- просто "почтовая станция", а "почтовый ящик" -- очередь сообщений для конкретного потока; если же оно занимается переключением потоков, то "почтовым ящиком", по сути, является сам поток, и микроядро должно знать, как ставить сообщения к нему в очередь, откуда он их сам уже будет вытаскивать).
Цитата:
как только появляется дополнительные, на вроде обработчика таймера, работы с шинами или проч., то это уже гибрид.
Все остальные функции могут быть реализованы снаружи микроядра. Только в этом случае получается действительно микроядерная система, как оно изначально закладывалось в концепцию.
Цитата:
кто как называет свое ядро, мне по большому счету все равно. идеальных теоретических микро ядер не существует. как и любых других..
Ну, названия просто могут сбивать с толку. Если считать истинно микроядерной QNX, то Вислу и Вынь-7 надо признать "полумикроядерной" -- там же изрядная часть драйверов (включая драйверы УСБ-устройств и почти весь драйвер графики) вынесена за пределы ядра :)
Цитата:
Я просто хотел определиться с минимальным функционалом ядра. судя по L4 это 150К кода с коментариями..
Учитывая, что в моей любимой RSX-11 без комментариев и драйверов что-то вроде 30 тысяч строк на ассемблере... Не, функционал у неё, безусловно, существенно меньше современных систем, но не до такой же степени :) А она никогда на микроядерность не претендовала (хотя таки тоже "полумикроядерная": тяжёлые драйверы, в т.ч. файловые системы, там реализованы как задачи).
Цитата:
и вообще в чем сложность написать универсальное наноядро (или монолит) и пристроить к нему некий функционал (не драйвер и не встроенное в ядро), который сделает определение микроядро.. т.е. компоненты ядра... не драйвера, но обслуживающие программы.. а уже выше надстроятся драйвера.. и это уже фиг знает какой гибрид...
Сложности нет, есть неэффективность, причём колоссальная. В QNX потому и вынесли только драйверы, что, как правило, время выполнения операции ввода-вывода многократно превосходит время переключения контекста, а потому потери на этих переключениях в случае именно ввода-вывода будут несущественными. А вот для чисто программных механизмов время переключения контекста составляет уже вполне заметную величину, и в истинно микроядерной системе может превзойти время, затрачиваемое на собственно полезную работу (особенно на современных процессорах, производительность которых очень сильно зависит от кэша и ТЛБ).
Цитата:
PS: в дополнение могу сказать: я готов участвовать в _общественном_ проекте, даже не за деньги, ради достижения цели: построить нечто совершенно уникальное, которое имеет будущее.. это я к тому что русско-язычных осдевелоперов можно пересчитать на пальцах.. может каждый вложит по крохе и сделаем рабочий вариант ядра?
Я вот делаю. Правда, не нечто уникальное (разве что с современной точки зрения: мало кто ядро пишет целиком на ассемблере), ну и под АРМ, а не ПК. Однако хочу заметить, что увеличение числа участников проекта обычно приводит лишь к ухудшению результатов: либо каждый делает, что считает нужным, и в результате получается каша, состоящая преимущественно из костылей (пример -- Колибри, которую они упорно пытаются хоть как-то модернизировать, ибо назрело, но всё идёт плохо из-за отсутствия согласованности, более-менее прописанных планов и т.п.), либо куча времени уходит на всяческие согласования, а работа практически стоит.