Управление процессами. Переход процесса из состояния в состояние. Операции над процессами, страница 4

n  включение этого имени в список имен процессо, известных системе;

n  определение начального приоритета процесса;

n  формирование блока управления процессом;

n  выделение процессу начальных ресурсов.

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

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

Если дочерние процессы должны быть уничтожены, то возможна ситуация, когда дочерний процесс должен выполнить некоторые действия для своего нормального завершения (например, сохранить обрабатываемые данные). Тогда родительский процесс должен ожидать завершиния процесса ликвидации дочерних процессо, и только тогда завершиться сам.

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

Сделаем некоторые замечания по поводу понятия процесса в современных 32-разрядных ОС (Windows NT, SunOS, Solaris)

Итак, процесс можно определить как “экземпляр” (иногда говорят, копию) выполняемой програмы. В Win32 процессу отводится 4 Гб адресного пространства. Понятие процесса в Win32 отличается от своих аналогов, например, в MS DOS и 16-разрядной Windows. В Win32 процессы инертны. Иными словами, процесс в Win32 ничего не исполняет - он просто “владеет” четырехгигабайтным адресным пространством, содержащим код и данные для EXE - файла приложения. Код и данные DLL- библиотек - если того требует EXE- файл - тоже загружаются в адресное пространство процесса. Помимо адресного пространства, процессу принадлежат такие ресурсы, как файлы, динамические области памяти и потоки. Ресурсы, создаваемые при жизни процесса, обязательно уничтожаются при его завершении.

Как я уже упоминал, процессы инертны. Чтобы процесс что-нибудь выполнял, в нем нужно создать поток. Именно потоки отвечают за исполнение кода, помещенного в адресное пространство процесса. В принципе, один процесс может содержать несколько потоков, и тогда они “одновременно” исполняют код в адресном пространстве процесса. Для этого каждый поток должен располагать собственным набором регистров процесса (другими словами, собственным состоянием) и собственным стеком, а каждый процесс - как минимум одним потоком, исполняющим код, помещенный в адресное пространство процесса.

Если бы у процесса не было ни одного потока, им нечего было бы делать “на этом свете”, и система автоматически уничтожила бы его вместе с выделенным ему адресным пространством.

Что бы все эти потоки работали, ОС отводит каждому из них определенное процессорное время. Тем самым, выделяя потокам отрезки времени (называемые квантами), ОС создает иллюзию одновременного выполнения потоков.

При создании Win32 - процесса система создает первичный поток автоматически. Далее первичный поток может создавать дополниетльные потоки, те, в свою очередь - новые, и т.д.

Я полагаю, что мы в состоянии спроецировать все выше сказаное о процессах на понятие потока. Просто в современных ОС иерархия понятий увеличилась на один уровень - добавилось понятие потока. Мы можем рассуждать. Как будто бы все выше сказанное относится к процессам с одним единственным потоком (как оно и есть в еще работающих, но уже устаревающих ОС).

Давайте попытаемся подитожить введенные сегодня понятия :

Процесс. Совпадает ли это понятие с понятием программа?