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



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

22 января 2011


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



Пусть пользователь нажал ^Z при работе с программой, или запустил программу с префиксом &, чтобы она заработала в фоновом режиме. При этом включается механизм управления заданиями.

«Задание» — это, практически, синоним «группы процессов». Пользователь может манипулировать заданиями внутри данной сессии при помощи встроенных команд оболочки, таких как jobs, fg или bg. В свою очередь, каждая сессия управляется ведущим процессом сессии — оболочкой, которая активно общается с ядром при помощи сложного протокола, состоящего из системных вызовов и сигналов.

Рассмотрим взаимоотношения процессов, заданий и сессий на примере:

Эти команды, набранные в оболочке…
…соответствуют примерно таким процессам

Смысл в том, что каждый конвейер — это задание, потому что все процессы в конвейере должны управляться одновременно. Именно поэтому команда kill позволяет посылать сигналы сразу целым группам процессов.

Команда fork по умолчанию помещает свежесозданный процесс в ту же группу процессов, в которой находится его родитель, поэтому, например, нажатие ^C на клавиатуре повлияет и на дочерний процесс, и на родителя. С другой стороны, оболочка, являясь ведущим процессом сессии, автоматически создаёт новую группу процессов каждый раз, когда сталкивается с необходимостью запустить очередной конвейер. Задача драйвера TTY — отслеживать идентификатор активной группы процессов, а также размер подключённого терминала.

Хотя несколько процессов могут одновременно иметь один и тот же псевдотерминал в качестве своего стандартного ввода и/или стандартного вывода, только активное задание будет получать на вход текст, вводимый с TTY, и будет иметь право само выводить информацию на него. Если процесс, не являющийся активным, хочет вывести что-то на экран, ядро приостанавливает его при помощи сигнала.



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


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