Жизненный цикл и типы процессов.

09.09.2011
By

В качестве вступления о жизненном цикле процессов. Для того, чтобы появился новый процесс в unix сиcтеме, существующий процесс с помощью системного вызова fork клонирует себя.  Но у вновь появившегося процесса есть отличия. У него свой PID  и свои ресурсы. Новый процесс запускает новую программу с помощью системного вызова exec. При этом код процесса замещается кодом запускаемой программы. Когда процесс завершается, он сообщает об этом ядру. Передается целое число, указывающее причину завершения. В случае успешного завершения передается ноль.  В unix системах завершение процесса должно быть подтверждено родительским процессом. Для этого ядро хранит код завершения процесса, пока родительский процесс его не запросит. В этот момент ядро не выделяет этому процессу процессорного времени, ресурсы освобождаются, но запись о процессе остается.  Когда родительский процесс выполнит системный вызов wait, процесс будет завершен. В случае, если родительский процесс завершился раньше, то решение этой проблемы берет на себя процесс init. Он должен сам послать системный вызов wait и закрыть процесс.  А вот когда он с этой задачей не справляется по какой-либо причине, то такой процесс убить нельзя. Только перезагрузкой сервера. Такие процессы называются зомби.

А теперь перейдем собственно к типам процессов. Существует несколько типов процессов:

Системные процессы. Эти процессы являются частью ядра. Они всегда находятся в оперативной памяти. Системные процессы не имеют соответствующих исполняемых файлов. Они запускаются при запуске системы особым образом. Выполняемые инструкции для таких процессов находятся в ядре и эти процессы могут вызывать функции и получать доступ у данным, недоступным другим процессам. Примерами системных процессов являются такие процессы как kmadaemon (диспетчер памяти ядра), bdfflush  (диспетчер буферного кэша) и другие. К системным процессам относится и процесс init.

Демоны. Это процессы, которые загружаются обычным путем. Путем загрузки исполняемых файлов. Демоны, как правило, обеспечивают работу различных подсистем unix систем. Обычно они находятся в состоянии ожидания, пока кто-нибудь не запросит соответствующую услугу. Эти процессы не интерактивны. Более того, не смотря на то, что они запускаются обычным способом, эти процессы не имеют управляющего терминала, при просмотре процессов, у демонов в этом поле знак вопроса. И родительский процесс у них всегда init. В книге А. Робачевского «Операционная система Unix» я прочитал, как любой процесс превратить в демона. Была такая необходимость. Там приводится программа буквально из нескольких строк, как отвязаться от управляющего терминала и сделать родительским процессом процесс init.  Об этом напишу подробнее в отдельной статье.

Прикладные процессы. К этой категории относятся все остальные процессы. Одним из важнейших прикладных процессов является процесс командного интерпретатора. Этот процесс интерактивный. Он ожидает ввода команд и для каждой команды порождает дочерний процесс интерпретатора. Но бывают исключения. Об этом в другой статье. Прикладные процессы могут работать не только в интерактивном режиме, но также и в фоновом. Ещё одной отличительной особенностью прикладных процессов является то, что они монопольно владеют терминалом. Пока не завершиться один процесс, невозможно запустить другой процесс. Но время их работы ограничено  временем работы пользователя. Как только пользователь завершает работу, все его процессы завершаются.  В случае, если нужно запустить процесс, чтобы он работал после завершения сеанса работы пользователя, есть несколько вариантов: запустить процесс как демон, запустить в программе screen, запустить с помощью программы cron или  с помощью команды at. Но об этом в других статьях.

Поделитесь с друзьями:

Напишите мне:

Related posts:

  1. Атрибуты процессов unix системы
  2. Типы файлов.
  3. Процессы unix системы
  4. Загрузка операционных систем семейства unix

Tags:

3 Responses to Жизненный цикл и типы процессов.

  1. Радик on 14.09.2011 at 1:54 пп

    Спасибо за интересную статью!

  2. Zaiyah on 30.09.2011 at 11:17 дп

    Could you write about Phcsyis so I can pass Science class?

  3. eugeny on 30.09.2011 at 12:07 пп

    I can write in Russian only.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

А какими операционными системами пользуетесь Вы?

Результаты

Loading ... Loading ...

Start Up