Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
osi.docx
Скачиваний:
0
Добавлен:
26.01.2020
Размер:
316.33 Кб
Скачать
  1. Процессы. Состояния процессов. Операции над процессами. Контекст и дескриптор процесса. Команды управления процессами.

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

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

Состояние процессов

В многозадачной (многопроцессной) системе процесс может находиться в одном из трех основных состояний:

ВЫПОЛНЕНИЕ - активное состояние процесса, во время которого процесс обладает всеми необходимыми ресурсами и непосредственно выполняется процессором;

ОЖИДАНИЕ - пассивное состояние процесса, процесс заблокирован, он не может выполняться по своим внутренним причинам, он ждет осуществления некоторого события, например, завершения операции ввода-вывода, получения сообщения от другого процесса, освобождения какого-либо необходимого ему ресурса;

ГОТОВНОСТЬ - также пассивное состояние процесса, но в этом случае процесс заблокирован в связи с внешними по отношению к нему обстоятельствами: процесс имеет все требуемые для него ресурсы, он готов выполняться, однако процессор занят выполнением другого процесса.

ОС должна иметь возможность выполнять определенные операции над процессами:

  • создание процесса

  • уничтожение

  • возобновление

  • изменение приоритета

  • блокирование

  • пробуждение

  • запуск

  1. Создание нового процесса состоит из нескольких подопераций:

    • присвоение имени

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

    • присвоение начального приоритета

    • формирование БУП

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

Новый процесс может породить дочерние процессы.

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

  2. Возобновление - операция подготовки процесса к повторному запуску с той точки, в которой он был приостановлен (БУП, область сохранения регистров).

  3. Изменение приоритета - это изменение значения приоритета в БУП.

Прерывания в ОС. Прерывание - это событие, при котором меняется нормальная последовательность команд, выполняемых ЦП. Если произошло прерывание, то:

  1. Управление передается ОС

  2. ОС запоминает состояние прерванного процесса

  3. ОС анализирует тип прерывания и передает управление соответствующей программе по обработке данного типа прерывания.

Состояние операционной среды отображается состоянием регистров и программного счетчика, режимом работы процессора, указателями на открытые файлы, информацией о незавершенных операциях ввода-вывода, кодами ошибок выполняемых данным процессом системных вызовов и т.д. Эта информация называется контекстом процесса.

Кроме этого, операционной системе для реализации планирования процессов требуется дополнительная информация: идентификатор процесса, состояние процесса, данные о степени привилегированности процесса, место нахождения кодового сегмента и другая информация. В некоторых ОС (например, в ОС UNIX) информацию такого рода, используемую ОС для планирования процессов, называют дескриптором процесса.

Команда ps

Предназначена для вывода информации о выполняемых процессах. Данная команда имеет много параметров, лишь наиболее часто используемые:

Параметр

Описание

-a

отобразить все процессы, связанных с терминалом (отображаются процессы всех пользователей)

-e

отобразить все процессы

-t список терминалов

отобразить процессы, связанные с терминалами

-u идентификаторы пользователей

отобразить процессы, связанные с данными идентификаторыми

-g идентификаторы групп

отобразить процессы, связанные с данными идентификаторыми групп

-x

отобразить все процессы, не связанные с терминалом

Программа top

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

Изменение приоритета процесса - команда nice

nice [-коэффициент понижения] команда [аргумент]

Команда nice выполняет указанную команду с пониженным приоритетом, коэффициент понижения указывается в диапазоне 1..19 (по умолчанию он равен 10). Суперпользователь может повышать приоритет команды, для этого нужно указать отрицательный коэффициент, например --10. Если указать коэффициент больше 19, то он будет рассматриваться как 19.

nohup - игнорирование сигналов прерывания

nohup команда [аргумент]

nohup выполняет запуск команды в режиме игнорирования сигналов. Не игнорируются только сигналы SIGHUP и SIGQUIT.

kill - принудительное завершение процесса

kill [-номер сигнала] PID

где PID - идентификатор процесса, который можно узнать с помощью команды ps.

Команды выполнения процессов в фоновом режиме - jobs, fg, bg

Команда jobs выводит список процессов, которые выполняются в фоновом режиме, fg - переводит процесс в нормальные режим ("на передний план" - foreground), а bg - в фоновый. Запустить программу в фоновом режиме можно с помощью конструкции <команда> &

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]