Понятие о параллельных процессах.

Наиболее плодотворной идеей для увеличения производительности ВС является организация параллельной обработки информации, т.е. совмещение во времени этапов решения одной или нескольких задач. ЭВМ первых двух поколений и некоторые современные простейшие контроллеры, получив приказ о начале выполнения некой программы, записанной в главной памяти, шаг за шагом выполняют все ее инструкции, связанные как с вычислениями, так и с операциями ввода-вывода. Реальная картина работы современных мультипрограммных ВС строится на совершенно других принципах. Мультипрограммная ВС в любой момент времени выполняет несколько параллельных процессов. Процесс – это программа в стадии выполнения, т.е. «живая душа» процедуры. Процессы «рождаются», «живут» какое-то время, «порождают» другие процессы и «умирают». Внутренний информационный мир машины неповторим.

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

В понятие среды включает все, что может видоизменяться процессором:

· регистры процессора

· ячейки оперативной памяти

· дисковая память

· бумага

 

 


Рисунок 2.1.2 – Процессы в вычислительной системе

 

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

Для связи с другими процессами, для порождения нового или прекращения выполняющегося процесса (в том числе и самого себя) процессы вырабатывают т.н. экстракоды, имеющие вид специальной машинной команды или сигнала запроса прерывания. Экстракоды направляются в адрес главного процесса, который единолично обслуживает связь между процессами. Экстракоды делятся на две группы:

1. экстракоды возбуждения и прекращения процессов

· возбуждения (для возбуждения нового процесса В процесс А выдает экстракод, сопровождаемый вектором начального состояния для процесса В, который среди прочего должен содержать начальный адрес соответствующей программы) Этот процесс напоминает обращение к подпрограмме, но отличием является то, что новый процесс В будет выполняться одновременно с породившем его процессом А.

· завершения (посыл требования главному процессу прекратить другой процесс или данный процесс, выдавший экстракод)

2. экстракоды операций над семафорами (маркерами связи)

· изменение значения данного семафора (например, увеличить на 1)

· прерывание процесса, выдавшего экстракод (пока заданное отношение, включающее значение семафора, не станет истинным; если оно истинно уже в данный момент, процесс не прерывается)

· проверка выполнения условия (если выполняется – применить к семафору указанную операцию и перейти к следующей команде, если не выполняется – перейти по указанному адресу)


Рисунок 2.1.3 – Классификация экстракодов

 

Только экстракоды, а не обычные команды, меняют значения семафоров, т.к. эти изменения могут повлечь за собой побочный эффект возобновления какого-либо прерванного процесса.