Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС.docx
Скачиваний:
2
Добавлен:
22.09.2019
Размер:
471.16 Кб
Скачать

10. Понятие процесса. Управление процессами в операционной системе unix.

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

Управление процессами входит в основные функции ядра ОС (создание и уничтожение процессов, переключение процессов). Процесс является базовым понятием в ОС UNIX - в ней реализован принцип разделения времени. Понятие процесса неотделимо от понятия ресурса.

Ресурс - это любой объект, который может быть распределён и использован процессом в соответствии с алгоритмом этого процесса.

К ресурсам относятся: аппаратура; структуры данных и процедуры; сообщения.

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

  • CR-ресурсы. (потребляемые ресурсы; в систему не возвращаются). Пример: изменяемые структуры данных; все сообщения и сигналы.

По отношению к потребляемым ресурсам процесс может выступать:

к ак производитель; как потребитель (выборка сигнала (производитель) → приём сигнала (процесс-потребитель)).

Управление процессами:

Управление процессами осуществляется в соответствии с диаграммой состояния процесса, которая представляется графом:

Любое событие (ожидание) - это ожидание ресурса.

Приостановка - внешнее вмешательство.

При управлении процессами возникает 3 проблемы:

  • синхронизация

  • производитель – потребитель

  • взаимные блокировки

Управление процессами в операционной системе UNIX:

Процесс строится для каждой выполняемой прикладной или системной программы, является единицей вычислительной работы и потребления ресурсов, выполняется в своем собственном виртуальном адресном пространстве.

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

  1. П роцесс выполняется в режиме задачи. При этом процессором выполняются прикладные инструкции данного процесса.

  2. Процесс выполняется в режиме ядра. При этом процессором выполняются системные инструкции ядра операционной системы от имени процесса.

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

  4. Процесс находится в состоянии сна, ожидая недоступного в данный момент ресурса, например завершения операции ввода/вывода.

  5. Процесс возвращается из режима ядра в режим задачи, но ядро прерывает его и производит переключение контекста для запуска более высокоприоритетного процесса.

  6. Процесс только что создан родительским вызовом fork() и находится в переходном состоянии: он существует, но не готов к запуску и не находится в состоянии сна.

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

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

Различают процессы.

  1. Оперативные процессы – запускаются последовательно и, как правило, реализуют последовательность выполняемых с данного терминала команд. Время ЦП делится между всеми активными процессами в соответствии с их приоритетами: каждому процессу выделяется определённый квант времени и частота и частота выделения этих квантов соответствует приоритету.

  2. Фоновые процессы – используются для выполнения тех программ, которые не должны быть жестко связаны с терминалом данного пользователя (вычислительные задачи и т.д.). Для запуска процесса в фоновом режиме в конце соответствующей командной строки указывается “&”.

Команды управления процессами в UNIX:

ps - команда для вывода информации об имеющихся процессах

$ps

Pid tty time command

1324 ttyp 2 0:00 sh

1387 ttyp 2 0:00 ps

$psl (список пользовательских процессов с подробной информацией)

F

S

UID

PID

PPID

C

PRI

NI

ADDR

SZ

WCHAN

TTY

TIME

CMD

000

S

500

709

1

0

63

0

-

280

tcp_re

tty3

00:00:00

UnixProcess

040

S

500

744

709

0

63

0

-

280

tcp_re

tty3

00:00:00

UnixProcess

kill < имя сигнала> <pid> - посылает сигнал(ы) процессу с указанным(и) номерам(и). Выполняющий команду kill должен быть владельцем процесса или суперпользователем. Kill не уничтожает процесс, а посылает процессу сигнал по которому он должен завершиться.

(если в активном режиме, то ctrl+c ctrl+\; ctrl+z – приостановка).

Для выдачи информации о выполняемых в данном сеансе заданиях служит команда jobs (выводится список).

fg [%номер] – переводит задание с указанным номером номером в оперативный режим

bg [%номер] – переводит задание с указанным номером номером в фоновый режим

В некоторых случаях требуется продолжать фоновый процесс после выхода пользователя из системы. Для этих целей в командной строке выполняется префиксная команда:

nohup <команда> &

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

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

nice [-N] <командная строка> где N – целое число от 1 до 19.

По умолчанию базовый приоритет процессов равен 10, а увеличить приоритет может только root. Процесс с большим числом приоритета имеет меньший относительный приоритет в системе. Пользователь может только понижать приоритет своих процессов, тем самым отдавая относительное предпочтение другим своим процессам. Приоритеты процессов могут быть определены с помощью команды: ps –l. renice – поменять приоритет уже запущенного процесса

2