Жизненный цикл процесса
Категория: Управление процессами | Автор: admin | 30-09-2009, 04:11

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

Системный вызов fork обладает уникальным свойством: он возвращает сразу два значения. В порожденном процессе эта функция возвращает 0, а в родительском — идентификатор потомка. Поскольку в остальном процессы идентичны, они должны проверять это значение, чтобы определить, в какой роли следует выступать дальше.

После выполнения системного вызова fork новый процесс обычно запускает новую программу с помощью одного из системных вызовов семейства exec. Все вызовы семейства exec производят приблизительно одинаковые действия: они замещают сегмент кода процесса и устанавливают сегменты данных и стека в исходное состояние. Формы вызовов exec отличаются только способами указания аргументов командной строки и переменных среды, передаваемых новой программе.


Просмотров: 4191 | Подробнее... | Комментариев: 0
  Сигналы
Категория: Управление процессами | Автор: admin | 30-09-2009, 04:14

Сигналы — это запросы на прерывание на уровне процессов. В UNIX определено свыше тридцати различных сигналов, и они находят самое разное применение:

  • сигналы могут посылаться от одного процесса к другому как средство межзадачного взаимодействия;

  • сигналы могут посылаться драйвером терминала для уничтожения или приостанова процессов, когда пользователь нажимает специальные комбинации клавиш, такие как <Control-C> и <Control-Z>;

  • сигналы могут посылаться пользователем или администратором с помощью команды kill;

  • сигналы могут посылаться ядром, когда процесс выполняет нелегальную инструкцию, например деление на ноль.

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


Просмотров: 3622 | Подробнее... | Комментариев: 0
  Отправка сигналов: команда kill
Категория: Управление процессами | Автор: admin | 30-09-2009, 04:15

Команду kill чаше всего используют для прекращения выполнения процесса. Эта команда может послать процессу любой сигнал, но по умолчанию это сигнал TERM (программное завершение). Команду kill могут выполнять как обычные пользователи (для своих собственных процессов), так и пользователь root (для любого процесса). Она имеет следующий синтаксис:

kill [-сигнал] идентификатор

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

Команда kill без номера сигнала не гарантирует, что процесс будет уничтожен, потому что сигнал TERM можно перехватывать, блокировать и игнорировать. Команда

kill -9 pid

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


Просмотров: 3818 | | Комментариев: 0
  Состояния процессов
Категория: Управление процессами | Автор: admin | 30-09-2009, 04:16

Факт существования процесса не дает ему автоматического права на получение доступа к центральному процессору. Необходимо знать о четырех состояниях выполнения процесса, которые перечислены в табл. 4.2.

Таблица 4.2. Состояния процесса

Состояние

Описание

Выполнение

Процесс можно выполнять

Ожидание

Процесс ждет выделения какого-либо ресурса

Зомби

Процесс пытается завершиться

Останов

Процесс приостановлен (не имеет разрешения на выполнение)

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


Просмотров: 3208 | Подробнее... | Комментариев: 0
  Изменение приоритета выполнения: команды nice и renice
Категория: Управление процессами | Автор: admin | 30-09-2009, 04:19

Значение nice (фактор уступчивости) подсказывает ядру, как следует относиться к данному процессу по сравнению с другими процессами, конкурирующими за право доступа к центральному процессору. Чем ниже значение nice, тем выше приоритет процесса.

Диапазон допустимых значений меняется от системы к системе. Как правило, он простирается от -20 до +19, а иногда — от 0 до 39 (см. табл. 4.3).

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


Просмотров: 3564 | | Комментариев: 0


 
Логин
Пароль
 

 
Locations of visitors to this page