Сейчас на сайте
Сейчас на сайте 0 пользователей и 0 гостей.

Жизненый цикл процесса (программы)

Единицей управления и потребления ресурсов в системе служит процесс (в MS-DOS - программа). Процесс - последовательное (или псевдо-параллельное) вычисление. В частности, ввод/вывод обычно выполняется синхронно, и процесс приостанавливается до его завершения. Если требуется продолжить выполнение процесса параллельно с инициированным им вводом/выводом, в UNIX нeoбходимо предварительно породить другой процесс для реализации ввода/вывода; в MS-DOS можно воспользоваться механизмом прерываний. Каждый процесс работает в своем адресном пространстве.

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

Функции семейства exec операционной системы UNIX позволяет передать управление другой программе, заменив текущий образ процесса образом новой программы, без создания нового процесса. При этом возврат к старому процессу невозможен.

В MS-DOS программа может быть загружена в память с немедленным запуском (запуск начинается с первой инструкции) или без запуска (оверлей) на выполнение, при этом для каждой программы в начале ее рабочей памяти создается специальная управляющая структура PSP - program segment prefix, которая отвечает за передачу управления в и из прогаммы, хранит информацию об открытых файлах, параметрах, переданных программе при вызове.

В обеих операцоинных системах процесс (программа) наследует все файлы, открытые его отцом, текущий каталог и управляющий терминал.

Процесс (программа) завершаются нормальным образом по своей инициативе (вызовом специальной функции в UNIX, системным прерыванием в MS-DOS) и возвращают отцу код завершения, или аварийным образом - получив сигнал.