Основы операционной системы UNIX

         

Управление процессами


Основным ресурсом компьютера является его процессор (или процессоры). В каждый момент времени один процессор может выполнять только один процесс. Организация планирования процессов так, чтобы за счет их переключения создавалась иллюзия одновременной работы нескольких процессов - одна из основных задач любой многопользовательской и многозадачной операционной системы.

В ОС UNIX основным средством организации и единицей многозадачности является процесс - уникальным образом идентифицируемая программа, которая нуждается в получении доступа к ресурсам компьютера. Операционная система манипулирует образом процесса, который представляет собой программный код, а также разделами данных процесса, определяющими среду выполнения. Сегмент кода содержит реальные инструкции процессора, включающие как строки, скомпилированные и написанные пользователем, так и стандартный код, сгенерированный компилятором для системы. Этот системный код обеспечивает взаимодействие между программой и операционной системой.

Основой операционной системы UNIX является ядро. Ядро представляет собой специальную программу (или несколько программных модулей, в случае модульного ядра), которая постоянно находится в оперативной памяти и работает, пока работает операционная система. Ядро управляет всеми таблицами, используемыми для отслеживания процессов и других ресурсов. Ядро загружается в память во время начальной загрузки и немедленно запускает необходимые процессы, в частности процесс инициализации операционной системы - init.

Данные, связанные с процессом, также являются частью образа процесса. Некоторые из них хранятся в регистрах, обычно представленных регистрами процессора. Кроме того, существуют динамические области хранения данных (куча), выделяемые процессом по ходу работы при необходимости.

Еще у процесса есть стек, содержащийся в памяти и используемый для хранения локальных переменных программы и передачи параметров. Когда процесс выполняет обращение к функции или подпрограмме, в стек отправляется новый фрейм. Одной из частей каждого фрейма является указатель на базу предыдущего фрейма, который позволяет легко вернуться из вызова функции. При этом важно знать местоположение текущего фрейма и вершину стека.




Содержание  Назад  Вперед