Самой важной частью ОС является ядро (kernel).
Ядро реализует следующие функции:
- Работу с системой ввода-вывода (IO) - это сетевые карты и диски
- Работу с прочей системной периферией (например видеокартами)
- Создаёт границу между приложениями уровня ядра (kernel space) и уровнем пользователя (user space)
- Предоставляет API системных вызовов для приложений в user space
- Добавляет собственную абстракцию в виде процессов, потоков, и различных примитивов синхронизации (таких как мютексы и семафоры), для того чтобы можно было запускать множество программ одновременно
- Разграничивает адресное пространство в ОЗУ, чтобы один процесс не мог обратиться к данным в другом процессе
- Управляет выполнением процессов и потоков, останавливая и запуская их на центральном процессоре
Для поддержки дополнительных устройств также существуют драйверы, которые могут быть реализованы как в user space, так и в kernel space. Драйвера в kernel space могут быть реализованы ещё и как встроенные в ядро модули.