
Каждый, кто использует технологии с операционной системой, работает с ядром, хотя часто и не осознает этого. Ядро организует процессы и данные в каждом компьютере. Оно служит ядром операционной системы и интерфейсом между программным и аппаратным обеспечением. Это означает, что ядро постоянно используется и является ключевым компонентом операционной системы.
Ядро не только служит ядром системы, но и является программой, которая контролирует весь доступ к процессору и памяти. Оно отвечает за самые важные драйверы и имеет прямой доступ к аппаратному обеспечению. Оно является основой для взаимодействия между аппаратным и программным обеспечением и максимально эффективно управляет их ресурсами.
Что такое ядро?
Ядро является сердцем операционной системы и управляет всеми важными функциями аппаратного обеспечения — это касается Linux, macOS и Windows, смартфонов, серверов и виртуализаций типа KVM, а также всех остальных типов компьютеров.
Структура ядра
Ядро всегда строится одинаково и состоит из нескольких слоев:
- Самый глубокий слой — это интерфейс с аппаратным обеспечением (процессорами, памятью и устройствами), который управляет, например, сетевыми контроллерами и контроллерами PCI express.
- Сверху находится управление памятью, которое подразумевает распределение оперативной памяти, включая виртуальную основную память.
- Затем идет управление процессами (планировщик), который отвечает за управление временем и делает возможной многозадачность.
- Следующий уровень содержит управление устройствами.
- Самый верхний уровень — файловая система. Именно здесь процессы распределяются по оперативной памяти или жесткому диску.
Процесс
Ядро является центральным для всех уровней, от системного оборудования до прикладного программного обеспечения. Его работа заканчивается там, где начинается доступ пользователя: в графическом интерфейсе пользователя (GUI). Таким образом, ядро граничит с оболочкой (то есть пользовательским интерфейсом). Вы можете представить ядро как семя или косточку, а оболочку — как плод, который окружает косточку.
Что такое ядро в компьютерной программе?
Думайте о ядре в этом контексте как о полковнике: Они оба передают команды. Программа посылает «системные вызовы» ядру, например, при записи файла. Ядро, хорошо знакомое с набором инструкций процессора, переводит системный вызов на машинный язык и передает его процессору. Все это обычно происходит в фоновом режиме, незаметно для пользователя.
Каковы задачи ядра?
Основная задача ядра — многозадачность. Это требует соблюдения временных ограничений и сохранения открытости для других приложений и расширений.
Для каждого правила есть исключения в такой стройной, хорошо функционирующей системе, как операционная система. Именно поэтому ядро служит лишь промежуточным звеном, когда речь идет о системном программном обеспечении, библиотеках и прикладном программном обеспечении. В Linux графический интерфейс не зависит от ядра.
В многопользовательских системах ядро также контролирует права доступа к файлам и аппаратным компонентам. Диспетчер задач показывает, каковы они в любой момент времени. Если процесс завершен пользователем, диспетчер задач дает ядру инструкции по остановке процесса и освобождению памяти, которая использовалась для него.
Когда компьютер включается, ядро — это первое, что загружается в оперативную память. Это происходит в защищенной области — загрузчике, чтобы ядро нельзя было изменить или удалить.
После этого ядро инициализирует подключенные устройства и запускает первые процессы. Загружаются системные службы, запускаются или останавливаются другие процессы, инициируются пользовательские программы и распределение памяти.
Как работает ядро?
На этот вопрос лучше всего ответить противоположным образом: Чем не является ядро? Ядро — это не ядро процессора, это ядро операционной системы. Ядро также не является API или фреймворком.
Многоядерные операционные системы могут использовать различные ядра многоядерного процессора, как сеть независимых процессоров. Как это работает? Это связано с особой структурой ядра, которое состоит из ряда различных компонентов:
- Поскольку самый нижний уровень ядра является машинно-ориентированным, оно может напрямую взаимодействовать с аппаратным обеспечением, процессором и памятью. Функции ядра варьируются между его пятью уровнями, от управления процессором до управления устройствами. Самый верхний уровень не может обращаться к машинам и вместо этого отвечает за взаимодействие с программным обеспечением.
- Прикладные программы работают отдельно от ядра в операционной системе и лишь используют его функции. Без ядра связь между программами и оборудованием была бы невозможна.
- Благодаря многозадачности ядра несколько процессов могут выполняться одновременно. Но, как правило, за один раз процессор может обработать только одно действие — если только вы не используете многоядерную систему. О быстрой смене процессов, которая создает впечатление многозадачности, заботится планировщик.
Из этих компонентов вытекают четыре функции ядра:
- Управление памятью: Регулирует, сколько памяти используется в различных местах.
- Управление процессами: Определяет, какие процессы может использовать процессор, а также когда и как долго они используются.
- Драйвер устройства: Посредник между аппаратным обеспечением и процессами.
- Системные вызовы и безопасность: Получает запросы на обслуживание от процессов.
При правильной реализации функции ядра невидимы для пользователей. Ядро работает в своем собственном пространстве, пространстве ядра. С другой стороны, файлы, программы, игры, браузеры и все, что видит пользователь, находятся в пространстве пользователя. Для взаимодействия между ними используется интерфейс системных вызовов (SCI).
Ядро в операционной системе
Чтобы понять функцию ядра в операционной системе, представьте, что компьютер разделен на три уровня:
- Аппаратное обеспечение: Основа системы, состоящая из оперативной памяти, процессора и устройств ввода и вывода. Процессор выполняет операции чтения и записи и вычисления для памяти.
- Ядро: Ядро операционной системы, взаимодействующее с центральным процессором.
- Пользовательские процессы: Все запущенные процессы, которыми управляет ядро. Ядро делает возможным взаимодействие между процессами и серверами, также известное как межпроцессное взаимодействие (IPC).
Существует два режима работы кода в системе: режим ядра и режим пользователя. Код в режиме ядра имеет неограниченный доступ к аппаратному обеспечению, в то время как в режиме пользователя доступ ограничен SCI. Если в пользовательском режиме произошла ошибка, мало что произойдет. Ядро вмешается и устранит все возможные повреждения. С другой стороны, сбой ядра может привести к краху всей системы. Однако это маловероятно благодаря принятым мерам безопасности.
Какие виды ядер существуют?
Одним из типов ядра, описанных ранее, является многозадачное ядро, которое описывает несколько процессов, выполняющихся одновременно на одном ядре. Если добавить к нему управление доступом, то получится многопользовательская система, в которой несколько пользователей могут работать одновременно. Ядро отвечает за аутентификацию, поскольку оно может выделять или разделять вызываемые процессы.
Что такое ядро с открытым исходным кодом?
Linux ведет обширный архив по своему ядру. Компания Apple опубликовала типы ядра для всех своих операционных систем для открытого доступа. Microsoft также использует ядро Linux для подсистемы Windows для Linux.
Легко потерять представление о различных типах ядра. Системы Linux и устройства Android используют ядро Linux. Windows использует ядро NT, на которое опираются различные подсистемы. Apple использует ядро XNU.
Три типа ядер
Существуют различные типы ядер, которые используются в различных операционных системах и конечных устройствах. Их можно разделить на три группы:
- Монолитные ядра: Большое ядро для выполнения различных задач. Оно отвечает за управление памятью и процессами, а также за взаимодействие между процессами и предлагает функции для поддержки драйверов и аппаратного обеспечения. Это ядро в таких операционных системах, как Linux, OS X и Windows.
- Микроядро: Микроядро намеренно маленькое, чтобы ошибки и сбои не влияли на всю операционную систему. Для того чтобы оно могло выполнять те же функции, что и большое ядро, оно разделено на несколько модулей. Компонент OS X — Mach — служит единственным достойным примером, поскольку до сих пор не существует операционных систем с микроядрами.
- Гибридное ядро: Комбинация микроядра и монолита. Большое ядро более компактно и может быть разбито на модули. Дополнительные части ядра могут добавляться динамически. Частично они используются в Linux и OS X.