мета-данные страницы
Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| notes:howlinuxworks:vol1 [2026/05/08 14:14] – ↷ Страница перемещена из notes:notes:howlinuxworks:vol1 в notes:howlinuxworks:vol1 radi0dev | notes:howlinuxworks:vol1 [2026/05/12 17:17] (текущий) – radi0dev | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| ====== Глава 1: Общая картина ====== | ====== Глава 1: Общая картина ====== | ||
| + | |||
| + | ===== 1.1 Уровни абстракции ===== | ||
| + | |||
| + | linux можно поделить на 3 уровня обстракции: | ||
| + | - hardware - железо, | ||
| + | - kernel - процесс, | ||
| + | - processes - пользовательские процессы, | ||
| + | |||
| + | **Kernel mode** - режим работы программы ядра, позволяющее ему привелегии в виде полного доступа к УП и ОЗУ. Область памяти, | ||
| + | |||
| + | **User mode** - режим работы пользовательских процессов, | ||
| + | |||
| + | |||
| + | |||
| + | ===== 1.3 Ядро ===== | ||
| + | |||
| + | Ядро отвечает за управление задачами в четырех основных областях | ||
| + | системы: | ||
| + | * Процессы. Ядро определяет, | ||
| + | * Память. Ядро должно отслеживать распределение памяти: | ||
| + | * Драйверы устройств. Ядро действует как интерфейс между оборудованием (например, | ||
| + | * Системные вызовы и поддержка. Процессы обычно используют системные вызовы для связи с ядром. | ||
| + | |||
| + | ==== 1.3.1 Управление процессами ==== | ||
| + | |||
| + | **переключение контекста** - это акт передачи одним процессом управления процессором другому процессу. | ||
| + | |||
| + | Ядро отвечает за переключение контекста. | ||
| + | ++++как это работает|рассмотрим ситуацию, | ||
| + | - Процессор (фактическое оборудование) прерывает текущий процесс на основе внутреннего таймера, | ||
| + | - Ядро записывает текущее состояние процессора и памяти, | ||
| + | - Ядро выполняет любые задачи, | ||
| + | - Теперь ядро готово к запуску другого процесса. Оно анализирует список процессов, | ||
| + | - Ядро подготавливает память для нового процесса, | ||
| + | - Ядро сообщает процессору длительность временного кванта для нового процесса. | ||
| + | - Ядро переключает процессор в пользовательский режим и передает управление процессором процессу. | ||
| + | ++++ | ||
| + | |||
| + | Переключение контекста позволяет понять, | ||
| + | |||
| + | ==== 1.3.2 Управление памятью ==== | ||
| + | |||
| + | Ядро должно управлять памятью во время переключения контекста, | ||
| + | * Ядро должно иметь в памяти выделенную область, | ||
| + | * Каждому пользовательскому процессу необходима собственная область памяти. | ||
| + | * Один пользовательский процесс не может получить доступ к области памяти, | ||
| + | * Пользовательские процессы могут совместно работать с памятью. | ||
| + | * Часть памяти пользовательских процессов может быть доступна только для чтения. | ||
| + | * Система может использовать больше памяти, | ||
| + | |||
| + | Современные процессоры включают в себя блок управления памятью (**memory management unit**, **MMU**), который обеспечивает схему доступа к памяти, | ||
| + | |||
| + | ++++как это работает? | ||
| + | При использовании виртуальной памяти процесс не получает прямого доступа к памяти через ее физическое местоположение в компьютерной системе. Вместо этого ядро настраивает каждый процесс, | ||
| + | зрения процесса в фактическое физическое местоположение памяти в системе. Ядро по-прежнему должно инициализировать, | ||
| + | |||
| + | Реализация таблицы соответствий адресов памяти называется **таблицей страниц**. | ||
| + | ++++ | ||
| + | |||
| + | ==== 1.3.3 Управления драйверами устройств ==== | ||
| + | |||
| + | Роль ядра в работе с устройствами относительно проста. Устройство обычно доступно только в режиме ядра, поскольку неправильный доступ (например, | ||
| + | |||
| + | ==== 1.3.4 Системные вызовы и поддержка ==== | ||
| + | |||
| + | Существует несколько других функций ядра, доступных пользовательским процессам. К примеру, | ||
| + | |||
| + | Ядро поддерживает пользовательские процессы с функциями, | ||
| + | |||
| + | P.S Технически пользовательский процесс, | ||
| + | |||
| + | ===== 1.5. Пользователи ===== | ||
| + | |||
| + | Ядро Linux поддерживает традиционную концепцию пользователя Unix. Пользователь (user) — это сущность, | ||
| + | |||
| + | Ядро не управляет именами пользователей, | ||
| + | |||
| + | Пользователи существуют в основном для поддержки прав и границ в системе. Каждый процесс пользовательского пространства имеет владельца (**owner**) и, как говорят, | ||
| + | и выбирать, | ||
| + | |||
| + | Помимо пользователей, | ||
| + | |||
| + | |||