Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Гл.8 ОС буклет.doc
Скачиваний:
5
Добавлен:
11.11.2018
Размер:
286.21 Кб
Скачать

23

Системное программное обеспечение и операционные системы

КР ВУЗ ФПТ

Учебное пособие

Глава 8

Взаимодействие с пользователем

в операционных системах

2007

Рекомендуемая литература:

  1. В.Г.Олифер, н.А.Олифер. Сетевые операционные системы. Учебное пособие.-сПб.:бхв-Петербург, 2006.-536с.

  2. В.А.Шеховцов. Операційні системи. Підручник .-к.:Виканавча група внv. 2005. 576с.

  3. Столлингс в. Операционные системы. М.: Вильямс, 2001. -672с.

Раздел 8 Взаимодействие с пользователем в операционных системах

Средства терминального ввода-вывода

Командный и графический интерфейсы пользователя

Процессы без взаимодействия с пользователем

8.1. Терминальный ввод-вывод

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

8.1.1. Организация терминального ввода-вывода

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

Понятие терминала

Исторически терминалы (terminals) использовали для организации многопользовательской работы с мэйнфреймами или миникомпьютерами. Это были аппаратные устройства, которые состояли из клавиатуры и дисплея, которые подключали к компьютеру через интерфейс последовательного порта.

Особенное распространение такие терминалы получили в 70-80-ые годы: все разработаные в то время операционные системы включали средства их поддержки, было создано много прикладного программного обеспечения, рассчитанного на работу с ними.

Такие терминалы работают в текстовом режиме, за который обмен данными и их отображение на программном уровне происходят посимвольно. Для отображения используют экран размером (обычно 25 на 80) в символах, причем отображаться могут только стандартные символы (коды 127-255) в соответствии с таблицей ASCII-символов (Американский стандартный код для обмена информацией). За представление на экране расширенного набора символов с этими кодами, в частности символов кириллицы, отвечает символьная таблица, которая используется терминалом.

Есть специальные символы (управляющие коды) и последовательности символов, которые не отображаются, а руководят выведением на экран терминала. К управляющим кодам принадлежат такие символы, как возвращение каретки, перевод строки, Васksрасе и тому подобное. Управляющие последовательности называют также ESC-последовательностями (они начинаются с символа - ESC (код 27 ASCІІ)). Передавая такие последовательности терминала, можно перемещать курсор в произвольную позицию экрана, руководить яркостью отображения символов, для некоторых моделей терминалов - цветами и тому подобное.

Эмуляция терминала

В современных условиях аппаратные терминалы применяют редко. Однако интерфейс связи с терминалами (терминальный ввод-вывод) не потерял своего значения и до сих пор. Это объясняется тем, что текстовый режим работы очень удобен для решения многих задач (организации администрирования системы, отдаленного доступа к ней и тому подобное), а также широким выбором программного обеспечения, которое использует этот режим.

Для упрощения организации терминального ввода-вывода у современных ОС широко используют эмуляцию терминала. Программное обеспечение (эмулятор) принимает данные от соответствующего терминала и отображает на дисплее компьютера информацию согласно управляющих сигналов, определенных для терминала (для этого может быть выделено отдельное окно на графическом экране). В итоге программное обеспечение, рассчитанное на работу с терминалом, можно использовать с таким эмулятором без изменений. Одновременно в системе может быть запущено несколько эмуляторов терминала (например, каждый в своем окне), и пользователь имеет возможность переключаться между ними, выполняя ввод-вывод. Самая распространенная эмуляция терминала -vt100. Программное обеспечение, рассчитанное на использование этого терминала, с большой вероятностью будет работать с любым эмулятором.

Поэтому говоря о вводе с терминала и выводе на терминал, имеем ввиду, что обмен данными будет почти всегда происходить не с аппаратным терминалом, а с его эмулятором.

Отдаленые терминалы и консоль

Эмулятор терминала может быть запущен на отдаленном компьютере, при этом необходимо обеспечить обмен данными через сеть между ним и процессом. Примером решения такой задачи является протокол telnet, какой работает над ТCP/IP. Соответствующий сервер (telnet-сервер) запускают на машине, которая предоставляет отдаленный доступ. Он перехватывает данные, которые процесс передаёт на терминал, и пересылает их на отдаленную систему. Там работает эмулятор терминала (telnet-клиент), который интерпретирует полученные данные и, в свою очередь, отсылает серверу информацию, введенную на отдаленной машине. Сервер доставляет ее программе.

С другой стороны, если дисплей компьютера, на котором запущена ОС, работает в текстовом режиме, за отображение информации на нем тоже может отвечать эмулятор терминала. У ОС многопользователей с сетевым доступом (например, в UNIX) такой терминал часто называют консолью, в отличие от терминалов, которые используют для доступа к системе через сеть.

Терминальный ввод

Есть два подхода к организации терминального ввода.

  • В режиме без обработки, или неканоническом режиме (non-canonical mode), данные передаются программе без изменения (включая управляющие коды, такие, как перевод каретки или Ваcksрасе). За интерпретацию этих кодов отвечает программа. Такой режим сложнее, но более гибкий. Чаще всего его используют текстовые редакторы.

  • В случае использования режима с обработкой, или канонического режима (canonical mode), данные дополнительно будут обрабатываться перед тем как поступить в программу. Такая обработка происходит после нажатия пользователем клавиши Еnteг (ввод символа перевода строки), при этом управляющие коды будут интерпретированы и в соответствии с ними изменена вся введеная строка (например, если в ней трижды подряд случится Васksрасе, то эти три символа и еще три, введенные перед ними, из строки будут изъяты). Такой режим проще для программиста, в программу в данном случае попадает уже подготовленная символьная строка.

Примером программного обеспечения, которое реализует компромисс между этими режимами, может быть распространенная в UNIX-системах библиотека readline. Она предоставляет расширенные средства редактирования введенной строки, которые нуждаются в поддержке неканонического режима, но ее программный интерфейс аналогичен к вводу в каноническом режиме (в программу попадает подготовленная в результате редактирования строка).

Введенные с клавиатуры символы сохраняются в буфере, даже в неканоническом режиме (случаются ситуации, когда программа не может сразу принять данные от клавиатуры, и нужно сохранить их до того момента, когда появится такая возможность). В каноническом режиме данные из буфера передаются программе после ввода символа перевода строки, в неканоническом - как только программа будет готова их принять. Обычно для каждого терминала создается свой отдельный буфер ввода. В случае заполнения буфера может быть выделена дополнительная память.

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

Терминальный вывод

Для выведения на терминал тоже используют буферизацию. Буфер вывода заполняют в том случае, когда терминал не готов принять символ и по мере его готовности символы из буфера передают терминалу. Отображая данные, он интерпретирует управляющие сигналы, после чего показывает информацию, выделяет цветами отдельные участки, перемещает курсор и тому подобное.

Главная проблема заключается в том, что разные модификации терминалов воспринимают разные наборы управляющих сигналов. Для ее решения у современных ОС обычно создают базу данных терминалов, которая содержит список терминалов и сигналов, которые отвечают каждому из них. В UNIX-системах такую базу называют terminfo.

Логическая структура терминального ввода-вывода показана на рис. 8.1.

Рис. 8.1 Терминальный ввод-вывод

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]