Инструменты пользователя

Инструменты сайта


kernel_linux

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

kernel_linux [2016/01/19 06:14] (текущий)
sander создано
Строка 1: Строка 1:
 +====== Ядро ======
 +Ядро отвечает за управление задачами в четырех основных областях системы.
 +  - **Процессы.** Ядро отвечает за то, каким процессам разрешен доступ к центральному процессору.
 +  - **Память.** Ядру необходимо отслеживать состояние всей памяти:​ какая часть в данный момент отведена под определенные процессы,​ что можно выделить для совместного использования процессами и какая часть свободна.
 +  - **Драйверы устройств.** Ядро выступает в качестве интерфейса между аппаратными средствами (например,​ жестким диском) и процессами. Как правило,​ управление аппаратными средствами выполняется ядром.
 +  - **Системные вызовы и поддержка.** Обычно процессы используют системные вызовы для взаимодействия с ядром.
  
 +===== Управление процессами =====
 +
 +Управление процессами описывает запуск,​ остановку,​ возобновление и прекращение работы процессов.\\
 +
 +Действие,​ при котором какой-либо процесс передает другому процессу управление процессором,​ //​называется переключением контекста//​.\\
 +
 +**Каждый отрезок времени** — **квант времени** — предоставляет процессу достаточно времени для выполнения существенных вычислений (и, конечно же, процесс часто завершает свою текущую задачу в течение одного кванта). Поскольку кванты времени настолько малы, человек их не воспринимает и ему кажется,​ что в системе одновременно выполняется несколько процессов (такая возможность известна под названием «многозадачность»).\\
 +
 +**Ядро отвечает за переключение контекста.** Чтобы понять,​ как это работает,​ представим ситуацию,​ в которой процесс запущен в режиме пользователя,​ но его квант времени заканчивается. Вот что при этом происходит.
 +  - Процессор (реальное аппаратное средство) прерывает текущий процесс,​ опираясь на внутренний таймер,​ переключается в режим ядра и возвращает ему управление.
 +  - Ядро записывает текущее состояние процессора и памяти,​ которые будут необходимы для возобновления только что прерванного процесса.
 +  - Ядро выполняет любые задачи,​ которые могли появиться в течение предыдущего кванта времени (например,​ сбор данных или операции ввода/​вывода).
 +  - Теперь ядро готово к запуску другого процесса. Оно анализирует список процессов,​ готовых к запуску,​ и выбирает какой-либо из них.
 +  - Ядро готовит память для нового процесса,​ а затем подготавливает процессор.
 +  - Ядро сообщает процессору,​ сколько будет длиться квант времени для нового процесса.
 +  - Ядро переводит процессор в режим пользователя и передает процессору управление.
 +
 +===== Управление памятью =====
 +
 +Поскольку ядро должно управлять памятью во время переключения контекста,​ оно наделено этой сложной функцией. Работа ядра сложна,​ поскольку необходимо учитывать следующие условия:​
 +
 +  * ядро должно располагать собственной областью памяти,​ к которой не могут получить доступ пользовательские процессы;​
 +  * каждому пользовательскому процессу необходима своя область памяти;​
 +  * какой-либо пользовательский процесс не должен иметь доступ к области памяти,​ предназначенной для другого процесса;​
 +  * пользовательские процессы могут совместно использовать память;​
 +  * некоторые участки памяти для пользовательских процессов могут быть предназначены только для чтения;​
 +  * система может применять больше памяти,​ чем ее есть в наличии,​ задействовав в качестве вспомогательного устройства дисковое пространство.
 +
 +
 +У ядра есть помощник. Современные процессоры содержат **модуль управления памятью (MMU)**, который активизирует схему доступа к памяти под названием **«виртуальная память»**.
 +
 +===== Драйверы устройств и управление ими =====
 +
 +<WRAP center round tip 90%>
 +Задача ядра по отношению к устройствам довольно проста. Как правило,​ устройства доступны только в режиме ядра, поскольку некорректный доступ (например,​ когда пользовательский процесс пытается выключить питание) может вызвать отказ в работе компьютера. Еще одна проблема заключается в том, что различные устройства редко обладают одинаковым программным интерфейсом,​ даже если они выполняют одинаковую задачу:​ например,​ две различные сетевые карты. По этой причине драйверы **устройств традиционно являются частью ядра и стремятся предоставить унифицированный интерфейс для пользовательских процессов**,​ чтобы облегчить труд разработчиков программного обеспечения.
 +</​WRAP>​
 +
 +===== Системные вызовы и поддержка =====
 +
 +<WRAP center round tip 90%>
 +Существуют и другие типы функций ядра, доступные для пользовательских процессов. Например,​ системные вызовы выполняют специальные задачи,​ которые пользовательский процесс не может выполнить хорошо в одиночку или вообще не может справиться с ними. Так, все действия,​ связанные с открытием,​ чтением и записью файлов,​ вовлекают системные вызовы.
 +</​WRAP>​
kernel_linux.txt · Последние изменения: 2016/01/19 06:14 — sander