Что такое ядро Linux и что он делает?

Оглавление:

Что такое ядро Linux и что он делает?
Что такое ядро Linux и что он делает?

Видео: Что такое ядро Linux и что он делает?

Видео: Что такое ядро Linux и что он делает?
Видео: НЕ ИСПОЛЬЗУЙ ТОРРЕНТ - YouTube 2024, Май
Anonim
 Ядро Linux с более чем 13 миллионами строк кода является одним из крупнейших проектов с открытым исходным кодом в мире, но что такое ядро и для чего оно используется?
Ядро Linux с более чем 13 миллионами строк кода является одним из крупнейших проектов с открытым исходным кодом в мире, но что такое ядро и для чего оно используется?

Итак, что такое ядро?

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

Различные типы ядер

Разумеется, существуют разные способы построения ядро и архитектурных соображений при построении с нуля. В общем, большинство ядер попадают в один из трех типов: монолитный, микроядерный и гибридный. Linux является монолитным ядром, в то время как OS X (XNU) и Windows 7 используют гибридные ядра. Давайте проведем краткую экскурсию по трем категориям, чтобы позже ознакомиться с более подробными сведениями.

Image
Image

Изображение верхний попкорн

Microkernel Микроядро использует подход только для управления тем, что ему нужно: CPU, память и IPC. Практически все остальное на компьютере можно рассматривать как аксессуар и можно обрабатывать в пользовательском режиме. Микроядра имеют преимущество переносимости, потому что им не нужно беспокоиться, если вы измените свою видеокарту или даже свою операционную систему, пока операционная система все равно пытается получить доступ к оборудованию тем же способом. Микроядра также имеют очень малую площадь, как для памяти, так и для установки пространства, и они, как правило, более безопасны, поскольку в пользовательском режиме работают только определенные процессы, которые не имеют высоких разрешений в качестве режима супервизора.

Pros

  • портативность
  • Малая занимаемая площадь
  • Малый объем памяти
  • Безопасность

Cons

  • Аппаратное обеспечение более абстрагируется с помощью драйверов
  • Аппаратное обеспечение может реагировать медленнее, поскольку драйверы находятся в пользовательском режиме
  • Процессам приходится ждать в очереди, чтобы получить информацию
  • Процессы не могут получить доступ к другим процессам без ожидания

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

Pros

  • Более прямой доступ к оборудованию для программ
  • Легче для процессов общаться друг с другом
  • Если ваше устройство поддерживается, оно должно работать без дополнительных установок
  • Процессы реагируют быстрее, потому что нет очереди на процессорное время

Cons

  • Большая площадь установки
  • Большой объем памяти
  • Менее безопасен, потому что все работает в режиме супервизора
 Изображение через schoschie на Flickr
Изображение через schoschie на Flickr

Гибридное ядро Гибридные ядра имеют возможность выбирать и выбирать то, что они хотят запускать в пользовательском режиме, и то, что они хотят запускать в режиме супервизора. Часто такие вещи, как драйверы устройств и ввода / вывода файловой системы, выполняются в режиме пользователя, в то время как вызовы IPC и сервера будут храниться в режиме супервизора. Это дает лучшее из обоих миров, но часто требует больше работы производителя оборудования, потому что все ответственность за них зависит от них. Он также может иметь некоторые проблемы с задержкой, присущие микроядрам.

Pros

  • Разработчик может выбрать, что работает в пользовательском режиме и что работает в режиме супервизора
  • Меньшая занимаемая площадь, чем монолитное ядро
  • Более гибкая, чем другие модели

Cons

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

Где файлы ядра Linux?

Image
Image

Файл ядра в Ubuntu хранится в папке / boot и называется vmlinuz-версия, Название vmlinuz происходит из мира unix, где они называли свои ядра просто «unix» еще в 60-х годах, поэтому Linux начал называть свое «linux» ядра, когда он был впервые разработан в 90-х годах.

Когда виртуальная память была разработана для упрощения многозадачности, «vm» был помещен в начале файла, чтобы показать, что ядро поддерживает виртуальную память. Некоторое время ядро Linux называлось vmlinux, но ядро становилось слишком большим, чтобы вместиться в доступную загрузочную память, поэтому образ ядра был сжат, а конец x был изменен на z, чтобы показать, что он был сжат сжатием zlib. Это же сжатие не всегда используется, часто заменяется LZMA или BZIP2, а некоторые ядра просто называются zImage.

Нумерация версий будет в формате A.B.C.D, где A.B, вероятно, будет 2.6, C будет вашей версией, а D указывает ваши исправления или исправления.

В папке / boot также будут другие очень важные файлы, называемые initrd.img-версия, system.map-версия и config-версия. Файл initrd используется в качестве небольшого RAM-диска, который извлекает и исполняет фактический файл ядра.Файл system.map используется для управления памятью до полного загрузки ядра, а файл конфигурации сообщает ядру, какие параметры и модули загружать в образ ядра при компиляции.
В папке / boot также будут другие очень важные файлы, называемые initrd.img-версия, system.map-версия и config-версия. Файл initrd используется в качестве небольшого RAM-диска, который извлекает и исполняет фактический файл ядра.Файл system.map используется для управления памятью до полного загрузки ядра, а файл конфигурации сообщает ядру, какие параметры и модули загружать в образ ядра при компиляции.

Архитектура ядра Linux

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

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

Представьте, можете ли вы обновить до пакета обновления Windows, не перезагружая компьютер …

Модули ядра

Что делать, если Windows уже установила все доступные драйверы, и вам просто нужно было включить нужные вам драйверы? Это то, что делают модули ядра для Linux. Модули ядра, также известные как загружаемый модуль ядра (LKM), необходимы для обеспечения работоспособности ядра со всем вашим оборудованием без использования всей доступной памяти.
Что делать, если Windows уже установила все доступные драйверы, и вам просто нужно было включить нужные вам драйверы? Это то, что делают модули ядра для Linux. Модули ядра, также известные как загружаемый модуль ядра (LKM), необходимы для обеспечения работоспособности ядра со всем вашим оборудованием без использования всей доступной памяти.

Модуль обычно добавляет функциональность базовому ядру для таких вещей, как устройства, файловые системы и системные вызовы. LKM имеют расширение файла.ko и обычно хранятся в каталоге / lib / modules. Из-за своей модульной природы вы можете легко настроить свое ядро, установив модули для загрузки или без загрузки во время запуска с помощью команды menuconfig или путем редактирования файла / boot / config, или вы можете загружать и выгружать модули «на лету» с помощью modprobe команда.

В некоторых дистрибутивах, таких как Ubuntu, доступны сторонние и закрытые исходные модули и не могут быть установлены по умолчанию, потому что исходный код для модулей недоступен. Разработчик программного обеспечения (т. Е. NVidia, ATI и другие) не предоставляют исходный код, а скорее строят свои собственные модули и компилируют необходимые.ko-файлы для распространения. Хотя эти модули бесплатны, как в пиве, они не являются бесплатными, как в речи, и поэтому не включаются в некоторые дистрибутивы, потому что сопровождающие считают, что он «затушевывает» ядро, предоставляя несвободное программное обеспечение.

Ядро не является магии, но совершенно необходимо, чтобы любой компьютер работал правильно. Ядро Linux отличается от OS X и Windows, потому что оно включает в себя драйверы на уровне ядра и делает много вещей «доступными» из коробки. Надеюсь, вы узнаете немного больше о том, как ваше программное обеспечение и оборудование работают вместе и какие файлы вам нужны для загрузки вашего компьютера.

Kernel.org Изображение ingridtaylar

Рекомендуемые: