Архитектура ОС.

Операционная система - комплекс взаимосвязанных программ, предназначенных для управления ресурсами компьютера и организации взаимодействия с пользователем. Их можно разделить на 2 большие группы - ОС семейства MS Windows и Unix-подобные ОС.
ОС состоит из следующих компонентов:

Как происходит загрузка ОС?

После включения ПК сначала проходит POST (Power on self test) - проверка аппаратного обеспечения компьютера. Далее загружается BIOS/UEFI, в котором прописано, откуда будет происходить загрузка (boot device), после чего происходит загрузка с этого устройства. Для того, чтобы с данного устройства могла происходить загрузка, оно должно быть размечено специальным образом. Если это BIOS, то область MBR (master boot record), если UEFI - UEFI boot sector, после чего управление передается загрузчику ОС.
Загрузчик ОС - специальная программа, которая расположена на первых секторах жесткого диска. Загрузчик нужен для того, чтобы можно было модифицировать загрузку ОС - например, если у вас установлено параллельно 2 ОС - Windows и Linux, или же вам надо загрузиться с какими-либо параметрами в режиме отладки. Загрузчик находит ОС и загружает 2 сущности - Kernel space и User space.
Ядро ОС - часть ОС, постоянно находящаяся в оперативной памяти и управляющая всей ОС. Ядро контролирует доступ приложений к аппаратной части - к ОЗУ, к ЦПУ и т.д., то есть обработка прерываний.
Основные функции ядра ОС:

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

Монолитное ядро - все драйверы выполняются в пространстве ядра. Примером такого ядра является Linux. Преимуществом такого ядра является скорость работы, однако же сбой в одном из компонентов нарушит работу всей системы. Для изменения такого ядра (добавления новых функций, драйверов и т.д.) необходима перекомпиляция ядра и при этом будет происходить увеличение кода ядра, что к повышению требований к оперативной памяти. Поэтому такие ядра не используются в системах, где есть жесткое ограничение по объему ОЗУ.
Модульное ядро - это разновидность монолитного ядра, однако добавлять и убирать различные драйверы в пространства ядра в нем возможно без компиляции. Современные версии Linux работают на модульном ядре. С помощью команд insmod и modprobe можно загружать и выгружать модули ядра, lsmod покажет список загруженных модулей.
Микроядро - предоставляет только элементарные функции управления процессами и минимальный набор абстракций для работы с оборудованием. Это позволяет решить проблему отказа системы при отказе работы одного драйвера. Преимуществами такого ядра является его высокая надежность, недостаток - дополнительные затраты на переключение контекста.
Экзоядро - частный случай микроядра, когда ядро занимается только взаимодействием процессов. Все остальные функции - работа с памятью, сетью, другими устройствами - выносятся в пользовательские библиотеки.
Наноядро - ядро, реализующее только обработку прерываний, т.е. по сути работа с аппаратным обеспечением. Такой тип ядра часто используется в виртуализации. Наноядро гостевой ОС может работать как процесс или модуль ядра другой ОС, позволяя запускать «неродные» приложения.
Гибридное ядро - позволяет сгладить недостатки монолитного и микроядра. При этом часть критичных для производительности функций реализована внутри пространства ядра, а часть, как сервисы, в пользовательском пространстве.


MBR - master boot record

MBR содержит исполняемый код, необходимый для передачи управления загрузчик и таблицу разделов (partition table). Эта запись занимает 512 байт в начале диска. В этой таблице можно создавать только 4 первичных (primary) разделов. Если необходимо обойти это ограничение, можно создать расширенный раздел (extended partition) вместо одного из первичных и уже внутри него создать несколько логических разделов (до 16). Стоит помнить, что ОС Windows можно устанавливать только на первичные разделы, у Linux таких ограничений нет.

GPT — GUID Partition Table

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