Операційна система UNIX

операційна

Книга присвячена сімейству операційних систем UNIX та містить інформацію про принципи організації, ідеології та архітектури, що поєднують різні версії цієї операційної системи.

У книзі розглядаються: архітектура ядра UNIX (підсистеми вводу/виводу, управління пам'яттю та процесами, а також файлова підсистема), програмний інтерфейс UNIX (системні виклики та основні бібліотечні функції), середовище користувача (командний інтерпретатор shell, основні команди та утиліти) та сеті підтримка UNIX (протоколів сімейства TCP/IP, архітектура мережевої підсистеми, програмні інтерфейси сокетів і TLI).

Для широкого кола користувачів

Операційна система UNIX

Псевдотермінали

Псевдотермінали є спеціальним пристроєм, що емулює стандартну термінальну лінію. Псевдотермінали нагадують канали як засіб міжпроцесної взаємодії, що дозволяє двом процесам обмінюватися даними. Однак, на відміну від каналів, псевдотермінали забезпечують додаткову функціональність, специфічну для термінальних ліній. Схематично архітектура псевдотерміналу представлена ​​на рис. 5.11.

система

Мал. 5.11. Взаємодія процесів за допомогою псевдотерміналу

Яскравим прикладом використання псевдотерміналів є реєстрація в системі мережі з використанням серверів віддаленого доступуrlogin(1)абоtelnet(1), або використання графічного емулятора терміналу xterm в системі X Window System. Коли користувач реєструється в системі подібним чином, псевдотермінал емулює звичайну термінальну лінію, тому користувач не бачить різницю між віддаленою та локальною роботою за допомогою терміналу, підключеного по послідовній лінії. Наприклад, користувач може встановитирізні режими обробки та використовувати відповідні комбінації клавіш для генерації сигналів, як він це робить у разі звичайного терміналу.

Псевдотермінал по суті є двома окремих драйвера. Один з них виглядає як звичайний термінальний драйвер і носить назву підлеглого пристрою (slave). Другий драйвер називаєтьсяосновним(master).

Оскільки підлеглий пристрій має всі характеристики терміналу, процес може зв'язати свої стандартні потоки введення, виведення та виведення помилок із цим пристроєм. Однак на відміну від звичайного терміналу, у разі якого запис процесу призводить до відображення даних на фізичному пристрої, а введення даних користувачем з клавіатури може бути отримане читанням термінальної лінії, всі дані, записані в підпорядкований пристрій, передаються основному і навпаки майже так, як працює канал. Однак модуль дисципліни лінії дозволяє забезпечити додаткові можливості цього каналу, які можуть знадобитися деяким програмам, наприклад, командному інтерпретатору shell.

Як ілюстрацію використання псевдотерміналу, розглянемо схему роботи в режимі командного рядка користувача, що знаходиться на деякій віддаленій системі в мережі.

Користувач віддаленої системи запускає програму віддаленого доступуrlogin(1), яка формує запит і передає його по мережі на потрібний комп'ютер. Там цей запит доставляється серверу віддаленого доступуrlogind(1), який (після належної перевірки) запускає програмуlogin(1). При цьому стандартні потоки введення, виведення та виведення помилок програмиlogin(1)зв'язуються не з термінальним файлом, як у разі входу в систему за допомогою сервераgetty(1M), а з підлеглим влаштуванням псевдотерміналу.Основний пристрій виявляється пов'язаним із серверомrlogind(1). Програмаlogin(1)запитує ім'я користувача та його пароль точно так, як вона це робить при вході черезgetty(1M). Більш того,login(1)і "не уявляє", що насправді працює з емулятором терміналу, а не з традиційною термінальною лінією. Весь введення login(1) надходить серверуrlogind(1)і потім передається по мережі клієнтської частиниrlogin(1)на віддаленому комп'ютері. Далі робота нічим не відрізняється від роботи локального користувача, підключеного до системи за допомогою звичайного терміналу чи консолі. Якщо ім'я користувача та пароль були введені правильно, програмаlogin(1)запустить необхідний командний інтерпретатор (login shell), який також не помітить заміни. Дійсно, за всіма характеристиками термінал буде відмінним від традиційної послідовної лінії, включаючи різні установки та генерацію сигналів при натисканні певних клавіш клавіатури. Слід, щоправда, зазначити, що оскільки псевдотермінал не є "повноцінним" термінальним пристроєм, частина установок для нього не мають сенсу (наприклад, швидкість передачі, парність тощо) і просто ігноруються.

На рис. 5.12 наведено схему роботи віддаленого користувача в системі з використанням псевдотерміналу.

система

Мал. 5.12. Архітектура віддаленого доступу з використанням псевдотерміналу