Шрифт:
Ядро хранит информацию о всех процессах в двухсвязном списке, который называется task list [10] (список задач). Каждый элемент этого списка является дескриптором процесса и имеет тип структуры
Структура
10
Иногда в литературе по построению операционных систем этот список называется task array (массив задач). Поскольку в ядре Linux используется связанный список, а не статический массив, его называют task list.
Рис. 3.1. Дескриптор процесса и список задач
Выделение дескриптора процесса
Память для структуры
11
Причиной создания структуры
Рис 3.2. Дескриптор процесса и стек ядра
Структура
Для каждой задачи ее структура
Хранение дескриптора процесса
Система идентифицирует процессы с помощью уникального значения, которое называется идентификатором процесса (process identification, PID). Идентификатор
Однако, для обратной совместимости со старыми версиями ОС Unix и Linux максимальное значение этого параметра по умолчанию составляет всего лишь 32768 (что соответствует типу данных
12
Скрытый тип (opaque type) — это тип данных, физическое представление которого неизвестно или не существенно.
Это максимальное значение является важным, потому что оно определяет максимальное количество процессов, которые одновременно могут существовать в системе. Хотя значения 32768 и достаточно для офисного компьютера, для больших серверов может потребоваться значительно больше процессов. Чем меньше это значение, тем скорее нумерация процессов будет начинаться сначала, что приводит к нарушению полезного свойства: больший номер процесса соответствует процессу, который запустился позже. Если есть желание нарушить в системе обратную совместимость со старыми приложениями, то администратор может увеличить это максимальное значение во время работы системы с помощью записи его в файл
Обычно в ядре на задачи ссылаются непосредственно с помощью указателя на их структуры
Для платформы x86 значение параметра
Окончательно значение параметра