UNIX-системы появились за десятилетие до создания корпорацией IBM первых массовых персональных компьютеров (модель IBM 5150 1981 года). ЭВМ 70-х годов, как правило, представляли собой громоздкое оборудование, размещенное в машинном зале, и много терминалов, расположенных на рабочих местах пользователей.
Изначально терминалы предназначались для передачи и отображения только текстовой информации, т. е. нажатие клавиши на клавиатуре приводило к формированию и передаче из терминала в ЭВМ кода символа, соответствующего нажатой клавише, а получение терминалом такого кода от ЭВМ приводило к отображению на экране монитора символа, соответствовавшего этому коду. В качестве такой информации выступали символы английского алфавита (строчные и прописные), знаки пунктуации и арабские цифры. По этой причине текстовые терминалы ещё называли алфавитно-цифровыми. Здесь необходимо добавить, что, помимо вышеперечисленных алфавитно-цифровых символов, необходимо было передавать и некоторые служебные символы, которые выполняли функции управления связью и форматирования текста. Всё это было использовано в терминалах в соответствии со стандартом ASCII (American Standard Code for Information Interchange — американский стандартный код для обмена информацией).
Терминал, который подключался непосредственно к процессорной стойке или плате, назывался консолью, и с него производилось управление ЭВМ. Консоль представляла собой автономное устройство, состоящее из устройства отображения, устройства ввода и процессорного блока. Первые терминалы были телетайпами — дистанционно управляемыми пишущими машинками, поэтому текстовая консоль до настоящего времени обозначается tty (teletype – печать на расстоянии).
Терминалы обозначаются:
· ttyS – последовательные com-порты;
· tty0-tty63– 64 виртуальных терминала, с которыми работают программы–оболочки;
· ttya0-ttyef – 256 псевдотерминалов (с псевдотерминалами работают сетевые службы sshd, telnetd и т. п.);
· vcN – виртуальные консоли.
Классической реализацией текстового интерфейса, восходящей к первой половине XX века, является алфавитно-цифровое устройство ввода-вывода, например комплект из клавиатуры и АЦПУ (телетайпа). Впоследствии вместо АЦПУ стали применять мониторы, снабжённые знакогенератором, что позволило быстро и удобно организовывать диалог с пользователем. Такие комплекты из монитора и клавиатуры (иногда с добавлением мыши) называются консолью компьютера.
Настоящие текстовые терминалы сейчас очень редки, и производить подобные устройства экономически невыгодно. Подключить такие устройства к ЭВМ можно с помощью последовательных аппаратных интерфейсов. Но нередко консоли эмулируются персональными компьютерами с использованием аппаратуры, каналов и протоколов вычислительных сетей. Так, сетевой узел, с которого получен доступ к серверу, управляемому ОС Linux, по протоколу telnet или ssh, представляется серверной командной оболочке удалённым терминалом.
Видеопамять современных персональных компьютеров позволяет вместить в себя много текстовых экранов. Благодаря этому персональный компьютер с ОС Linux, имеющий один монитор и одну клавиатуру, может иметь множество консолей. Переключение между ними производится комбинацией клавиш <Alt>-<Fn>, где номер функциональной клавиши соответствует номеру активного терминала. Переключаясь между виртуальными терминалами, один человек может зарегистрироваться и работать в системе от имени нескольких пользователей и эксплуатировать в одиночку операционную систему в многопользовательском режиме.
В ПК, управляемом ОС UNIX, роль терминала, а точнее – консоли, выполняют клавиатура, контроллер клавиатуры, терминальный драйвер, видеоадаптер и монитор. Таким образом, за ввод информации отвечают первые три, а за вывод — последние три перечисленные компоненты. Таким образом, в персональном компьютере два различных физических устройства, подключенные своими интерфейсами одно к видеконтроллеру, а второе – к контроллеру клавиатуры, объединяются в одно логическое устройство, и обращение к нему производится через один специальный файл и общий драйвер.
Для переключения в текстовый режим из графического X–Window, не завершая при этом его работу, требуется нажать <Ctrl>-<Alt>-<Fn>. Впрочем, в X–Window пользователь может запустить приложение, которое эмулирует работу в режиме терминала (например,xterm). Ввиду наличия полос прокрутки они более удобны для отображения строк, не вмещающихся в стандартный текстовый терминал.
Удобство переключения между терминалами состоит в возможности практически одновременно работать в системе от имени разных субъектов. Например, администратор может использовать одну консоль для системных команд, требующих полномочий root, в другой консоли работать с документами от имени обычного пользователя, а в третьей – от имени третьего пользователя запустить длящийся вычислительный процесс. Не имея возможности справиться с «зависшим» или некорректно работающим процессом, пользователь переходит в другую консоль, регистрируется в ней, выводит с помощью команды ps -ef список процессов, определяет по номеру терминала и имени неуправляемого процесса его идентификатор PID и посылает планировщику задач команду kill -9 PID на завершение процесса.
Выполнение предусмотренных в учебном пособии лабораторных работ также основано на многоконсольном режиме. Управляя компьютером от имени администратора и нескольких пользователей, обучаемый может наблюдать процессы разграничения доступа к защищаемой информации. Исследуя файловую систему и работая с шестнадцатеричными числами, пользователь может переключаться в другую консоль, где у него для преобразования чисел в десятичный формат и производства вычислений запущен калькулятор bc.
Для того чтобы предоставить пользователям возможность регистрироваться в системе, первичный процесс init при загрузке системы на многопользовательском уровне 3 запускает несколько (по умолчанию – шесть) процессов getty, управляющих виртуальными консолями. Программа getty открывает последовательное устройство (текстовый терминал, виртуальный терминал или модем) и ожидает подключения. Программа выводит приглашение, а затем, после ввода имени пользователя, передает управление программе login. Существует много разновидностей getty:mgetty, mingetty, ugetty, agetty, gettyps, fbgetty и т. д. Процессы, обслуживающие виртуальные терминалы, можно увидеть в выводных данных команды ps –ef .
Если пользователь не смог успешно зарегистрироваться, программа регистрации через определенный промежуток времени завершается, закрывая открытую терминальную линию, а процесс init порождает для этой линии следующий getty-процесс, открывающий терминал вместо прекратившего существование процесса. То есть всем определенным в /etc/inittab виртуальным консолям суждена «вечная» (до останова или перезагрузки системы) жизнь.
Для уменьшения числа виртуальных консолей достаточно удалить или закомментировать в файле /etc/inittab соответствующее число строк. А для увеличения – создать должное количество новых по образу и подобию существующих строк, изменяя только идентификатор и имя файла устройств: