мета-данные страницы
Это старая версия документа!
Глава 1: Общая картина
1.1 уровни абстракции
linux можно поделить на 3 уровня обстракции: hardware → kernel → processes
- hardware - железо, это память (RAM и ROM), это ЦП и перифирийные устройства.
- kernel - процесс, лежащий в памяти. Посредник между пользовательскими процессами и железом.
- processes - пользовательские процессы, которыми управляет ядро.
Kernel mode - режим работы программы ядра, позволяющее ему привелегии в виде полного доступа к УП и ОЗУ. Область памяти, доступ к которой может получить только ядро, называется пространством ядра (kernel space).
User mode - режим работы пользовательских процессов, не имеющих прямого доступа к оборудыванию. Пользовательский режим ограничен доступом к подмножеству памяти (обычно довольно небольшому) и безопасным операциям процессора. Пользовательское пространство - это части основной памяти, к которым могут получить доступ пользовательские процессы.
1.3 ядро
Ядро отвечает за управление задачами в четырех основных областях системы:
- Процессы. Ядро определяет, каким процессам разрешено использовать процессор.
- Память. Ядро должно отслеживать распределение памяти: сколько в данный момент выделено конкретному процессу, сколько можно разделить между другими процессами и сколько свободно.
- Драйверы устройств. Ядро действует как интерфейс между оборудованием (например, диском) и процессами. Обычно оно управляет подключенным оборудованием.
- Системные вызовы и поддержка. Процессы обычно используют системные вызовы для связи с ядром.
1.3.1 управление процессами
переключение контекста - это акт передачи одним процессом управления процессором другому процессу.
Ядро отвечает за переключение контекста.
Переключение контекста позволяет понять, когда именно запускается ядро. Суть заключается в том, что ядро запускается между временными квантами процесса во время переключения контекста.
1.3.2 управление памятью
Ядро должно управлять памятью во время переключения контекста, а это довольно сложная задача. Должны выполняться следующие условия:
- Ядро должно иметь в памяти выделенную область, к которой пользовательские процессы не могут получить доступ.
- Каждому пользовательскому процессу необходима собственная область памяти.
- Один пользовательский процесс не может получить доступ к области памяти, выделенной другому процессу.
- Пользовательские процессы могут совместно работать с памятью.
- Часть памяти пользовательских процессов может быть доступна только для чтения.
- Система может использовать больше памяти, чем ее существует физически, задействуя дисковое пространство в качестве вспомогательного механизма.
Современные процессоры включают в себя блок управления памятью (memory management unit, MMU), который обеспечивает схему доступа к памяти, называемую виртуальной памятью.