Интернет магазин китайских планшетных компьютеров



Компьютеры - TTY-абстракция - Место TTY в модели процессов

22 января 2011


Оглавление:
1. TTY-абстракция
2. Сценарий использования
3. Место TTY в модели процессов
4. Управление заданиями и сессиями
5. TTY и система сигналов
6. Контроль потока и блокировка ввода-вывода
7. Настройка TTY



Unix processes states.PNG

Как известно, процесс в ОС Linux может находиться в одном из следующих состояний:

  • R — процесс исполняется либо ожидает своей очереди исполняться;
  • D — непрерываемый сон — процесс ожидает определённого события;
  • S — прерываемый сон — процесс ожидает определённого события либо сигнала;
  • T — остановка — процесс приостановлен, например, отладчиком;
  • Z — процесс уже завершился, но ещё не передал родительскому процессу свой код возврата.

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

$ ps l
F   UID   PID  PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND
0   500  5942  5928  15   0  12916  1460 wait   Ss   pts/14     0:00 -/bin/bash
0   500 12235  5942  15   0  21004  3572 wait   S+   pts/14     0:01 vim index.php
0   500 12580 12235  15   0   8080  1440 wait   S+   pts/14     0:00 /bin/bash -c  >/tmp/v727757/1 2>&1
0   500 12581 12580  15   0   4412   824 -      R+   pts/14     0:00 ps l

Как видно, несколько процессов совершили системный вызов wait русск., и теперь дожидаются, когда произойдёт смена состояния одного из их дочерних процессов. Сон может быть прерываемым и непрерываемым. Прерываемый сон означает, что хотя процесс находится в очереди ожидания, он может быть запущен при получении сигнала. Все процедуры операционной системы, связанные с ожиданием того или иного события, после возвращения функции schedule обязаны проверять, нет ли необработанного сигнала, и если есть — прерывать системный вызов.

Колонка STAT в выводе команды ps показывает состояние процесса, но она также может содержать несколько флагов:

  • s — данный процесс — ведущий процесс сессии;
  • + — данный процесс входит в группу процессов, с которыми в данный момент идёт работа пользователя.

Именно эти атрибуты и используются для управления заданиями.



Просмотров: 6755


<<< The UNIX-HATERS Handbook
Umask >>>