LINUX.ORG.RU

[ядро] [школота]

 ,


0

2

Недавно решил поковырять линуксовое ядро на предмет изучения какой-нибудь простенькой подсистемы. Выбрал подсистему ввода как одну из самых простых. После недели изучения я плачу кровавыми слезами, господа! В коде ужаснейший бардак. Посему вопрос: как обстоят дела с качеством кода ядра в других системах: *BSD или minix?

P.S. Понятно что миникс наиболее пригодная система для обучения, но ее микроядерность несколько пугает.

Притворюсь что не заметил твоего трололо

Код в ядре весьма качественно написан. Тебе, скорее всего, не хватает бэкграунда.

nokachi
()

В коде ужаснейший бардак

Примеры будут?

Понятно что миникс наиболее пригодная система для обучения

Да, это отличный пример того, как НЕ надо делать

P.S. У меня к тебе встречный вопрос: как обстоят дела с качеством документации в других системах: *BSD или minix?

fang
()
Ответ на: комментарий от silw

я думаю что в скором времени пойдут в миникс.

betalor
() автор топика
Ответ на: комментарий от fang

Да, это отличный пример того, как НЕ надо делать

голословно.

как обстоят дела с качеством документации в других системах: *BSD или minix?

я не знаю, поэтому тему и создал. про миникс есть талмуд таненбаума.

betalor
() автор топика
Ответ на: комментарий от betalor

голословно

Да ты что? Вот тебе только одна из многочисленных идиотских с практической точки зрения вещей: все page fault'ы передаются на отдельный сервер, который сам лично их разруливает; такой дизайн просто на корню убивает все приемущества маппипга фалов из-за феерического снижения производительности.
Дальнейший разбор дизайна minix оставляю тебе на самостоятельную проработку.

fang
()

Можно пример бардака в коде ядра? Нет, догадываюсь, о чем ты говоришь, но хотелось бы более предметно рассуждать.

delete83 ★★
()

Посему вопрос: как обстоят дела с качеством кода ядра в других системах: *BSD или minix?

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

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

Я вообще-то не сильно против миникс, но с точки зрения объективности повышение производительности компьютера - это не аргумент.

На твоё «А если этот сервер на отдельном cpu core выполняется?» легко ответить «А если cpu core один?».

nanoolinux ★★★★
()

4.2, код в ядре написан грамотно. Бардак только где-то в районе ACPI и прочих околопроприетарных вещей.

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

У меня. Интел целерон 530. И менять его ради миникса я не хочу и не желаю.

Кроме того сам дядя Эндрю очень сильно за использование миникса во встраиваемых системах. Только вот там в основном армы. И догадайся сколько у них ядер.

Короче, «на отдельном cpu core» - не аргумент.

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

Смотрел код, кстати. Написано неплохо, но кое-где жутко бесит TODO: Document it.

Deleted
()

Без примеров бардака, твоих предложений по улучшению, твоих патчей можешь проследовать в южном направлении.

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

приведи в надлежащий вид

придётся переписать на с#^W^W lisp

anonymous
()
Ответ на: комментарий от Zhbert

Везде бардак. Открой любой код - там бардак. Инфа 146%.

+1

VirRaa ★★★
()

В других системах все более-менее. Даже NT и Darwin кстати, не являются такими свалками, как Linux.

anonymous
()

Как раз недавно читал код драйверов ввода в NetBSD, всё красиво и понятно, прямо как песня. Делай выводы.

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

вот я тоже на netBSD посматриваю в последнее время.

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

А если этот сервер на отдельном cpu core выполняется?

Очень расточительно — отдельное ядро занимать под такую ерунду. Большую часть времени оно будет простаивать.
Потом, это не сильно тебя спасёт. Переключений контекста меньше не станет. На том отдельном ядре будет постоянно происходить переключение между idle task и этим недосервером. Далее, это не спасёт от недетерминированных задержек в процессах, выполняющих полезную работу. Вместо немедленного выполнения populate страницы в случае фолта и продолжения работы, процесс встанет в конец очереди до тех пор, пока недосервер не соизволит это действие выполнить, и пока остальные процессы с таким же приоритетом не выработают свой квант времени или точно также не будут приостановлены при выполнении какого-нибудь другого подобного дубового действия.
Ну и не лишним будет так же уточнить, что сей недосервер не только фолты обрабатывает, но и вообще целиком и полностью отвечает за отображение страниц в виртуальное адресное пространство процессов, в том числе и в нормальных условиях. В общем, феерически неэффективно будет работать всё — начиная от чтения замапленных файлов и заканчивая фиксапом динамических символов в рантайме.
Помимо этого, планирование процессов, управление программными таймерами и ещё много чего делается в подобных серверах.
Minix — чисто академическое поделие, которое в реальных условиях неприменимо. Поэтому фраза «minix - наиболее пригодная система для обучения» вызвает у меня лёгкое недоумение. Надо учить находить хорошие практические решения, а не дизайнить «crazy drug-induced microkernel» (c) Linups Torvalds.

fang
()
Ответ на: комментарий от anonymous

не являются такими свалками, как Linux

Надеюсь, ты, в отличие от ТС, в состоянии привести примеры свалки?

fang
()
Ответ на: комментарий от LMD

Ты собачек бездомных и кошечек на улице тоже кормишь?

А никакого кормления и не будет, потому как и еды он толком попросить не в состоянии.

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

Идея микроядра, как и любая «концентрированная» идея нежизнеспособна сама по себе. Одно дело — «использовать микроядерные принципы для более гибкой архитектуры там, где это надо», а другое — вот такой вот абсурд c обработкой пейдж фолтов.

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

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

RR42
()
Ответ на: комментарий от geekless

Расскажи это создателям QNX, которая на ядерных реакторах работает.

Или создателям NT Kernel и XNU, которые по сути микроядра, с некоторыми важными сервисами перенесенными в Kernel Mode.

А потом да, иди и слушай своего линуса-пупа-земли.

Где этот ваш линупс вообще, с его ядром-помойкой в стиле ранних юниксов? Да нигде - максимум используется для хостинга слабых сервачков на Apache и похапе. А, ну да, еще его гугл по глупости впендюрил на свой андроид, из-за чего на последнем все глючит и тормозит.

А где QNX, NT и XNU?


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

anonymous
()

как обстоят дела с качеством кода ядра в других системах: *BSD или minix?

Ещё хуже.

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

Расскажи это создателям QNX, которая на ядерных реакторах работает

В QNX нет такого маразма, как в Minix

Или создателям NT Kernel и XNU, которые по сути микроядра, с некоторыми важными сервисами перенесенными в Kernel Mod

NT — гибрид. Пойди-ка повтори основополагающие моменты. Потом приходи.

Где этот ваш линупс вообще

Проще сказать, где его нет — разве что, на десктопе и в safety critical задачах.

с его ядром-помойкой

Либо примеры помойки, либо GTFO.

А вообще, смешно как линуксоиды подгавкивают линусу про микроядро, а у них X11 в юзермоде

А вообще смешно, как такой дурак, как ты, умеет вообще в интернет выходить. Троллить — ты и то не научился.

fang
()
Ответ на: комментарий от alpha3

Скачай сорцы и сам глянь, что ты к нам пристал?

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