- •5. Процессы и потоки
- •Мультипрограммирование
- •Мультипрограммирование в системах пакетной обработки
- •Мультипрограммирование в системах разделения времени
- •Мультипрограммирование в системах реального времени
- •Мультипроцессорная обработка
- •Планирование процессов и потоков
- •Понятие «процесс» и «поток»
- •Создание процессов и потоков
- •Планирование и диспетчеризация потоков
- •Состояния потока
- •Вытесняющие и невытесняющие алгоритмы планирования
- •Алгоритмы планирования, основанные на квантовании
- •Алгоритмы планирования, основанные на приоритетах
- •Планирование с абсолютными и относительными приоритетами
- •Смешанные алгоритмы планирования
- •Планирование в системах реального времени
- •Моменты перепланировки
- •6. Мультипрограммирование на основе прерываний Назначение и типы прерываний
- •Механизм прерываний
- •Программные прерывания
- •Диспетчеризация и приоритезация прерываний в ос
- •Функционирование централизованного диспетчера прерываний на примере Windows nt
- •Системные вызовы
- •7. Процессы в ос unix Введение
- •Компоненты процесса
- •Атрибуты процесса Идентификатор процесса (pid)
- •Идентификатор родительского процесса (ррid)
- •Идентификатор пользователя (uid) и эффективный идентификатор пользователя (euid)
- •Идентификатор группы (gid) и эффективный идентификатор группы (egid)
- •Приоритет и значение nice
- •Жизненный цикл процесса
- •Сигналы
- •Дамп памяти
- •Список процессов: ps
- •Версия bsd
- •Версия System V
- •Установка приоритета процесса при запуске: nice
- •Изменение приоритета запущенного процесса: renice
- •Отправка сигнала: kill
- •Отправка сигналов командам: killall
- •Прекращение процесса
- •Временная приостановка процесса
- •Список заданий: jobs
- •Фоновый режим работы
- •Перевод задания на передний план: fg
- •Отправка задания на задний план: bg
- •Список литературы
- •ОГлавление
Дамп памяти
Из табл. 7.2 видно, что определенные сигналы генерируются в условиях, являющихся результатом работы программы. Как правило, процесс, выполняющий ошибочную программу, закрывается. Естественно, пользователю интересно, в чем заключается проблема. Для этого предусмотрено создание дампа памяти (dump – «сброс, свалка»), показывающего состояние памяти, принадлежащей процессу в момент получения сигнала (QUIT, ILL, SEGV). Его копия хранится в файле с именем соге.
Предлагаю несколько мрачное, но точное сравнение: файл соге подобен свежему трупу скоропостижно умершего процесса, где программист может сыграть роль патологоанатома и произвести вскрытие. Конечно же, в таких ситуациях программистский жаргон нельзя назвать чопорным.
Как правило, такие дампы памяти скорее обременительны, поскольку занимают место на жестком диске и не содержат полезной информации для обычного пользователя. Поэтому Linux, как правило, не создает файлов соге.
Список процессов: ps
Синтаксис: ps [-] [luaxr]
ps [-] [ef]
Как и всякая важная команда, ps имеет, по крайней мере, 2 версии. Одна соответствует версии BSD UNIX, другая - System V UNIX. Разумеется, оба варианта обладают несовместимыми параметрами.
Версия bsd
Синтаксис: ps [-] [luax]
В Linux рs соответствует стандарту ВSD. Вся информация о пользовательских процессах, которые вызывают рs, представлена в виде таблицы.
Параметрам команды может предшествовать или не предшествовать знак -. В версии Debian опции, разработанные для систем UNIX снабжаются знаком -, а опции, используемые версиями BSD – не имееют дефиса перед опциями. Приведем примеры употребления опций для версии Debian:
-
-A - показывает процессы всех пользователей, а не только того, который вызвал рs;
-
-1 - расширенный формат вывода с дополнительной информацией;
-
U - формат, ориентированный на вывод сведений о пользователе. Предоставляется информация о ресурсах, затребованных каждым пользователем;
-
-х - показывать также процессы без управляющего терминала;
-
r - показать только выполняющиеся процессы.
Столбцы таблицы имеют следующее значение:
PID |
(Process ID). ID процесса, или номер процесса – внутренний идентификатор текущей программы. |
TTY |
Управляюший терминал процесса. Выдаются только последние буквы имени файла устройства без начальной части (dev/tty). |
STAT |
Статус процесса R процесс в состоянии выполнения; S процесс в состоянии ожидания; D непрерываемое ожидание; T выполнение процесса остановлено сигналом; Z зомби; W процесс временно полностью выгружен из памяти; N процесс сниженного приоритета. |
TIME |
Потребовавшееся на данный момент время расчета. Не учитываются периоды ожидания ввода данных и время, затребованное планировщиком для работы других процессов. |
COMMAND |
Команда, запустившая процесс. Длинные имена даются в сокращенном виде.
|
USER |
Имя пользователя, от которого выполняется процесс. |
%CPU |
CPU означает центральный процессор. Значение в этом столбце показывает, какая доля имеющихся расчетных возможностей была использована для решения текущей задачи в последнее время. |
%MEM |
Доля задействованной на данный момент оперативной памяти (RAM). |
SIZE |
Размер занятой памяти. (Linux использует измерение в килобайтах). |
RSS |
Residental Size -занятая оперативная память (на данный момент). Выгруженные страницы не учитываются; |
START |
Точное время запуска процесса |
PPID |
ID родительского процесса. |
PRI |
Приоритет. Данное значение возрастает в период, когда процесс действительно выполняется, и понижается, когда он спит. При выборе процесса для перевода из состоянцк ожидания в активное планировщик предпочитает программы с меньшим значением приоритета. |
NI |
Nice Value (значение «уступчивости»). Чем больше это число, тем медленнее падает приоритет во время ожидания. Если запущено несколько процессов одновременно, предпочтение отдается тем из них, у которых это значение меньше. |
WCHAN |
Канал ожидания. Имя функции ввода/вывода, в которой «спит» процесс. Представляет интерес только для тех, кто что-либо понимает в ядре. |
Пример вывода команды: ps U:
User PID %CPU %MEM VSZ RSS TTY STAT START TIME COMAND
root 199 0.0 2.0 2120 1300 tty1 S 18:06 0:00 -bash
root 200 0.0 2.0 2108 1280 tty2 S 18:06 0:00 -bash
root 201 0.0 0.7 1004 444 tty3 S 18:06 0:00 /sbin/getty 38400 tty3
root 202 0.0 0.7 1004 444 tty4 S 18:06 0:00 /sbin/getty 38400 tty4
root 203 0.0 0.7 1004 444 tty5 S 18:06 0:00 /sbin/getty 38400 tty5
root 204 0.0 0.7 1004 444 tty6 S 18:06 0:00 /sbin/getty 38400 tty6
root 249 0.0 1.5 2608 968 tty1 R 18:15 0:00 ps U
root 250 0.0 2.0 2120 1300 tty1 R 18:15 0:00 -bash