Ядро — это основная часть операционной системы. Оно взаимодействует непосредственно с аппаратными средствами, реализует совместное использование ресурсов, предоставляет общие сервисы для приложений, и предотвращает прямой доступ приложений к аппаратно-зависимым функциям. К числу сервисов, предоставляемых ядром, относятся:
1. У правление выполнением процессов, включая операции их создания, завершения или приостановки и межпроцессоного обмена данными. Они включают:
- Равнозначное планирование процессов для выполнения на ЦП.
- Разделение процессов в ЦП с использованием режима разделения по времени.
- Выполнение процесса в ЦП.
- Приостановка ядра по истечениии отведенного ему кванта времени.
- Выделение времени ядра для выполнения другого процесса.
- Перепланирование времени ядра для выполнения приостановленного процесса.
- Управление метаданными, связанными с безопасностью процесса, такими как идентификаторы UID, GID, метки SELinux, идентификаторы функциональных возможностей.
2. Выделение оперативной памяти для исполняемого процесса. Данная операция включает в себя:
- Разрешение, выдаваемое ядром для процессов, на совместное использование части их адресного пространства при определенных условиях; однако, при этом ядро защает собственное адресное пространство процесса от внешнего вмешательства.
- Если система испытывает нехватку свободной памяти, ядро освобождает память путем записи процесса временно в память второго уровня или раздел подкачки.
- Согласованное взаимодействие с аппаратными средствами машины, чтобы установить отображение виртуальных адресов на физические адреса, которое устанавливает соответствие между адресами, сгенерированными компилятором, и физическими адресами.
3. Обслуживание жизненного цикла виртуальных машин, которое включает:
- Установление ограничений для ресурсов, сконфигурированных приложением эмуляции для данной виртуальной машины.
- Запуск программного кода виртуальной машины на исполнение.
- Обработка завершения работы виртуальных машин или путем завершения инструкции или задержкой завершения инструкции для эмуляции пространства пользователя.
4. Обслуживание файловой системы. Это включает в себя:
- Выделение вторичной памяти для эффективного хранения и извлечения пользовательских данных.
- Выделение внешней памяти для пользовательских файлов.
- Утилизация неиспользованного пространства для хранения данных.
- Организация структуры файловой системы (использование понятных принципов структурирования).
- Защита пользовательских файлов от несанкционированного доступа.
- Организация контролируемого доступа процессов к периферийным устройствам, таким как терминалы, лентопротяжные устройства, дисководы и сетевые устройства.
- Организация взаимного доступа к данным для субъектов и объектов, предоставление управляемого доступа, основанного на политике DAC и любой другой политике, реализуемой загруженной LSM.
Ядро Linux относится к типу ядер ОС, реализующих планирование с вытеснением задач. В ядрах, не обладающих такой возможностью, выполнение кода ядра продолжается до завершения, т.е. планировщик не способен к перепланированию задачи в то время, когда она находится в ядре. Кроме того, планирование исполнения кода ядра осуществляется совместно, без вытесняющего планирования, и исполнение этого кода продолжается до момента завершения и возврата к пространству пользователя, либо до явной блокировки. В вытесняющих ядрах возможно выгрузить задачу в любой точке, пока ядро находится в состоянии, в котором безопасно выполнять перепланирование.