Информатика и технология программирования


Понятие процессаПроцесс и программа


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

Если проводить аналогию с языками высокого уровня, то процесс - это выполнение функции с заданными локальными данными. Некоторое представление о процессе дает рекурсивная функция. В ней уже есть разница между текстом программы и ее выполнением - одному экземпляру текста программы соответствует несколько экземпляров вызова функции:


// Текст:


void proc(int vv)
{... if (...) proc(x); }
// Реализация:


void proc1(int vv1)
{...
if (...) proc2(x1);
}
void proc2(int vv2)
{...
if (...) proc3(x2);
}
void proc3()
{ ... }

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

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


strust message { ... данные ... }; // сообщение


void f1() // программа - процесс


{
while (1) // цикл работы процесса


{ // процесс f1, ожидающий сообщения


message *p = get_message(f1) ;



Начало  Назад  Вперед



Книжный магазин