Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
92_answers_os Пушкин.doc
Скачиваний:
25
Добавлен:
16.04.2019
Размер:
993.79 Кб
Скачать

25. Основные команды Unix для управления процессами

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

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

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

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

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

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

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

В ходе жизненного цикла каждый процесс переходит из одного состояния в другое в соответствии с алгоритмом планирования процессов, реализуемым в данной операционной системе. Типичный граф состояний процесса показан на рисунке 2.1.

В состоянии ВЫПОЛНЕНИЕ в однопроцессорной системе может находиться только один процесс, а в каждом из состояний ОЖИДАНИЕ и ГОТОВНОСТЬ - несколько процессов, эти процессы образуют очереди соответственно ожидающих и готовых процессов. Жизненный цикл процесса начинается с состояния ГОТОВНОСТЬ, когда процесс готов к выполнению и ждет своей очереди. При активизации процесс переходит в состояние ВЫПОЛНЕНИЕ и находится в нем до тех пор, пока либо он сам освободит процессор, перейдя в состояние ОЖИДАНИЯ какого-нибудь события, либо будет насильно "вытеснен" из процессора, например, вследствие исчерпания отведенного данному процессу кванта процессорного времени. В последнем случае процесс возвращается в состояние ГОТОВНОСТЬ. В это же состояние процесс переходит из состояния ОЖИДАНИЕ, после того, как ожидаемое событие произойдет.

КОМАНДЫ

ps (="print status(печать статуса)" или "process status(статус процессов)") выводит список процессов, выполняемых в текущий момент с указанием идентификаторов процессов(ID или PID). Используйте ps axu для просмотра списка всех процессов, выполняемых в системе (включая процессы, выполняемые другими пользователями и процессы, не контроллируемые с терминалов) с именами владельцев. Используйте "top" для удержания списка выполняемых процессов.

некая_команда & выполнение команды в фоновом режиме (символ "&" значит "выполнять в фоновом режиме"). Номер_задания выводится на экран, так что вы можете перенести команду на передний план(см. ниже), если захотите. Я использую "&" в основном для запуска программ с графическим интерфейсом из X-терминала.

jobs выводит список моих фоновых и остановленных заданий и показывает их номера.

fg номер_задания Переносит фоновое или остановленное задание на передний план.

bg номер_задания Помещает процесс в фоновый режим, так как если бы он был запущен с &. Это перезапустит установленный процесс. Текущий процесс переднего плана может быть приостановлен клавишами <Ctrl>z. Если у вас есть приостановленные процессы или процессы фонового режима, вам придется набрать exit дважды, чтобы выйти.

batch at>updatedb<Ctrl>d выполнить некоторую команду (обычно требующую больщого количества времени для завершения) когда загрузка системы уменьшится. Я могу покинуть систему, а процесс продолжит работу. Когда программа будет завершена, ее вывод будет послан мне по электронной почте. В приведенном выше примере "at>" представляет приглашение ввода команды, команда для выполнения updatedb, и <Ctrl><d> завершает ввод задания (Я могу ввести много комманд, разделенных <Enter>).

at 17:00 выполнить команду в заданное время. У вас будут спрашивать команды для выполнения, пока вы не нажмете <Ctrl>d. С этой командой связана atq (показывает очередь программ заданных командой at) и atrm (удаляет программы из этой очереди).

kill PID Завершить процесс. Для начала определите идентификатор процесса(PID), который собираетесь завершить, используя ps.

killall имя_программы Завершить программу (программы) с указанным именем. К примеру, killall pppd завершит вашу работу с удаленным соединением.

nohup имя_программы (=no hungup(не откладывать)). Выполняет программу имя_программы так, что она не прекращается, когда вы покидаете систему. Вывод перенаправляется в nohup.out в вашей домашней директории. Естественно, не стоит выполнять интерактивные программы используя nohup.

lpc (как "root") Проверка и управление принтерами. Введите "?" для получения списка используемых команд.

lpq Показывает содержимое очереди принтера. Под KDE (X-Windows), вы можете использовать "Printer Queue(Очередь принтера)" доступную из меню "K"-"Utilities(Утилиты)".

Приоритеты Unix

nice имя_программы выполнить имя_программы, изменив его приоритет. Поскольку в примере приоритет не указан, он будет увеличен на 10 пунктов (процесс будет выполняться медленнее) от значения по умолчанию (обычно 0). Чем меньше число ("приятности" другим пользователям системы), тем выше приоритет. Значение приоритета изменяется в границах от -20 до 19. Только "root" может использовать отрицательные значения. Используйте top для просмотра приоритетов выполняемых процессов.

renice -18 PID (как "root") Уменьшить приоритет процесса на 18. Нормальный пользователь может только увеличивать приоритет, причем относительно текущего значения (только замедлить процесс). Он может, кроме того, renice +10 -u peter передав пользователю peter освободившееся время процессора для его заданий с интенсивными вычислениями в обход других пользователей.

lsof Cписок открытых файлов. Если я "root", будут перчислены все открытые файлы. Я могу ограничиться файлами, открытыми с определенной консоли: lsof /dev/tty1 . Для списка файлов, открытых по сети (полезно для контроля безопасности), можно использовать lsof -i (как "root").

watch -n 60 моя_команда выполнять команду моя_команда раз за разом с 60-секундными интервалами (интервал по умолчанию - 2 секунды).