Скачиваний:
21
Добавлен:
09.05.2014
Размер:
354.82 Кб
Скачать

10.3.5 Назначение операторского терминала

Операторский терминал - это терминал, с которого пользователь регистри-

руется в системе, он управляет процессами, запущенными пользователем с тер-

минала. Когда процесс открывает терминал, драйвер терминала открывает стро-

ковый интерфейс. Если процесс возглавляет группу процессов как результат вы-

полнения системной функции setpgrp и если процесс не связан с одним из опе-

раторских терминалов, строковый интерфейс делает открываемый терминал опера-

торским. Он сохраняет старший и младший номера устройства для файла термина-

ла в адресном пространстве, выделенном процессу, а номер группы процессов,

связанной с открываемым процессом, в структуре данных терминального драйве-

ра. Открываемый процесс становится управляющим процессом, обычно входным

(начальным) командным процессором, что мы увидим далее.

Операторский терминал играет важную роль в обработке сигналов. Когда

пользователь нажимает клавиши "delete" (удаления), "break" (прерывания),

стирания или выхода, программа обработки прерываний загружает строковый ин-

терфейс, который посылает соответствующий сигнал всем процессам в группе.

318

Подобно этому, когда пользователь "зависает", программа обработки прерываний

от терминала получает информацию о "зависании" от аппаратуры, и строковый

интерфейс посылает соответствующий сигнал всем процессам в группе. Таким об-

разом, все процессы, запущенные с конкретного терминала, получают сигнал о

"зависании"; реакцией по умолчанию для большинства процессов будет выход из

программы по получении сигнала; это похоже на то, как при завершении работы

пользователя с терминалом из системы удаляются побочные процессы. После по-

сылки сигнала о "зависании" программа обработки прерываний от терминала раз-

ъединяет терминал с группой процессов, чтобы процессы из этой группы не мог-

ли больше получать сигналы, возникающие на терминале.

10.3.6 Драйвер косвенного терминала

Зачастую процессам необходимо прочитать ил записать данные непосредст-

венно на операторский терминал, хотя стандартный ввод и вывод могут быть пе-

реназначены в другие файлы. Например, shell может посылать срочные сообщения

непосредственно на терминал, несмотря на то, что его стандартный файл вывода

и стандартный файл ошибок, возможно, переназначены в другое место. В версиях

системы UNIX поддерживается "косвенный" доступ к терминалу через файл уст-

ройства "/dev/tty", в котором для каждого процесса определен управляющий

(операторский) терминал. Пользователи, прошедшие регистрацию на отдельных

терминалах, могут обращаться к файлу "/dev/tty", но они получат доступ к

разным терминалам.

Существует два основных способа поиска ядром операторского терминала по

имени файла "/dev/tty". Во-первых, ядро может специально указать номер уст-

ройства для файла косвенного терминала с отдельной точкой входа в таблицу

ключей устройств посимвольного ввода-вывода. При запуске косвенного термина-

ла драйвер этого терминала получает старший и младший номера операторского

терминала из адресного пространства, выделенного процессу, и запускает драй-

вер реального терминала, используя данные таблицы ключей устройств посим-

вольного ввода-вывода. Второй способ, обычно используемый для поиска опера-

торского терминала по имени "/dev/tty", связан с проверкой соответствия

старшего номера устройства номеру косвенного терминала перед вызовом проце-

дуры open, определяемой типом данного драйвера. В случае совпадения номеров

освобождается индекс файла "/dev/tty", выделяется индекс операторскому тер-

миналу, точка входа в таблицу файлов переустанавливается так, чтобы указы-

вать на индекс операторского терминала, и вызывается процедура open, принад-

лежащая терминальному драйверу. Дескриптор файла, возвращенный после откры-

тия файла "/dev/tty", указывает непосредственно на операторский терминал и

его драйвер.

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