Оболочки, допускающие управление заданиями, предоставляют команды для просмотра списка всех заданий, отправки заданиями сигналов и перемещением заданий между режимом первого плана и фоновым режимом.
Псевдотерминалом называется пара подключенных виртуальных устройств, называемых ведущим (master) и ведомым (slave). Эта пара устройств предоставляет IPC-канал, позволяющий перемещать данные в обоих направлениях между двумя устройствами.
Важной особенностью псевдотерминала является то, что ведомое устройство предоставляет интерфейс, который ведет себя как терминал. Он позволяет подключить к ведомому устройству программу, ориентированную на работу с терминалом, а затем воспользоваться другой программой, подключенной к ведущему устройству, для управления первой программой. Вывод, записанный программой-драйвером, проходит обычную обработку ввода, выполняемую драйвером терминала (например, в исходном режиме символ возврата каретки преобразуется в новую строку), а затем передается в качестве ввода ориентированной на работу с терминалом программе, подключенной к ведомому устройству. Все, что эта программа записывает в ведомое устройство, передается (после выполнения всей обычной обработки, проводимой на терминале) в качестве ввода программе-драйверу. Иными словами, программа-драйвер выполняет функцию, которую на традиционном терминале выполняет сам пользователь.
Псевдотерминалы используются в различных приложениях, в первую очередь в реализациях окон терминала, предоставляемых при входе в систему X Window, и в приложениях, предоставляющих сервисы входа в сеть, например telnet и ssh.
Для процесса интерес представляют два типа времени.
• Реальное время, которое измеряется либо относительно некоторой стандартной точки (календарного времени), либо относительно какой-то фиксированной точки, обычно от начала жизненного цикла процесса (истекшее или физическое время). В системах UNIX календарное время измеряется в секундах, прошедших с полуночи 1 января 1970 года всемирного координированного времени — Universal Coordinated Time (обычно сокращаемого до UTC), и координируется на базовой точке часовых поясов, определяемой линией долготы, проходящей через Гринвич, Великобритания. Эта дата, близкая к дате появления системы UNIX, называется началом отсчета времени (Epoch).
• Время процесса, также называемое временем центрального процессора, которое является общим количеством времени центрального процессора, использованным процессом с момента старта. Время ЦП далее делится на системное время центрального процессора, то есть время, потраченное на выполнение кода в режиме ядра (например, на выполнение системных вызовов и работу других служб ядра от имени процесса), и пользовательское время центрального процессора, потраченное на выполнение кода в пользовательском режиме (например, на выполнение обычного программного кода).
Команда time выводит реальное время, системное и пользовательское время центрального процессора, потраченное на выполнение процессов в конвейере.
Проектирование и разработка клиент-серверных приложений будут подробно рассматриваться в нескольких местах этой книги.
Клиент-серверное приложение разбито на два составляющих процесса:
• клиент, который просит сервер о какой-либо услуге, отправив ему сообщение с запросом;
• сервер, который изучает запрос клиента, выполняет соответствующие действия, а затем отправляет назад клиенту сообщение с ответом.
Иногда клиент и сервер могут быть вовлечены в расширенный диалог из запросов и ответов.
Обычно клиентское приложение взаимодействует с пользователем, а серверное приложение предоставляет доступ к некоторому совместно используемому ресурсу. Чаще всего обменом данными с одним или несколькими серверными процессами занимается несколько клиентских процессов.
Клиент и сервер могут находиться на одном и том же ведущем компьютере или на отдельных хостах, соединенных по сети. Для взаимного обмена сообщениями клиент и сервер используют IPC-механизмы, рассмотренные в разделе 2.10.