ФОРМИРОВАНИЕ И СИНХРОНИЗАЦИЯ ПРОЦЕССОВ

Каждый пользователь формирует свою задачу. Задача содер­жит один или несколько в общем случае взаимосвязанныхпроцессов. При выполнении одних процессов может быть пре­дусмотрено рождение новых процессов. В рамках одной задачи и отведенной для нее памяти обычно операционная система стре­мится использовать минимальное число формируемых стеков. Так как стек есть фактически модель операционного устройства - процессора, то для последовательно выполняемых процессов естественно стремление снизить число формируемых стеков, обеспечить их преемственность, начиная выполнение новых процессов на стеках закончившихся процессов или процессов, их породивших. Распараллеливание для полного использования ресурсов осуществляется двумя путями:

• на основе естественного существования независимых за­дач пользователей;

• на основе существования сложных программных систем, которые состоят из взаимосвязанных процессов, допускающих параллельное выполнение.

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

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

Несколько стеков процессов могут формироваться для распараллеливания задачи. В целом, в рамках одной задачи мо­жет быть сформировано сколько угодно процессов. Процессы ставятся в очередь в соответствии с приоритетом. Приоритет формируется с учетом приоритета задачи пользователя - абсо­лютный приоритет, а также с учетом приоритета по сравнению с приоритетами других процессов в рамках данной задачи - от­носительный приоритет. Абсолютные и относительные приори­теты всех процессов могут быть приведены к приоритету про­цесса выбором такого его значения, при котором приоритет любого процесса задачи пользователя с меньшим приоритетом обязательно меньше приоритета любого процесса задачи с боль­шим приоритетом.

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