Читаем Внутреннее устройство Linux полностью

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


14.1.4. Приложения

На вершине рабочего стола находятся приложения, например браузеры и окно терминала. X-приложения могут быть как довольно «грубыми» (вроде древней команды xclock), так и достаточно сложными (например, браузер Chrome и пакет LibreOffice). Эти приложения, как правило, работают автономно, но они часто используют межпроцессное взаимодействие, чтобы быть в курсе происходящих событий. Например, какое-либо приложение может проявить интерес к тому, что вы подключили новое устройство хранения или получили новое электронное письмо или мгновенное сообщение. Такое взаимодействие обычно происходит по шине D-Bus, описанной в разделе 14.5.


14.2. Подробнее о системе X Window

Система X Window (http://www.x.org/) исторически сложилась очень большой, с основным дистрибутивом, включающим X-сервер, библиотеки поддержки клиентов и самих клиентов. Вследствие появления таких сред рабочего стола, как GNOME и KDE, роль пакета X со временем изменилась, и теперь акцент сделан на основном сервере, который управляет рендерингом и устройствами ввода, а также на упрощении библиотеки клиентов.

X-сервер легко обнаружить в системе. Он называется X. Поищите его в списке процессов; обычно вы сможете обнаружить, что он запущен с некоторым количеством параметров, например, так:

/usr/bin/X:0 — auth /var/run/lightdm/root/:0 — nolisten tcp vt7 — novtswitch

Параметр:0, показанный здесь, называется дисплеем. Это идентификатор, представляющий один или несколько мониторов, к которым вы получаете доступ с помощью клавиатуры и/или мыши. Обычно дисплей соответствует единственному монитору, который подключен к вашему компьютеру, но вы можете поместить несколько мониторов за одним и тем же дисплеем. При использовании X-сеанса для переменной окружения DISPLAY установлено значение идентификатора дисплея.


примечание

Дисплеи можно далее подразделить на экраны, такие как:0.0 и:0.1, но это используется все реже, поскольку такие расширения, как RandR, способны объединить несколько мониторов в один общий виртуальный экран.

В Linux X-сервер запускается в виртуальном терминале. В данном примере аргумент vt7 говорит нам о том, что сервер был запущен в терминале /dev/tty7 (обычно сервер запускается в первом доступном виртуальном терминале). Можно запустить более одного X-сервера в данный момент времени, предоставив каждому из них отдельный виртуальный терминал, но в таком случае для каждого сервера потребуется уникальный идентификатор дисплея. Между серверами можно переключаться с помощью сочетания клавиш Ctrl+Alt+Fn или команды chvt.


14.2.1. Менеджеры дисплея

Обычно X-сервер не запускают с помощью командной строки, поскольку запуск этого сервера не определяет никаких клиентов, предназначенных для работы с ним. Если вы запустите сервер сам по себе, вы просто получите пустой экран. Вместо этого самым распространенным способом запуска X-сервера является использование менеджера дисплея — утилиты, которая запускает сервер и помещает на экран окно входа в систему. Когда вы выполните вход, менеджер дисплея запускает ряд клиентов, таких как менеджер окон и менеджер файлов, чтобы вы смогли начать использование компьютера.

Существует много разных менеджеров дисплея, например gdm (для среды GNOME) и kdm (для среды KDE). Аргумент lightdm, присутствующий в приведенном выше вызове X-сервера, является кросс-платформенным менеджером дисплея, предназначенным для запуска в сеансах GNOME или KDE.

Чтобы запустить X-сеанс из виртуальной консоли, а не с помощью менеджера дисплея, можно выполнить команду startx или xinit. Однако сессия, которую вы в итоге получите, будет, вероятно, очень простой и совершенно отличающейся от той, которая создается менеджером дисплея, поскольку их функции и стартовые файлы различны.


14.2.2. Прозрачность сети

Одним из свойств X-сервера является прозрачность сети. Поскольку клиенты общаются с сервером с помощью протокола, то возникает возможность непосредственного запуска клиентов по сети для сервера, расположенного на другом компьютере, при этом X-сервер прослушивает TCP-соединения порта 6000. Клиенты, подключающиеся к этому серверу, могут пройти аутентификацию, а затем отправлять окна на сервер.

Перейти на страницу:

Похожие книги

Programming with POSIX® Threads
Programming with POSIX® Threads

With this practical book, you will attain a solid understanding of threads and will discover how to put this powerful mode of programming to work in real-world applications. The primary advantage of threaded programming is that it enables your applications to accomplish more than one task at the same time by using the number-crunching power of multiprocessor parallelism and by automatically exploiting I/O concurrency in your code, even on a single processor machine. The result: applications that are faster, more responsive to users, and often easier to maintain. Threaded programming is particularly well suited to network programming where it helps alleviate the bottleneck of slow network I/O. This book offers an in-depth description of the IEEE operating system interface standard, POSIX (Portable Operating System Interface) threads, commonly called Pthreads. Written for experienced C programmers, but assuming no previous knowledge of threads, the book explains basic concepts such as asynchronous programming, the lifecycle of a thread, and synchronization. You then move to more advanced topics such as attributes objects, thread-specific data, and realtime scheduling. An entire chapter is devoted to "real code," with a look at barriers, read/write locks, the work queue manager, and how to utilize existing libraries. In addition, the book tackles one of the thorniest problems faced by thread programmers-debugging-with valuable suggestions on how to avoid code errors and performance problems from the outset. Numerous annotated examples are used to illustrate real-world concepts. A Pthreads mini-reference and a look at future standardization are also included.

David Butenhof

Программирование, программы, базы данных
C++
C++

С++ – это универсальный язык программирования, задуманный так, чтобы сделать программирование более приятным для серьезного программиста. За исключением второстепенных деталей С++ является надмножеством языка программирования C. Помимо возможностей, которые дает C, С++ предоставляет гибкие и эффективные средства определения новых типов. Используя определения новых типов, точно отвечающих концепциям приложения, программист может разделять разрабатываемую программу на легко поддающиеся контролю части. Такой метод построения программ часто называют абстракцией данных. Информация о типах содержится в некоторых объектах типов, определенных пользователем. Такие объекты просты и надежны в использовании в тех ситуациях, когда их тип нельзя установить на стадии компиляции. Программирование с применением таких объектов часто называют объектно-ориентированным. При правильном использовании этот метод дает более короткие, проще понимаемые и легче контролируемые программы. Ключевым понятием С++ является класс. Класс – это тип, определяемый пользователем. Классы обеспечивают сокрытие данных, гарантированную инициализацию данных, неявное преобразование типов для типов, определенных пользователем, динамическое задание типа, контролируемое пользователем управление памятью и механизмы перегрузки операций. С++ предоставляет гораздо лучшие, чем в C, средства выражения модульности программы и проверки типов. В языке есть также усовершенствования, не связанные непосредственно с классами, включающие в себя символические константы, inline-подстановку функций, параметры функции по умолчанию, перегруженные имена функций, операции управления свободной памятью и ссылочный тип. В С++ сохранены возможности языка C по работе с основными объектами аппаратного обеспечения (биты, байты, слова, адреса и т.п.). Это позволяет весьма эффективно реализовывать типы, определяемые пользователем. С++ и его стандартные библиотеки спроектированы так, чтобы обеспечивать переносимость. Имеющаяся на текущий момент реализация языка будет идти в большинстве систем, поддерживающих C. Из С++ программ можно использовать C библиотеки, и с С++ можно использовать большую часть инструментальных средств, поддерживающих программирование на C. Эта книга предназначена главным образом для того, чтобы помочь серьезным программистам изучить язык и применять его в нетривиальных проектах. В ней дано полное описание С++, много примеров и еще больше фрагментов программ.

Мюррей Хилл , Бьёрн Страуструп , Бьярн Страустрап

Программирование, программы, базы данных / Программирование / Книги по IT