Читать «Внутреннее устройство Linux» онлайн - страница 8
Брайан Уорд
1.3.2. Управление памятью
Поскольку ядро должно управлять памятью во время переключения контекста, оно наделено этой сложной функцией. Работа ядра сложна, поскольку необходимо учитывать следующие условия:
• ядро должно располагать собственной областью памяти, к которой не могут получить доступ пользовательские процессы;
• каждому пользовательскому процессу необходима своя область памяти;
• какой-либо пользовательский процесс не должен иметь доступ к области памяти, предназначенной для другого процесса;
• пользовательские процессы могут совместно использовать память;
• некоторые участки памяти для пользовательских процессов могут быть предназначены только для чтения;
• система может применять больше памяти, чем ее есть в наличии, задействовав в качестве вспомогательного устройства дисковое пространство.
У ядра есть помощник. Современные процессоры содержат
Примечание
Реализация карты адресов памяти называется таблицей страниц.
О том, как отслеживать производительность памяти, вы узнаете из главы 8.
1.3.3. Драйверы устройств и управление ими
Задача ядра по отношению к устройствам довольно проста. Как правило, устройства доступны только в режиме ядра, поскольку некорректный доступ (например, когда пользовательский процесс пытается выключить питание) может вызвать отказ в работе компьютера. Еще одна проблема заключается в том, что различные устройства редко обладают одинаковым программным интерфейсом, даже если они выполняют одинаковую задачу: например, две различные сетевые карты. По этой причине драйверы устройств традиционно являются частью ядра и стремятся предоставить унифицированный интерфейс для пользовательских процессов, чтобы облегчить труд разработчиков программного обеспечения.
1.3.4. Системные вызовы и поддержка
Существуют и другие типы функций ядра, доступные для пользовательских процессов. Например,