BSD, Обзор, Процессы

Межпроцессное взаимодействие

Межпроцессное взаимодействие в FreeBSD организовано в коммуникационные доме­ны. Важнейшие домены, поддерживаемые в настоящее время, включают локальный домен для взаимодействия процессов, выполняющихся на одной машине; домен IPv4 для взаимодействия процессов с использованием набора протоколов TCP/IP (четвертой версии) и домен IPv6, который является новейшей версией протоколов Интернета.

Управление дескрипторами

Большинство процессов ожидают, что при их запуске будут уже открыты три дескрип­тора. Этими дескрипторами являются 0, 1 и 2, более известные как стандартный ввод, стандартный вывод и стандартная ошибка соответственно. Обычно все три связы­ваются с терминалом пользователя в процессе регистрации и насле­дуются запущенными пользователем процессами через fork и exec. Таким образом, программа может читать то, что набирает пользователь, читая стандартный ввод, и может посылать вывод на экран пользователю, записывая в стандартный вывод.

Управление памятью процессов

У каждого процесса есть свое собственное отдельное адресное пространство. Адрес­ное пространство изначально разделено на три логических сегмента: кода или текста (text), данных и стека. Сегмент text является сегментом только для чтения и содержит машинные инструкции программы. Сегменты данных и стека можно и читать, и запи­сывать. Сегмент данных содержит разделы инициализированных и неинициализиро­ванных данных программы, тогда как сегмент стека содержит стек приложения време­ни выполнения. Сегмент стека автоматически расширяется ядром по мере выполнения процесса.

Группы процессов и сеансы

Процессы организованы в группы процессов. Группы процессов используются для управления доступом к терминалам и предоставления средств распределения сигналов по совокупностям связанных процессов. Процесс наследует свою группу процесса от своего родительского процесса. Ядром предоставляются механизмы для изменения процессами своих групп процессов или групп процессов своих потомков. Создание новой группы процессов просто; значением новой группы процессов обычно является идентификатор создающего процесса.

Сигналы FreeBSD

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

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

FreeBSD поддерживает многозадачное окружение. Каждая задача или поток исполне­ния называется процессом. Контекст процесса FreeBSD состоит из состояния пользо­вателя, которое включает содержимое адресного пространства и окружения времени выполнения, и состояния ядра, включающего параметры планировки процесса, управ­ление ресурсами и идентификационную информацию. Контекст включает все исполь­зуемое ядром для обслуживания процесса. Пользователи могут создавать процессы, управлять ходом их выполнения и получать уведомления, когда состояние выполнения процесса изменяется.

RSS-материал