Как ядро Linux выдерживает сравнение с архитектурой микроядра?

Если я должен знать то, что это, говорится в Linux/Unix, 32/64 бита

uname -a 

Это дало бы мне почти всю информацию, в которой я нуждаюсь,

Если я далее должен знать то, что выпускает его, говорят (Centos 5.4, или 5.5 или 5.6) на поле Linux, я далее проверил бы файл /etc/issue видеть его информацию о выпуске (или для Debian / Ubuntu /etc/lsb-release )

Альтернативный путь состоит в том, чтобы использовать lsb_release утилита:

lsb_release -a

Или сделайте a rpm -qa | grep centos-release или redhat-release поскольку RHEL получил системы

39
25.01.2011, 02:26
8 ответов

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

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

Графический интерфейсы пользователя Unix предоставлены через X-окно, которое является кодом пространства пользователя (за исключением (часть) драйвер видеоустройства). Много современных нельдов позволяют обычным пользователям загружать драйверы файловой системы через FUSE. Часть фильтрации сетевого пакета Linux может быть сделана в пространстве пользователя. Однако драйверы устройств, планировщики, диспетчеры памяти и большинство сетевых протоколов все еще только для ядра.

Классик (если датированный) чтение о Linux и микроядрах является дебатами Tanenbaum–Torvalds. Двадцать лет спустя можно было сказать, что Linux очень очень медленно двигает структуру микроядра (загружаемые модули появились вначале, FUSE более свеж), но существует все еще длинный путь для движения.

Другой вещью, которая изменилась, является увеличенная уместность виртуализации на настольных и высокопроизводительных встроенных компьютерах: в некоторых целях соответствующее различие не между ядром и пространством пользователя, а между гипервизором и гостевыми Ose.

36
27.01.2020, 19:35
  • 1
  • 2
    Это - вся очень хорошая теория. Если устройство втиснуто так или иначе, система является тостом. Если драйвер отказывает на полпути, хотя операция, никакой перезапуск драйвера не восстановит систему к функциональному состоянию. Если Вы хотите какую-либо производительность вообще, драйверы должны быть многопоточными..., и преимущество "одного планировщика" полностью потеряно. Хочу производительность, необходимо избежать (все больше дорогостоящих) копий памяти и контекстных переключений..., и "модульный принцип" потерян. Ищите размеры некоторых микроядер, и Вы будете видеть их сопоставимый размер и сложность к монолитным ядрам с включенными драйверами. –  vonbrand 02.01.2016, 16:46

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

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

Понятие микроядра помещает много материала, который является традиционно привилегированным режимом, таким как сети и драйверы устройств, в пространстве пользователя. Так как микроядро не действительно ответственно за много, который также означает, что это может быть более простым и более надежным. Думайте о способе, которым протокол IP, будучи простым и глупым, действительно приводит к устойчивым сетям путем продвижения сложности к краям и отъезда базового наклона и средний.

15
27.01.2020, 19:35
  • 1
    Спасибо за регистрацию ссылок на чтение материала! Точка W брента в кратком обзоре является звуковой, и до некоторой степени, я сочувствую озабоченности L Christoph по поводу сверхсложности в механизмах синхронизации микроядра; однако, я думаю, что последняя бумага может пропускать основанные на сообщении циклы событий. Так как циклы событий не совместно используют память друг с другом, блокировка не необходима, и начиная с (IMO) они предоставляют себя декларативному стилю кодирования, последовательный алгоритм может быть явно определен (точка лямбда-исчисления...) - я обычно кодирую приложения, но этот Q был приятным полезным опытом –  anthropic android 16.08.2017, 23:20

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

x86 rings

1
27.01.2020, 19:35
  • 1
    , кольцевая структура x86 является просто сверхразработкой. Никакое практическое применение (кроме виртуальных машин, но это все больше используется...), –  vonbrand 02.01.2016, 16:52

Случай - то, что ядро Linux является гибридом монолитных и микроядра. В чистой монолитной реализации нет никаких модулей, загружающихся во времени выполнения.

-1
27.01.2020, 19:35
  • 1
    , который это не. то, что модули загружаются динамично, не изменяет факт, что они выполняются с полными полномочиями ядра, и как часть монолитного ядра. –  vartec 26.01.2011, 16:05
  • 2
    Для гибридного дизайна, это была бы более важная погода некоторые драйверы (для USB, Сканеров, Принтеров и графики) реализован в пространстве пользователя скорее затем ядро. Различие не ясно, и Linux может быть указан как гибридное ядро, поскольку существует libusb, нормальный, чашки и мезаструктура - не потому что существует insmod и rmmod. –  Maciej Piechotka 26.01.2011, 18:02
  1. Монолитное ядро значительно старше, чем микроядро. Это используется в Unix, в то время как идея микроядра появилась в конце 1980-х.

  2. Примерами Ose, имеющих монолитные ядра, является UNIX, LINUX, в то время как Ose, имеющие микроядро, являются QNX, L4, HURD и первоначально Махом (не MacOS X), который был позже преобразован в гибридное ядро. Даже MINIX не является чистым микроядром, потому что его драйверы устройств компилируются как часть ядра.

  3. Монолитные ядра быстрее, чем микроядра. Первое микроядро Маха на 50% медленнее, чем монолитные ядра. Более поздние версии как L4 составляют только 2% или на 4% медленнее, чем монолитное ядро.

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

  5. В монолитных ядрах драйверы устройств находятся в пространстве ядра, в то время как в микроядре драйверы устройств находятся в пространстве пользователя.

  6. Так как драйверы устройств находятся в пространстве ядра, оно делает монолитное ядро менее безопасным, чем микроядро (Отказ в драйвере может вести для катастрофического отказа). Микроядра более безопасны, чем монолитные ядра, следовательно они используются во многих военных устройствах.

  7. Монолитные ядра используют сигналы и сокеты для обеспечения IPC, в то время как подход микроядра использует очереди сообщений. 1-й генерал микроядра плохо реализовал IPC, таким образом, они были медленными на контекстных переключениях.

  8. Добавление новых опций к монолитной системе означает перекомпилировать целое ядро, в то время как можно добавить новую опцию или патчи без перекомпиляции

1
27.01.2020, 19:35
  • 1
    В (4), Вы сравниваете яблоки и арбузы. Само микроядро (дизайном) содержит только минимальную функциональность, монолитное ядро содержит намного больше. (6) хорошая теория, она зависит от того, как со знанием дела части разрабатываются, и насколько текучий реальный механизм IPC (для производительности, это не может быть реальная "передача сообщений"). Примечание (7) означает очень сложную обработку "очередей сообщений", таким образом главным образом инвертируя их преимущества. Для (8), в случае, например, Linux, конечно, возможно скомпилировать модуль, независимый от ядра. Это обычно делается для разработки драйвера на самом деле. –  vonbrand 02.01.2016, 18:23

Windows NT (ядро, лежащее в основе современных систем Windows) начиналась как довольно ванильный микроядерный дизайн. Из-за проблем с производительностью все больше и больше "пользовательского" кода переходило в "микроядро"... сегодня структура микроядра является рудиментом.

0
27.01.2020, 19:35

Термины монолитное ядрои микроядро нельзя серьезно сравнивать, поскольку они описывают разные аспекты проектирования ядра (структура против размера).

Типичным монолитным ядром было ядро SunOS-4.x, и Linux все еще похож на него, поскольку вы вручную настраиваете содержимое базового ядра.

Ядро Solaris (начиная с версии 2.1 в 1992 году) уже нельзя назвать монолитным, поскольку все драйверы загружаются автоматически по требованию, и только небольшая часть загружается во время начальной загрузки.

SunOS-4.x и Solaris (SunOS-5.x) и Linux - все это реализации с одним контекстом. Весь их код выполняется в одном контексте MMU.

Mac OS X основана на Mach и работает как многоконтекстная реализация с несколькими процессами, разделенными контекстами MMU. В этой концепции драйверы находятся в отдельных процессах и отдельных контекстах MMU.

Многие называют Mac OS X "микроядерной системой", но может оказаться, что базовое ядро не меньше, чем базовое ядро Solaris.

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

-1
27.01.2020, 19:35

Теги

Похожие вопросы