LINUX.ORG.RU
ФорумTalks

Еще 1 довод в пользу микроядра


0

3

При микроядре, как известно, каждый драйвер работает отдельным процессом в userspace. И вся работа с ним идет по его интерфейсу.

А в монолитном ядре есть специальные интерфейсы для userspace и для kernelspace. И зачастую интерфейсы kernelspace описаны максимум в виде разбросанных по коду комментариев.

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

★★★★★

Последнее исправление: cvs-255 (всего исправлений: 1)

Слабый вброс, счас попробую получше))

dimon555 ★★★★★
()

Предлагаешь лечить недостаток документации сменой архитектуры ядра, это ты неплохо погнал.

Kindly_Cat
()

не так, в микроядре - интерфейсы стабильны, а в монолитном их почти в два раза больше и они стабильны как холодец на спине самки.

Deleted
()

Пичаль в том, что говнокод работает и зарабатывает, а кодирование по хорошим учебникам уходит только в стол. Исключения подтверждают правило. Вот так.

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

Предлагаешь лечить недостаток документации сменой архитектуры ядра, это ты неплохо погнал.

В микроядре меньше доков писать придется. Доки на userspace интерфейс писать по-любому надо, а вот на kernelspace забить куда проще.

cvs-255 ★★★★★
() автор топика
Ответ на: комментарий от Kindly_Cat

В этом мире предпочитают ставить костыли, чем писать грамотно

cvs-255 ★★★★★
() автор топика

и они стабильны как холодец на спине самки

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

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

Ядро вообще не создаст никакие программы. А если начнёт — ВОССТАНИЕ МАШИН, ПАНИКА, КОНЕЦ СВЕТА

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

В blackberry полно юзерского софта и микроядро не мешает.

x3al ★★★★★
()

Знаешь, конечному пользователю (как и разработчику юзерспейсного софта) по большому счету пофиг, микроядро у него под капотом или монолит. Главное - насколько хорошо оно работает. И вот в этом плане микроядра пока плетутся далеко позади монолитных и гибридных.

Deleted
()

При микроядре, как известно, каждый драйвер работает отдельным процессом в userspace

Брехня.

Ну и вообще глупости.

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

Знаешь, конечному пользователю

Ну вот я конечный пользователь linux. И я собрал себе устройство - i2c адаптер, висящий на rs232 порту. И хочу написать модуль ядра для него.

Но чего-то поиск по гуглу на тему обращения к драйверу serial порта из kernel-space выдает максимум «покопайтесь в serial-core.c». В то время как из юзерспейса достаточно открыть /dev/ttyS0 и писать туда.

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

При микроядре, как известно, каждый драйвер работает отдельным процессом в userspace

Брехня.

Ну почти каждый

cvs-255 ★★★★★
() автор топика

Если ядро плохо документировано - это значит, что такая архитектура любых ядер этого типа - говно? Ню-ню.

Quasar ★★★★★
()

Ответ здесь:

При микроядре, как известно, каждый драйвер работает отдельным процессом в userspace.

Это заблуждение. Всё зависит от дизайна. Например, в системе «Хамелеон» драйвер сам решает, в каком адресном пространстве ему выполняться - в общей памяти ядра или в изолированном. Причём, решается это параметром сообщения при старте.

И вся работа с ним идет по его интерфейсу.

Так в любой системе. Интерфейс это синоним API. Разница лишь в том, как это работает - в монолите системным вызовом. В микроядре с помощью сообщеня.

А в монолитном ядре есть специальные интерфейсы для userspace и для kernelspace. И зачастую интерфейсы kernelspace описаны максимум в виде разбросанных по коду комментариев.

Не совсем так, если речь идёт о POSIX системах, то интерфейсы ядра транслируются в userspace с помощью libc. А любой программе глубоко пофиг под управлением чёго она работает - ядра или микрояда, она всего лишь вызывает функции из библиотеки libc.

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

не так, в микроядре - интерфейсы стабильны, а в монолитном их почти в два раза больше и они стабильны как холодец на спине самки.

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

alman ★★★
()
Ответ на: Ответ здесь: от alman

если речь идёт о POSIX системах, то интерфейсы ядра транслируются в userspace с помощью libc.

ну вот есть, например, /dev/ttyS0. Поддерживаемый ядром интерфейс для user-space. Открыл - и пиши/читай.

А чтобы обратиться к com порту из ядерного модуля, мне сейчас приходится долго вчитываться в serial_core.c. А может и еще куда придется

cvs-255 ★★★★★
() автор топика
Последнее исправление: cvs-255 (всего исправлений: 1)
Ответ на: комментарий от Deleted

И вот в этом плане микроядра пока плетутся далеко позади монолитных и гибридных.

Скажи это пользователям Mac OS X.

alman ★★★
()
Ответ на: комментарий от cvs-255

у вот есть, например, /dev/ttyS0. Поддерживаемый ядром интерфейс для user-space. Открыл - и пиши/читай.

Эту возможность даёт файловая система и стандартный набор функций работы с файлами.

А чтобы обратиться к com порту из ядерного модуля, мне сейчас приходится долго вчитываться в serial_core.c. А может и еще куда придется

В Linux? Ну я не знаю. Наверняка как-то можно. Наверняка должен быть какой-либо интерфейс.

Я к COM портам обращаюсь через порты ввода/вывода и прерывния. Точнее не прерывания, а через соообщения о прерываних. :)

alman ★★★
()
Ответ на: комментарий от cvs-255

А чтобы обратиться к com порту из ядерного модуля, мне сейчас приходится долго вчитываться в serial_core.c.

а зачем, если это только не контроллер ком порта?

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

В ядре уже есть готовый драйвер com порта. Я пытаюсь не изобретать велосипед, а обратиться к нему из своего драйвера

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

А чтобы обратиться к com порту из ядерного модуля, мне сейчас приходится долго вчитываться в serial_core.c. А может и еще куда придется

Смотри реализацию символьных устройств. Именно это отвечает за обмен данным между драйвером устройства и libc.

open, write, read, ioctl, close

ioctl - очень важно для настройки порта.

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

Эту возможность даёт файловая система и стандартный набор функций работы с файлами.

драйвер com порта создает устройство /dev/ttyS0.

cvs-255 ★★★★★
() автор топика
Ответ на: комментарий от cvs-255

У меня нет под рукой исходников linux, поэтому посоветовать куда смотреть - не могу. Посмотри айдишники системных вызовов в драйвере и найдих в файловой системе. Посмотри как файловая систему транслирует вызовы к устройствам. Точнее не могу сказать, потому что занимался этим очень очень давно.

alman ★★★
()

прозреваю, что ты смотришь не в том слое, а API, которое тебе нужно, в linux/tty.h

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

Посмотри айдишники системных вызовов в драйвере и найдих в файловой системе.

/dev/ttyS* создаются ядром.

cvs-255 ★★★★★
() автор топика
Ответ на: комментарий от fang

Rick Rashid, вице-президент по исследованиям в Microsoft %)

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

/dev/ttyS* создаются ядром.

Какая разница кто их создаёт? Тебе из модуля нужно пользоваться COM-портом, вот AptGet подсказал - linux/tty.h

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