Основные задачи управления процессами
Процесс – минимальный программный объект, обладающий собственными системными ресурсами. Под управлением процессами понимаются процедуры ОС, обеспечивающие запуск, выполнение и завершение системных и прикладных программ.
В однозадачных ОС управление процессами решает следующие задачи:
загрузка программы в память, подготовка ее к запуску и запуск на выполнение;
выполнение системных вызовов процесса;
обработка ошибок, возникших в ходе выполнения;
нормальное завершение процесса;
прекращение процесса в случае ошибки или вмешательства пользователя.
В многозадачном режиме добавляются следующие задачи:
реализация параллельного выполнения процессов на единственном процессоре, переключение процессора между процессами;
выбор очередного процесса для выполнения с учетом заданных приоритетов процессов и статистики использования процессора;
исключение возможности несанкционированного вмешательства одного процесса в выполнение другого;
предотвращение или устранение тупиковых ситуаций, возникающих при конкуренции процессов за системные ресурсы;
обеспечение синхронизации процессов и обмена данными между ними.
Ресурс – средство вычислительной системы, которое может быть выделено процессу на определенный интервал времени.
При описании работы многозадачных систем основное внимание уделяется вопросам, связанным с параллельным выполнением, т.е. с одновременной работой нескольких процессов. Однако общий термин «параллельное выполнение» объединяет два существенно различных способа организации выполнения процессов – синхронный и асинхронный параллелизм.
Синхронный параллелизм предполагает наличие общей тактовой последовательности, управляющей шагами выполнения параллельно работающих процессов. Синхронная организация используется в некоторых типах многопроцессорных вычислительных систем.
При асинхронном параллелизме общего такта нет. Процессы выполняются независимо друг от друга, при этом не делается никаких предположений об их сравнительной скорости, о соотношении времени выполнения различных фрагментов программ и т.п. Сопоставить продвижение разных процессов можно только в заданных точках программы процессов, называемых точками синхронизации. Синхронизация обычно означает ожидание одним процессом какого-либо события, связанного с другим процессом. Например, после разветвления выполнения на две параллельные ветви и выполнения ветвями определенных задач может понадобиться свести ветви воедино: та ветвь, которая закончила свое выполнение раньше, должна дождаться завершения другой ветви. Другой пример: процесс, выполняющий обработку введенных строк, может ждать, пока другой процесс не прочтет очередную строку из файла или с клавиатуры.
Точка синхронизации может быть связана также с обменом данными между процессами. Когда процесс-приемник завершает прием данных, то можно быть, по крайней мере, уверенным, что процесс-источник достиг того места в программе, где он должен был передать данные.
Квазипараллельное выполнение процессов
Квазипараллельность – это иллюзия параллельности выполняемых процессов, т.е. того, что процессы сменяют друг друга через малые интервалы времени, которые пользователь не в силах отследить. Подобная организация работы называется квазипараллельным выполнением процессов.
Разумеется, если в системе имеется несколько процессоров, то может быть организовано настоящее параллельное выполнение процессов, количество которых не превышает количества процессоров. При большем числе процессов может использоваться смешанная организация, сочетающая истинную параллельность и квазипараллельность.
Основные проблемы управления процессами можно разбить на два уровня:
проблемы корректной и эффективной реализации параллельного (т.е. обычно квазипараллельного) выполнения процессов – это проблемы нижнего уровня;
проблемы корректного взаимодействия параллельных процессов – это проблемы верхнего уровня, при рассмотрении которых считается, что низкоуровневые проблемы реализации процессов так или иначе решены.