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

4.5. Рассмотрим управление приоритетами процессов

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

nice. Эта команда запускает процесс с отличным от принятого в система значения атрибута «число nice» (он участвует в вычислении реального приоритета процесса и по умолчанию имеет начальное значение, равное 0). Интервал его значений установлен в пределах от –20 (наивысший приоритет) до +19 (самый низший приоритет).

renice. В отличие от предыдущей эта утилита действует на уже запущенные процессы. Она имеет такой формат:

renice –number PID

Запустим на первом виртуальном терминале текстовый редактор такой командой

vi &

Для того чтобы посмотреть приоритеты процессов выполните

ps -o fname,pid,ni,priority –sort ni

с таким результатом

COMMAND PID NI PRI

bash 5053 0 15

vi 5284 0 15

ps 5298 0 16

[1] Stopped vi

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

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

renice –5 5284

а после такой команды

ps -o fname,pid,ni,priority –sort ni

увидим

COMMAND PID NI PRI

vi 5284 -5 15

bash 5053 0 16

ps 5298 0 16

Теперь запустим еще один экземпляр программы, но для этого используем команду, упомянутую ранее утилиту

nice vi &

Эта команда по умолчанию присвоит запускаемой программе значение атрибута число ni равное 10. После ее выполнения получим такое распределение приоритетов

ps -o fname,pid,ni,priority –sort ni

COMMAND PID NI PRI

vi 5284 -5 15

bash 5053 0 16

ps 5308 0 16

vi 5304 10 30

[2] Stopped vi

Теперь уменьшим приоритет второго из запущенных нами процессов (с pid 5304) такой командой

renice –10 5304

5304: old priority 10, new priority -10

После нее приоритеты распределятся так:

ps -o fname,pid,ni,priority –sort ni

COMMAND PID NI PRI

vi 5304 -10 10

vi 5284 -5 15

bash 5053 0 15

ps 5308 0 15

Таким образом, стало ясно, что в системе Linux с приоритетами процессов связаны два атрибута, один из которых вычисляет система, а другой можно изменять пользователям. Заметим, что главный администратор системы может изменять приоритеты всех процессов в любую сторону, а другие пользователи – только своих процессов и только в сторону уменьшения приоритета.

Задание 37.

Выполните такую же последовательность действий, которые произведены в разделе 4.5, но в сеансе пользователя asplinux.

4.6. Изучим простые возможности обмена информацией между пользователями

UNIX создавалась как многопользовательская операционная система, работающая на нескольких компьютерах. С самых ее первых версий создавались средства общения пользователей. Ярким примером является утилита mail, появившаяся в самых первых версиях UNIX.

Сейчас познакомимся с другой простой утилитой обмена информации двух пользователей. Для выполнения описанных ниже действий откроем на двух виртуальных терминалах сеансы двух пользователей root и asplinux. Перейдем на второй виртуальный терминал, где открыт сеанс asplinux. Задавая

write root

будем посылать набираемый текст на первый виртуальный терминал, где зарегистрирован пользователь с именем root. Для того чтобы увидеть это, переключимся на сеанс последнего. Завершаем команду за asplinux, набирая <Ctrl+D>.

Вновь переключимся на виртуальный терминал пользователя root. Здесь даем команду

write asplinux tty1

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

После этого все, что будет набираться на клавиатуре root, будет дублироваться на экране asplinux. Возвратиться к строке ввода команд пользователя root можно набрав <Ctrl+C>. Но если после этого продолжить набирать текст на терминале asplinux, на экране root символы появятся вновь.

Соседние файлы в папке Операционные системы