OSDev

для всех
Текущее время: 01 май 2024, 21:50

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
СообщениеДобавлено: 02 сен 2011, 17:21 

Зарегистрирован: 18 апр 2010, 15:59
Сообщения: 155
Сколько можно спорить по-поводу микроядерное\не микроядерное? Если я правильно помню, то ядро Mach, собственно и породившее термин "микроядро" было не таким уж и маленьким и не таким уж минималистичным, и ничего - микроядро (породило первое поколение микроядер). А вы уже сжали определение микроядра в определение мю-ядра, которое в свою очередь уже строилась по принципу минимализма Лидтке (если кратко, то сей принцип призывает мировую общественность выселить код из ядра по максимуму) выселяя из пространства ядра все, что только было можно он получил микроядро, оно же и мю-ядро L4, которое в свою очередь дало рождение второму поколению микроядер.

На мой взгляд простой критерий, которым на глаз можно различать микроядро от монолита, это по тому, кто может писать код для режима ядра. Если это могут делать только разработчики ядра и никто другой - микроядро. Если любой шаловливый парниша может накодить в пятом классе что-то типа своего драйвера, залить его в ядро и к своему восторгу лицезреть панику ядра - монолит. И QNX вообще-то считается одним из классических коммерческих микроядер на ряду с ядром SymbianOS, в отличие от *NIX, Windows и им подобным. С ядром MacOS мировая общественность так и не определилась, потому что с одной стороны оно Mach (то есть классическое микроядро), а с другой - FreeBSD (классический монолит), поэтому его обычно выселяют в отдельную группу.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 02 сен 2011, 17:52 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
Концепция микроядра появилась давным-давно, вроде ещё в 1960-х (в 70-х она точно была, только вроде под каким-то другим названием). И при появлении этой идеи, и в дальнейшем развитии главной целью, которой подчинялось всё остальное, было обеспечение надёжности и безопасности путём максимального отделения всего от всего. Соответственно, если этому принципу следуют -- это микроядро, если не следуют -- нет. QNX этому принципу следует лишь частично, и назвать её микроядерной можно лишь с приличной натяжкой. Другое дело, что сама концепция, изящная на бумаге, оказалась порочной, как только её попробовали воплотить в жизнь (как порочной идеей оказалась, например, RISC-архитектура процессоров, да и много чего вообще), поэтому в её "кошерном" виде никто и не видит, имеются лишь отступления в той или иной степени. Ну а с моей точки зрения, вещи надо называть своими именами в соответствии с фактическим положением дел, а не опираться на "классически" признанные вещи, которые далеко не всегда соответствуют реальности.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 02 сен 2011, 18:16 

Зарегистрирован: 18 апр 2010, 15:59
Сообщения: 155
SII писал(а):
Концепция микроядра появилась давным-давно, вроде ещё в 1960-х (в 70-х она точно была, только вроде под каким-то другим названием).

Можете кинуть линки, дать названия этих ядер, потому что я с этой информацией сталкиваюсь в первый раз. До сих пор я свято верил, что папой микроядер является ядро Mach (которое было создано в 80-х), потомок ядра Accent. Оно и получило такую широкую известность за счет создания концепции микроядра.

И приведите пример микроядра в вашем понимании этого термина. Потому что я могу здесь постоянно наблюдать фразы в стиле "нет это не микроядро", а что есть микроядро? Ткните пальцем в пример.

SII писал(а):
Ваш критерий совершенно не годится, поскольку к архитектуре вообще никакого отношения не имеет. Через анус может сделать кто угодно и что угодно на любой системе, до которой физически добраться может, а просто, без извратов, и в той же Вынь-7 свой драйвер в ядро не впихнёшь: нужна цифровая подпись. У пятиклассника такой подписи стопудово не будет, а значит, Вынь-7 -- микроядерная.

Во-первых я сразу сказал, что это критерий "на глаз" а не "под микроскопом". И во вторых чегой-то мне не вериться что я не могу писать драйвера для 7 без специального разрешения майкрософта. Как с таким подходом будут обучаться драйверописатели? только по теории? Что делать маленькой компании из южноурюпинска, клепающей на коленке несложные железяки для каких-то специфических целей и хотящей управлять ими с ПК? Должны существовать относительно простые пути запиливания кода Васю Пупкина в ядро. Потому что 7 - монолит. В не ядра ни о каком доступе к железу попросту нет и никаких механизмов позволяющих реализовывать функциональность подобного рода над ядром - нет.

P.S.: Может я чего-то не дочитал, не понял. Скажите откуда вы получили такую информацию о микроядрах. Киньте ссылки на книги, статьи и т.п. хлам. Чтобы я мог заполнить брешь в знаниях.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 02 сен 2011, 18:33 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
ZarathustrA писал(а):
Можете кинуть линки, дать названия этих ядер, потому что я с этой информацией сталкиваюсь в первый раз. До сих пор я свято верил, что папой микроядер является ядро Mach (которое было создано в 80-х), потомок ядра Accent. Оно и получило такую широкую известность за счет создания концепции микроядра.


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

Цитата:
И приведите пример микроядра в вашем понимании этого термина. Потому что я могу здесь постоянно наблюдать фразы в стиле "нет это не микроядро", а что есть микроядро? Ткните пальцем в пример.


Я же написал: реальных микроядер в природе или, во всяком случае, в промышленной эксплуатации (а не в виде лабораторных образцов) не существует, есть только "недомикроядра", в той или иной степени отходящие от этой концепции. Как обстоит дело в Mach, я не знаю, читал о ней давным-давно (вероятно, в начале 1990-х), ну а классический пример в виде QNX я уже раздолбал :) (т.е. не саму систему -- возможно, это лучшее, что породил мир осей, ведущих родословную от Униха, а то, что она называется микроядерной, далеко не соответствуя этой концепции).

Цитата:
Во-первых я сразу сказал, что это критерий "на глаз" а не "под микроскопом". И во вторых чегой-то мне не вериться что я не могу писать драйвера для 7 без специального разрешения майкрософта


Написать -- сможете, а вот заставить нормально грузиться -- нет. Во всяком случае, драйверы режима ядра для 64-разрядной версии. Вот режима пользователя -- это пожалуйста, но такие не могут нанести вреда системе (во всяком случае, если система без дыр). Ну а к режиму пользователя относятся, например, драйверы УСБ-устройств (но не хостов УСБ, однако их писать мелким конторам из южноурюпинска или мухосранска не приходится).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 02 сен 2011, 18:59 

Зарегистрирован: 18 апр 2010, 15:59
Сообщения: 155
ZarathustrA писал(а):
Написать -- сможете, а вот заставить нормально грузиться -- нет.

а как понять что ты написал, и работает ли оно, если его не загружать и не отлаживать? :))


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 02 сен 2011, 19:03 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
Загрузить можно, но через анус (что-то там на загрузке оси надо вручную говорить, насколько помню), т.е. для нормального "коммерческого" драйвера это неприемлемо, только для разработки. Ну а если наш гипотетический пятиклассник настолько крут, что смог со всей документацией разобраться и загрузить-таки свой мегадрайвер, то ему действительно можно забираться в ядро: по интеллекту тянет, ну а ошибки -- дело исправимое и есть у всех независимо от возраста и интеллекта. Так что не критерий-с :-P


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 02 сен 2011, 21:39 

Зарегистрирован: 30 янв 2010, 19:44
Сообщения: 63
в итоге что? ничего..

помнится на лекциях по операционным системах давали вводную что для ядра достаточно нескольких функций (около 3-х)..
значит микро ядро это минимальный набор функций...
как только появляется дополнительные, на вроде обработчика таймера, работы с шинами или проч., то это уже гибрид.
кто как называет свое ядро, мне по большому счету все равно. идеальных теоретических микро ядер не существует. как и любых других.. Я просто хотел определиться с минимальным функционалом ядра. судя по L4 это 150К кода с коментариями..

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 02 сен 2011, 21:45 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
Ну в принципе есть Minix, который Таненбаум приводит в качестве классического микроядра в своей книженции "Операционные системы. Разработка и реализация".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 02 сен 2011, 21:58 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
qeos писал(а):
помнится на лекциях по операционным системах давали вводную что для ядра достаточно нескольких функций (около 3-х)..
значит микро ядро это минимальный набор функций...


Точнее, не минимальный, а минимальный, реализованный именно в ядре. Фактически нужны как раз три или четыре функции: создать "почтовый ящик", удалить "почтовый ящик" и послать сообщение, а в случае, если микроядро не занимается переключением потоков -- ещё и получить сообщение (в этом случае микроядро -- просто "почтовая станция", а "почтовый ящик" -- очередь сообщений для конкретного потока; если же оно занимается переключением потоков, то "почтовым ящиком", по сути, является сам поток, и микроядро должно знать, как ставить сообщения к нему в очередь, откуда он их сам уже будет вытаскивать).

Цитата:
как только появляется дополнительные, на вроде обработчика таймера, работы с шинами или проч., то это уже гибрид.


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

Цитата:
кто как называет свое ядро, мне по большому счету все равно. идеальных теоретических микро ядер не существует. как и любых других..


Ну, названия просто могут сбивать с толку. Если считать истинно микроядерной QNX, то Вислу и Вынь-7 надо признать "полумикроядерной" -- там же изрядная часть драйверов (включая драйверы УСБ-устройств и почти весь драйвер графики) вынесена за пределы ядра :)

Цитата:
Я просто хотел определиться с минимальным функционалом ядра. судя по L4 это 150К кода с коментариями..


Учитывая, что в моей любимой RSX-11 без комментариев и драйверов что-то вроде 30 тысяч строк на ассемблере... Не, функционал у неё, безусловно, существенно меньше современных систем, но не до такой же степени :) А она никогда на микроядерность не претендовала (хотя таки тоже "полумикроядерная": тяжёлые драйверы, в т.ч. файловые системы, там реализованы как задачи).

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


Сложности нет, есть неэффективность, причём колоссальная. В QNX потому и вынесли только драйверы, что, как правило, время выполнения операции ввода-вывода многократно превосходит время переключения контекста, а потому потери на этих переключениях в случае именно ввода-вывода будут несущественными. А вот для чисто программных механизмов время переключения контекста составляет уже вполне заметную величину, и в истинно микроядерной системе может превзойти время, затрачиваемое на собственно полезную работу (особенно на современных процессорах, производительность которых очень сильно зависит от кэша и ТЛБ).

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


Я вот делаю. Правда, не нечто уникальное (разве что с современной точки зрения: мало кто ядро пишет целиком на ассемблере), ну и под АРМ, а не ПК. Однако хочу заметить, что увеличение числа участников проекта обычно приводит лишь к ухудшению результатов: либо каждый делает, что считает нужным, и в результате получается каша, состоящая преимущественно из костылей (пример -- Колибри, которую они упорно пытаются хоть как-то модернизировать, ибо назрело, но всё идёт плохо из-за отсутствия согласованности, более-менее прописанных планов и т.п.), либо куча времени уходит на всяческие согласования, а работа практически стоит.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 сен 2011, 00:07 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Мои мысли в слух.

ОС и ядро.

Эволюция понятий.

Цифровая вычислительная машина далее ЦВМ. Может выполнять операции последовательно и параллельно.
Параллельные операции могут группироваться в очереди операций, очереди команд.
ЦВМ предназначена для решения множества различных задач.

Задачи можно разделить на 2 класса на последовательные и параллельные.
Все задачи можно разделить на 3 стадии.

Последовательные задачи.
Последовательная задача имеет 3 стадии.
Начало, определяется входными данными.
Середина обработка этих данных преобразование из начального представления в конечный.
Конец вывод данных.

К примеру решения квадратного уравнения ax^2=b



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

Способ побуждения к выполнению задачи.
Существует 2 способа к побуждению выполнения задачи.
1) Поступление сигнала. К примеру физический сигнал от таймера поступает в компьютер.
Второй пример сигнал виртуальный. К примеру вызов подпрограммы, есть сигнал на выполнение.
События тоже есть разновидность сигнала. Обычно за событие отвечает некоторый флаг.
Возведение этого флага должно побуждать к выполнению задачи.
2)Задача периодически проверяет флаг, некоторую переменную. И как только флаг выставлен, то начинает выполнять задачу.

Когда на ЦВМ выполняется куча задач между ними должно быть взаимодействие.
Иначе бы задачи не побуждались, как следствие не выполнялись.
Операционная система- это некоторое систематизированное взаимодействие между задачами.
Минимальная операционная система появляется когда у нас есть взаимодействие между задачами(операциями)
и это взаимодействие можно описать. Другими словами написать программу.
Теория ОС учит правильно конструировать взаимодействия задач, программ.

Для минимального описания взаимодействия программ. Надо просто описать как вызываются задачи.
Так наименьшее ядро ОС будет состоять из описания флагов, которые побуждают задачи. Такое описание дано в различных источниках и различными способами. У Тененбауна к примеру описание построено на понятии почтового ящика. Но как я писал существует 2 способа к побуждению. Следовательно возможно 3 типа минимального описания ОС - ядра ОС.

Так как современные ЦВМ имеют последовательную архитектуру. То задачам приходятся разделять вычислительное время. Тем самым взаимодействие задач приходится систематизировать.

Говорить про микро ядро что она обязана иметь задачи с различными адресными пространствами пожалуй не стоит. Будем называть такое ядро мю-Ядро. Разные адресные задачи хорошо организую защиту и упрощают разработку, но плохо интегрируются в систему. Завтра точнее сформулирую про адрестное и микро.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу Пред.  1, 2, 3  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB