Помощь в учёбе, очень быстро...
Работаем вместе до победы

Структуры данных процесса

РефератПомощь в написанииУзнать стоимостьмоей работы

Кроме того в Linux имеется команда, клонирующая существующий процесс. Однако при вызов clone (), в отличие отfork (), новый процесс независим от его процесса-родителя, но может разделять некоторые его ресурсы. Системный вызов clone () используется, например, когда необходимо реализовать некоторый поток (threads). Информация о статусе ввода/вывода (I/O status information). Содержит список… Читать ещё >

Структуры данных процесса (реферат, курсовая, диплом, контрольная)

При создании каждого процесса создается некоторая структура данных, называемая РСВ (Process Control Block) и иногда — таблицей процессов (Process Table), содержащая информацию, специфицирующую данный процесс. Эта таблица содержит информацию о состоянии процесса, программный счетчик, указатель стека, расположение памяти, статус открытых файлов, информацию о планировании выполнения и в обязательном порядке информацию о том, что необходимо сохранять при переключении контекста — при выгрузке процесса и что должно восстанавливаться при возобновлении процесса.

Эта информация разделяется на две категории: информация о состоянии процесса (Process State Information) и информация, управляющая процессом (Process Control Information), а именно:

  • • уникальный идентификатор процесса (pid), а также указатель на pid родительского процесса, а если есть другие дочерние процессы, то и их идентификаторы;
  • • состояние процесса (process state). Эта переменная может принимать значения: новый (new), готов (ready), работа (running), ожидание (waiting), остановлен (halted) и др.;
  • • программный счетчик (program counter). Счетчик показывает адрес следующей команды, которую должен выполнить процесс;
  • • значения регистров процессора (CPU registers). В зависимости от архитектуры процессора это могут быть значения аккумулятора, индексных регистров, указателя стека, содержание общих регистров и некоторая информация о состоянии процессора;
  • • информация о планировании (CPU-scheduling information). Эта информация включает приоритет процесса, указатель на очередь планирования и т. д.;
  • • информация об используемой памяти (Memory-management information). Включает в себя значение используемой и максимальной памяти, таблицу страниц, используемой памяти или таблицу сегментов в зависимости от организации памяти в ОС;
  • • учетная информация (accounting information). Содержит данные о количестве CPU и их реальном времени занятости, размеры квантов времени, числе работающих процессов и т. п.;
  • • информация о статусе ввода/вывода (I/O status information). Содержит список устройств I/O, занимаемых процессом, и список открытых файлов. Состав и структура такой таблицы зависят от конкретной ОС. В некоторых ОС эта информация расположена в нескольких связанных структурах данных.

Алгоритмы реализации системного вызова forkQ для ОС с пейджингом и свопингом незначительно различаются. Для успешного вызоваfork () должны быть свободная оперативная память, достаточная для размещения порожденного процесса, и другие необходимые ресурсы. Если свободных ресурсов недостаточно, то вызов fork () завершается неудачно. В следующем фрагменте кода показан пример создания дерева из семи процессов:

#include

#include

#include int main ()

{.

char pid[255]; fork (); fork () fork ();

sprintf (pid, «PID: %d «, getpid()); write (STDOUT_FILENO, pid, strlen (pid)); exit (O);

}.

Кроме системного вызоваfork () в UNIX имеется команда ехес (), однако при ее вызове работающий процесс (например, интерпретатор bash) заменяется на другой, указанный в параметре ехес (). Иными словами, загружается другая программа, но так как здесь не создается новый процесс, то предыдущая программа должна быть дублирована, с использованием вызова fork (), а затем уже вызов ехес () создает дополнительное приложение в системе.

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

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

Кроме процессов-зомби в ОС UNIX могут возникать висячие процессы, или процессы-сироты (orphan process), для которых родительский процесс был завершен аварийно, без подачи соответствующего сигнала о завершении работы. Поскольку процессы-сироты используют системные ресурсы, то их необходимо уничтожать. Это может быть сделано посылкой специальных сигналов в методе уничтожение (extermination) либо попыткой «воскрешения» родителей или поиска других, например, более старших родителей, как в методе перевоплощение (reincarnation). Наконец, может быть использован метод лимита времени (expiration), при котором процессу урезается временная квота до момента принудительного удаления. В UNIX-подобных системах все процессы-сироты усыновляются процессом с идентификатором, равным 1, обычно это системный процесс «init». Эта операция еще называется переподчинением (reparenting) и происходит автоматически.

Анализ состояний процессов

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

Теорема. Эффективность ОС может быть неявно измерена или определена в результате наблюдения распределения процессов по состояниям.

Из этой теоремы вытекают следствия.

Следствие 1. Система называется ограниченной по вводу/выводу (I/O), если большое число процессов пребывает в ожидании доступа к файлам или устройствам либо ожидает завершения операций I/O.

Следствие 2. Система называется ограниченной по быстродействию, если большая часть процессов находится в очереди на выполнение, а меньшая часть в очереди к устройствам I/O.

Таким образом, сбалансированная система обладает равномерным распределением процессов по состояниям. Наблюдая состояния процессов, можно сделать вывод о том, как работает система и что необходимо сделать для оптимизации ее работы.

Показать весь текст
Заполнить форму текущей работой