- •5. Процессы и потоки
- •Мультипрограммирование
- •Мультипрограммирование в системах пакетной обработки
- •Мультипрограммирование в системах разделения времени
- •Мультипрограммирование в системах реального времени
- •Мультипроцессорная обработка
- •Планирование процессов и потоков
- •Понятие «процесс» и «поток»
- •Создание процессов и потоков
- •Планирование и диспетчеризация потоков
- •Состояния потока
- •Вытесняющие и невытесняющие алгоритмы планирования
- •Алгоритмы планирования, основанные на квантовании
- •Алгоритмы планирования, основанные на приоритетах
- •Планирование с абсолютными и относительными приоритетами
- •Смешанные алгоритмы планирования
- •Планирование в системах реального времени
- •Моменты перепланировки
- •6. Мультипрограммирование на основе прерываний Назначение и типы прерываний
- •Механизм прерываний
- •Программные прерывания
- •Диспетчеризация и приоритезация прерываний в ос
- •Функционирование централизованного диспетчера прерываний на примере Windows nt
- •Системные вызовы
- •7. Процессы в ос unix Введение
- •Компоненты процесса
- •Атрибуты процесса Идентификатор процесса (pid)
- •Идентификатор родительского процесса (ррid)
- •Идентификатор пользователя (uid) и эффективный идентификатор пользователя (euid)
- •Идентификатор группы (gid) и эффективный идентификатор группы (egid)
- •Приоритет и значение nice
- •Жизненный цикл процесса
- •Сигналы
- •Дамп памяти
- •Список процессов: ps
- •Версия bsd
- •Версия System V
- •Установка приоритета процесса при запуске: nice
- •Изменение приоритета запущенного процесса: renice
- •Отправка сигнала: kill
- •Отправка сигналов командам: killall
- •Прекращение процесса
- •Временная приостановка процесса
- •Список заданий: jobs
- •Фоновый режим работы
- •Перевод задания на передний план: fg
- •Отправка задания на задний план: bg
- •Список литературы
- •ОГлавление
Временная приостановка процесса
Иногда требуется не выгружать программы, а приостановить их выполнение. Для этого служит блокировка процесса. Чтобы приостановить программу, ему нужно отправить сигнал STOP или ТSТР. Первый, например, можно получить командой kill. Нажатие клавиш Сtrl+Z обычно приводит к отправке сигнала TSTP непосредственно активному процессу (или как иногда еще принято говорить процессу переднего плана). Для остановки некоторых программ можно также использовать специальные команды, например,:suspend, в случае выполнения команды shе11.
После этого программа приостановится (блокируется), и контроль вернется тому командному интерпретатору, из которого была вызвана программа. Там можно задавать команды обычным способом.
Список заданий: jobs
Синтаксис: jobs
Команда jobs показывает статус всех работающих процессов, запущенных из текущего shell. В начале каждой строки стоит номер, идентифицирующий процесс (например, [1]). После этого указывается состояния процесса: для фонового процесса, или процесса заднего плана, - running, для приостановленных процессов - suspended. В конце строки стоит та команда shell, которая запустила программу.
Знак + обозначает задание, обрабатываемое в данный момент, знак – отмечает следующее подлежащее выполнению задание.
Фоновый режим работы
Для того чтобы выполнить команду в фоновом режиме, необходимо в конце ее поставить амперсанд. При этом система выдает на экран номер задания пользователя и системный номер процесса (PID). Номер задания, заключенный в квадратные скобки, – это номер, по которому пользователь может обращаться к заданию. В следующем примере в фоновый режим переводится команда печати файла mydata:
$ lpr mydata&
[1] 272
$
В фоновый режим можно переводить несколько команд. Каждая из них классифицируется как задание и получает имя и номер задания. Команда jоЬs позволяет получить список всех заданий, выполняемых в фоновом режиме. В приведенном ниже примере в фоновый режим переводятся две команды. Затем с помощью команды jоЬs выдается список этих заданий с указанием, какое из них выполняется в данный момент.
Первый процесс выводит на печать файл intro. Второй процесс копирует все файлы с расширением .С из текущего каталога в файл myprog.
$ lpr intro&
[1] 547
$ cat *.c >myprog
[2] 548
$ jobs
[1] + Running lpr intro
[2] – Running cat *.c>myprog
$
Несколько команд можно перевести в фоновый режим одновременно, ведя их в командной строке через амперсанд. В данном случае знак & разделяет команды в командной строке и задает их выполнение в фоновом режиме.
Перевод задания на передний план: fg
Синтаксис: fg [job]
Команда fg переводит блокированный или работающий в фоновом режиме процесс с номером job на передний план (т.е. делает его активным). В результате данной программе будут передаваться все вводимые с клавиатуры данные. Это состояние сохранится до тех пор, пока процесс не будет завершен или вновь приостановлен. Надо указать предназначенный для запуска процесс, поставив перед его номером значок %.
Например:
$ fg %2
Символ % может использоваться и в других командах, в частности – KILL. Символ %+ указывает на задание, помеченное +, а символ %- – на задание, помеченное знаком -.