Наверх Системное программирование
Предыдущий раздел Оглавление Следующий раздел

3.1.1. Модель процесса

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

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

В дальнейшем изложении материала примем допущение, что в нашем распоряжении имеется лишь один центральный процессор.

Рис

Рис. 3.1. Компьютер: а — четыре программы,
представленные в контексте многозадачности;
б — концептуальная модель четырех независимых друг
от друга процессов; в — активность программ
в течении некоторого отрезка времени

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

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

Также стоит отметить, что если программа была запущена дважды, то это значит, что этой программой заняты оба процесса. Например, можно дважды запустить текстовый редактор или одновременно распечатать два файла при условии наличия двух доступных для печати принтера. Эти процессы для операционной системы являются разными, хотя они и были запущены от одной и той же программы. Данные процессы может объединять только общий код, существующий в памяти в виде одной копии и доступ к которому может предоставить операционная система.

Предыдущий раздел Оглавление Следующий раздел