Основной задачей любой операционной системы является управление процессами. Операционная система должна распределять между ними ресурсы, предоставлять им возможность совместно использовать информацию и обмениваться ею, защищать ресурсы, используемые одним процессом, от их использования другими процессами, а также обеспечивать возможность синхронной работы процессов. Для этого операционная система должна поддерживать для каждого процесса свою структуру данных, в которой задается состояние данного процесса и указываются ресурсы, которыми он владеет. Это позволяет операционной системе осуществлять управление процессами.
В многозадачной однопроцессорной системе несколько различных процессов могут выполняться, чередуясь один с другим. В многопроцессорной системе несколько процессов могут не только чередоваться, но и выполняться одновременно. Эти типы параллелизма вызывают массу сложных проблем, с которыми сталкивается как создающий приложение программист, так и операционная система.
Во многих современных операционных системах положение с управлением процессами усложняется введением понятия потока. В многопоточной системе принадлежность ресурсов остается атрибутом процесса, в то время как сам процесс представляет собой множество параллельно выполняющихся потоков.
Архитектура операционной системы должна удовлетворять определенным требованиям. Все многозадачные операционные системы используют концепцию процесса — начиная с однопользовательских операционных систем, таких, как Windows 98, и заканчивая операционными системами для мейнфреймов, таких, как OS/390, которые способны поддерживать работу тысяч пользователей. Таким образом, основные требования, которым должны удовлетворять операционные системы, могут быть сформулированы с использованием понятия процесса.
Операционная система должна чередовать выполнение нескольких процессов, чтобы повысить степень использования процессора при обеспечении разумного времени отклика.
Операционная система должна распределять ресурсы между процессами в соответствии с заданной стратегией (т.е. предоставляя определенным функциям или приложениям более высокий приоритет), избегая в то же время взаимоблокировок.1
От операционной системы может потребоваться поддержка обмена информацией между процессами, а также обеспечение возможности создания процессов пользователями. Обе эти возможности могут помочь в структурировании приложений.
Подробное изучение операционных систем мы начнем со знакомства с представлением процессов и управлением ими. Для начала рассмотрим возможные состояния процессов, характеризующие их поведение; затем перейдем к структурам данных, которые нужны операционной системе для представления состояния и других характеристик процессов. И, наконец, будет рассмотрено управление процессами в операционной системе UNIX SVR4.