`

СПЕЦИАЛЬНЫЕ
ПАРТНЕРЫ
ПРОЕКТА

Архив номеров

Что для вас является метрикой простоя серверной инфраструктуры?

Best CIO

Определение наиболее профессиональных ИТ-управленцев, лидеров и экспертов в своих отраслях

Человек года

Кто внес наибольший вклад в развитие украинского ИТ-рынка.

Продукт года

Награды «Продукт года» еженедельника «Компьютерное обозрение» за наиболее выдающиеся ИТ-товары

 

Х-Window: секретные материалы

+11
голос

В рамках публикации архивных материалов нашего издания предлагаем вашему вниманию статью из № 6 (172) «Компьютерного Обозрения» от 11 февраля 1999 г. Первая и одна из самых фундаментальных наших публикаций про X-Window.

Инженерная карьера потому и заманчива, что люди со средними способностями могут творить, т.е. испытывать счастье доступное только сверходаренным...
В.Е. Грум-Гржимайло

Разрешенные радости окрыляют... Вот разрешили нам «самый быстрый» микропроцессор ввозить (это об AMD К6-2-400 речь идет), наверное, можно уже и о вещах более серьезных поговорить. Например, о программной системе, совершенно не распространенной сначала в СССР, затем — на территориях СНГ. О системе, которую одни с пеной у рта готовы проклинать, другие — боготворить. И которую можно наити в кабине пилотов «боингов», на панелях систем боевого управления танков, в суперкомпьютерных центрах, наконец — на экране собственного компьютера (при желании, естественно). Нераспространенность X-Window легко объясняется ее до недавних пор неотемлемым атрибутом — мощной RISC-станцией. За тем чтобы компьютеры такого класса не попадали в руки «вероятного противника», СОСОМ следил ревностно. Наверное, поэтому в отечественной прессе мне попадались одна-две обзорные статьи об архитектуре X-Window и ни одной книги на русском языке издано не было.

Итак для людей, желающих творить...

X-WINDOW — НЕМНОГО ИСТОРИИ И ФАКТОВ

Собственно истории будет действительно немного. О громадном проекте (около 1,5 млн строк мобильного кода) известно совсем мало. Мне удалось отыскать сообщение из USENET, датирующееся 19 июня 1984 г., в котором основоположник X-Window Роберт Шейфлер (Robert W. Sheifler) сообщает о завершении работы над базовым вариантом проекта Athena — пакетом управления окнами и растровой графикой для терминалов VS100. Технические средства, использованные в проекте, поразить современное воображение не способны — обычный VAX и соединенные посредством шины UNIBUS терминалы (точнее, VS100 — это растровые дисплеи, аналогичные сочетанию «видеокарта+монитор из знакомого нам ПК-мира). По воспоминаниям участников, реализация проекта значительно усложнилась из-за поставки Digital недоработанных терминалов (на момент закупки оборудования для VS100 еще не было стабильного firmware).

По устоявшейся традиции разработчиков, «живущих» в Unix, название проекта ничего не означает, и никакой таинственности в большой X нет. Как всегда, ларчик открывается просто — причины появления этой буквы предопределены английским алфавитом, в котором X следует после W. Именно «W» называлась не дожившая до наших дней разработанная в Стенфордском университете оконная система ставшая отправной точкой для Шейфлера и его команды. Интересным фактом является и то, что первые версии X-Window были написаны на CLU (для тех, кто не знает, это замечательный объектно-ориентированный язык, незаслуженно забытый).

Затем к ним создавался интерфейс для языка С, и намного позже вся система была переписана на С для обеспечения мобильности, при этом основное внимание разработчиков было уделено сохранению принципов объектного проектирования. Так что и по сей день X-Window остается объектно-ориентированной системой, несмотря на С-реализацию.

Где осуществлялся и кем был инициирован проект X? Как всегда — в Массачусетском технологическом (MIT) и «с подачи» Digital, безукоризненно зарекомендовавшей себя в плане новаторства, но, увы, «почившей в бозе». К счастью для всех приверженцев X-Window, уход с арены DEC никак то сказался и не скажется на судьбе «иксов» — уже давно роль DEC в процессах развития и распространения Х-технологии была чисто номинальной. Основной «груз» этих обязанностей несет на себе консорциум Opengroup, образованный обширной группой компаний и организации (www.opengroup.org/overview/memebers).

Версии системы — они всегда интересны как с точки зрения оценки динамики развития (а это позволяет обоснованно прогнозировать и перспективы), так и при чисто потребительском подходе. Так, зачастую сложные механизмы образования номеров версий являются первым и последним «камнем преткновения», споткнувшись о который, двигаться дальше не хочется. Генеалогия модификаций X-Window очень проста: всего было 11 версий, в каждой из которых — не сколько релизов, номерами версии и релиза принято обозначать конкретную реализацию с использованием строго определенного формата. Например, X11R5 означает релиз 5 версии 11 функциональные различия между версиями очень значительны, например версии с 1 по 6 работали только монохромными (т. е. двухцветными без дополнительных градаций яркости) дисплеями, в версии 8 появилась водность использования цветных дисплейных систем, вереи стала первой широко распространенной и полнофункциональной текущая версия 11 — результат полного перепроектирования, нацеленного на повышение эффективности сис темы и обеспечение еще большей мобильности.

Кроме официального деления на версии и релизы, существует еще и классификация X-Window по принципам распространения и проектирования. Так, огромной популярностью пользуются разработки некоммерческого проекта XFree86, обеспечивающие 100%-ную совместимость с официальными версиями X-Window, полностью бесплатные и не требующие лицензионных и прочих отчислений для разработчиков.

Х-АРХИТЕКТУРА

О предмете нашего обсуждения кратко можно сказать следующее — объектно-ориентированная клиент-серверная система управления отображением информации и устройствами ввода растровых дисплеев. Правда — не очень понятно и совсем уж не кратко? Попробуем разобраться.

Термин «клиент-серверный» в отношении компьютерных/программных архитектур означает наличие как минимум двух составных частей — клиентской и серверной. В X-Window они присутствуют и имеют названия Xlib и X-server соответственно. Первая неприятность, связанная с привычной терминологией, — совершенно противоположные толкования этих терминов в X: если в «стандартной» клиентсерверной архитектуре клиентская часть располагается и исполняется на машине меньшей мощности, рассчитанной на работу одного пользователя, а серверная — на многопользовательской мощной, то в X-Window все с точностью «до наоборот»: X-server выполняется на маломощной пользовательской машине, Xlib — на мощной многопользовательской.

 секретные материалы

Хотя, если немного подумать, окажется, что с терминологией все в порядке. Что должен делать сервер? Наверное, разделять ресурсы и предоставлять их клиентам. В X-Window основными ресурсами считаются экранная область и устройства ввода (клавиатура и мышь), именно они разделяются между клиентами — приложениями, компьютерами и сетями. Поэтому и сервер исполняется там, где находятся разделяемые ресурсы.

Объектная ориентация Х — предмет многолетних споров и обсуждений. Для того чтобы понять специфику такого, весьма тонкого нюанса внутренней архитектуры X-Window, просто необходимо быть программистом и написать хоть одну реально работающую Х-программу. Несмотря на сложность программных интерфейсов (вполне оправданную возможностями), сделать это не труднее, чем, например, в MS Windows. Единственная проблема здесь — отсутствие доступных подробных руководств (они, конечно, имеются в природе — например, издаваемые O’Reilly). На своем опыте убедился, что X — действительно объектно-ориентированная система, прекрасно подтверждающая тезис о том, что объектно-ориентированное проектирование программ может успешно осуществляться с помощью любых инструментов, даже таких «ужасных», как ANSI C.

Ну и, наконец, упоминание о растровых дисплеях — оно очень важно в определении X-Window. Дело в том, что дисплеи бывают разные (в том числе векторные или вообще 3D). Некоторые аспекты специфики растрового метода формирования изображений, в первую очередь представление цветов пикселов на экране, формирование и управление палитрами, в большей степени машиннозависимы. Создание эффективного кода, способного работать с самым разным «железом», — задача не из простых. Разработчикам Х решение ее удалось на славу — Х-графика действительно очень быстрая (субъективно — в Linux и особенно в FreeBSD на машинах одинаковой конфигурации она значительно обгоняет Windows 95).

Еще одним важным замечанием относительно архитектуры X-Window является ее независимость от платформы. Х отлично работает со всеми версиями Unix и клоновыми Unix-подобными системами, существуют реализации X для MS Windows, Apple MacOS, для DOS (один из интереснейших продуктов компании Quarterdeck DESQview/X вообще заслуживает, на мой взгляд, обсуждения в отдельной статье), для... игровых приставок Nintendo 64 и многопроцессорных суперкомпьютерных кластеров, для разнообразных специализированных компьютеров, называющихся Х-терминалами. В общем, найти платформу, на которой не работает X-Window, намного труднее, чем перечислять весь список. Повышенный интерес к портированию Х на новые платформы объясняется уникальными возможностями X-Window, обширными и до сих пор во многом неиспользованными. Ни одна альтернативная (по отношению к X-Window) технология пока ничего подобного предложить не может, как и не может гарантировать стабильность и надежность 15-летней историей.

ИЗВЕСТНЫЕ И НЕРАСКРЫТЫЕ ВОЗМОЖНОСТИ X-WINDOW

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

Итак, используя Х-технологию, уже сегодня возможно: запускать на удаленных серверах MS Windows NT, Unix, Apple, мэйнфреймах и суперкомпьютерах приложения и получать одновременный доступ к графическому интерфейсу всех этих приложений с одного рабочего места; расширять возможности стандартных броузеров до уровня тонкого клиента; обеспечивать очень высокую защиту данных в локальных сетях и Web-ориентированных системах; использовать сети кабельного телевидения для подключения тонких клиентов или расширять технологии, подобные Microsoft Active X, встраиванием полноценных приложений в динамические документы.

Интегративный аспект Х-технологии активно развивается — существует масса коммерческих Х-серверов для самых разных платформ (например, для модной MS Windows одними из лучших Х-серверов являются продукты фирмы Hummingbird), кроме того, есть ряд систем, обеспечивающих и клиентскую часть Х, т.е. позволяющих использовать все прелести «иксов» даже для приложений, написанных без учета возможностей Х. Несомненно, сказались гибкость X-Window, открытые исходные тексты и многолетний опыт эксплуата-ции/разработки — некоторые компании, специализировав-шиеся на производстве Х-терминалов, быстро переориенти-ровались на потребности рынка: Tektronix выпускает систему WinDD, NCD — WinCenter, Exosodus — NTerprise, Tera Technologies — ez-Win. Общей для всех этих систем является идея — перехват вызовов GDI MS Windows и интерпретация их в терминах (вызовах) Х-системы. Таким образом, поль-зователи рабочих станций Unix и Х-терминалов могут полу-чать доступ практически ко всем приложениям, доступным на обычном ПК, без эмуляции MS Windows на своих машинах. Аналогичные решения есть и для платформы Apple, для многих мэйнфреймов и обязательно — для всех суперкомпьютеров.

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

Постараюсь объяснить на реальном примере: некоторой организации, специализирующейся в области проектирова-ния механизмов машин, потребовалась закупка очень дорогого ПО моделирования динамики механических систем, работающего в MS Windows. Стоимость лицензии составляла порядка $25000, и почти каждому из 15 конструкторов время от времени был необходим доступ к этой программе со своего рабочего места. Кроме того, программа не допускала возможности запуска ее с сервера (это довольно частое ограничение вызвано простой причиной — для работы программам такого ценового класса обычно требуется специальный аппаратный «ключ», который должен быть установлен в разъеме параллельного порта).

Естественно, существуют два простейших выхода из подобной ситуации — либо закупка 15 лицензий ПО, либо установка отдельной машины, предназначенной исключительно для исполнения этой программы. Первый вариант был отвергнут сразу — и из-за высокой стоимости, и по причине явно необходимой замены всего парка компьютеров (рабочие станции конструкторов — старенькие SGI Modeller — хоть и прекрасно справлялись со своими обязанностями, но в режиме эмуляции выполнять ресурсоемкий х86-пакет просто не могли). Второй вариант, несмотря на минимальную стоимость, также не подходил, так как не обеспечивал требуемой гибкости. Попытка реализовать проект с помощью «новомодного» протокола ICA и сервера Citrix WinFrame (в некотором смысле ICA-технология копирует X-Window, но больше ориентирована на работу в сетях с низкой пропускной способностью и для офисной категории приложений) потерпела фиаско — скорость графического вывода на клиентских машинах не выдерживала никакой критики. После установки на отдельном ПК системы NCD WinCenter и тестовых удаленных запусков программы выявилась достаточная для эффективной работы скорость, а в результате последующей мо-дернизации локальной сети (переход на FastEthernet) конструкторы уже практически не ощущали разницы между локально исполняемыми и удаленными задачами. Для «полноты удовольствия» и получения максимальной отдачи от примененной технологии были закуплены MS Office и ряд удобных специализированных CAD-утилит, также разделяе-мых посредством WinCenter. Получившаяся система превзошла все ожидания — во-первых, не был нарушен привычный «мир обитания» конструкторов (которые по «непонятным» причинам отказывались переходить с Silicon Graphics на ПК), во-вторых, существенно расширились возможности всей системы в целом, и в-третьих, проект был реализован в рамках весьма ограниченного бюджета.

Вопросы защиты данных, увы, не мой конек. Но здесь технология Х-Window обладает очевидными достоинствами — сами данные не передаются по сети, обработка и хранение их осуществляются централизованно. Команды Х-протокола (именно они «путешествуют» между Х-сервером и Xlib), естественно, поддаются шифрованию и не несут ответственной информации (если только само изображение на экране не является какой-либо тайной). Известные «дыры» в механизмах защиты X быстро устраняются, кроме того, возможно применение различных специализированных подсистем, обеспечивающих высокий уровень защиты клиентских приложений от попыток вторжений неаутентифицированных Х-серверов.

Встраивание приложений — термин сравнительно новый и совершенно, увы, незнакомый пользователям не-Unix-платформ. Попытаюсь объяснить его на абсолютно работоспособном примере (доступном для повторения всем, у кого стоят на ПК Linux, FreeBSD, Solaris, UnixWare). В офисном пакете Siag (он, естественно, бесплатный) в текстовом редакторе и электронных таблицах предусмотрена возможность «вставки» непосредственно в тело документа... окна практически любого приложения. Добавим к этому механизмы удаленного запуска приложений и средства передачи им данных, формируемых как подмножество документа, — получаем принципиально новую технологию «динамического контекста». Документ уже перестает быть статической сущностью, приобретает характер распределенного приложения.

X-WINDOW: ПРОИЗВОДИМ «ВСКРЫТИЕ»

С точки зрения прикладного программиста и пользователя, Х-сервер как составляющая X-Window — подсистема закрытая, поэтому лучше всего считать его «черным ящиком». Основной интерес представляет Xlib — и как главное инструментальное средство разработки приложений, и как основной инструмент модификации уже существующих программ. «Общение» клиентских задач с Х-сервером происходит с помощью так называемого Х-протокола, и даже в случае исполнения обеих подсистем Х на одной машине это правило не нарушается. Просто изменяется канал передачи данных — вместо сетевого интерфейса используются методы взаимодействия процессов (благодаря гибкости механизма сокетов в Unix это делается очень легко, да и простота реализации позволила отлично эмулировать такой механизм в других ОС).

Эффективность подобного решения можно поставить под сомнение, но даже несколько минут реальной работы напрочь снимают любые подозрения в «неповоротливости» системы.

Х-протокол представляет собой стандарт на форматы че-тырех типов информационных пакетов: запросов, ответов, событий и ошибок. Разработчики Х предусмотрели практичес-ки все мыслимые механизмы сокращения трафика в сети и повышения информационной емкости пакетов. Среди них особенно важен (и для понимания работы Х-Window в целом) принцип асинхронности Х-протокола, означающий необязательную мгновенную реакцию системы на какое-либо событие. Именно благодаря асинхронности протокола Х способен эффективно работать в сетях — как локальных, так и в WWW. Возможные задержки в сети, утраченные пакеты или загруженность соответствующего порта — вот неполный перечень причин, исключающих синхронный характер Х-протокола. В непонимании механизма асинхронности кроется подавляющее большинство ошибок начинающих разработчиков Х-приложений, здесь же спрятаны «подводные камни» процессов отладки и оптимизации программ.

Запросные пакеты Х-протокола генерируются клиентской частью X-Window — Xlib, и большинству программных вызо-вов из широкого перечня X API соответствует свой запросный пакет. Xlib помещает каждый запросный пакет в специальную структуру данных — очередь, организованную по принципу «первым вошел — первым вышел». Передача накопленных в очереди пакетов происходит один раз при переполнении, фактически означающем, что новый пакет, записываясь в очередь, «вытесняет» все остальные, находящиеся в ней. Вытесненные пакеты передаются по сети (или посредством межпроцессного взаимодействия) «за один раз». Такое решение позволяет значительно сократить нагрузку как на сеть за счет редкой передачи укрупненных пакетов, так и на процессоры машин, принимающих участие во взаимодействии (по той же причине). Очевидно, что систем-ные вызовы Xlib, не направленные на изменение состояния Х-сервера, запросных пакетов не порождают. Существуют еще три условия, при которых происходит передача всей очереди запросов, даже в случае ее частичного заполнения, — когда клиентская программа сообщает Xlib об ожидании пакета, соответствующего какому-либо событию Х-сервера, при формировании запроса, требующего ответного пакета от Х-сервера, и, наконец, при принудительной передаче очереди.

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

Понятие события — это «святая святых» программных систем пользовательских интерфейсов. Х-Window не является исключением, и все внутренние управляющие механизмы Xlib ориентированы исключительно на обработку событий. Под ними в Х-терминологии понимаются не только очевидные «внешние», инициированные пользователем изменения состояния устройств ввода (клавиатуры и мыши), но и не менее важные «внутренние» изменения Х-сервера. В связи с тем, что Х перекладывает на плечи программиста заботу о, например, перерисовке содержимого окна (окна ведь могут перекрываться и перемещаться, соответственно внутренний контекст их на экране может быть на время утерян), клиентская программа должна быть оповещена о необходимости выполнения соответствующих операций. Множество событий, «понимаемых» X-Window, достаточно обширно и фиксировано, что означает невозможность его расширения без модификации исходных текстов системы. Всем событиям соответствуют пакеты Х-протокола, передаваемые Х-сервером клиентской программе через очередь Xlib.

Ошибки, как известно, — «родные сестры» программ: где есть программы, там есть и ошибки. В хорошо спроектированных системах для обработки ошибок, возникающих в ходе выполнения программы, предусматриваются специальные механизмы с расширенными правами и привилегиями. В Х-Window также сделано все возможное для максимально эффективной реакции системы на возникающие ошибки и исключительные ситуации — пакеты Х-протокола, сообщающие о подобных явлениях, не буферируются в очередях и сразу после поступления в Xlib вызывают специальную программу—обработчик ошибок, которая может быть переопределена программистом.

X-Window, как и любая оконная система, оперирует очень сложными абстракциями, однако, в отличие от более привычных и простых собратьев (например, MS Windows), ориентирована на работу в многопользовательской распределенной среде. Соответственно, ряд идей в реализации Х уникален. В первую очередь, это утверждение можно отнести к понятиям «ресурс» и «атом», с которыми всем начинающим пользователям и программистам неизбежно придется столкнуться.

Атом — это просто целочисленный идентификатор неко-торого объекта Х-Window или некоторого свойства объекта. Сетевые «способности» Х (разделение функций Х-сервера и клиентской программы) напрочь исключают заманчивую возможность использовать для указания объектов их непо-средственные адреса, так как Х-сервер и клиентская программа могут выполняться на разных машинах, поэтому раз-работчики Х определили атом как целое число. Кроме того, атомы существенно сокращают сетевой трафик, позволяя отказаться от постоянной передачи сложных структур дан-ных. Под понятием «ресурсы» как раз и скрываются эти самые сложные структуры данных, соответствующие принятым в Х абстракциям — окнам, шрифтам и т. д. Теперь можно «выстроить» более или менее полную картину внутреннего мира Х-Window: Х-сервер получает от клиента посредством пакетов Х-протокола запросы на формирова-ние ресурсов и возвращает клиенту в ответных пакетах атомы этих ресурсов, после чего клиентская программа может модифицировать любой ресурс, используя в качестве его идентификатора соответствующий атом, Х-сервер и Х-клиент переходят в режим ожидания событий, в это время поль-зовательская программа продолжает выполняться. Последняя «ступень» — ожидание событий — важнейший элемент Х-технологии, получивший специальное название «главного цикла ожидания». В это время ни Х-сервер, ни Xlib практически не потребляют вычислительных ресурсов, что обусловливает высокую эффективность всей системы в целом (кажущиеся непродолжительными интервалы времени между возможными действиями пользователя, вызывающими события, по меркам 300-мегагерцевого процессора яв-ляются чуть ли не вечностью...).

Вот здесь самое время упомянуть и о присущих X-Window слабостях, связанных именно с расширенными кросс-платформенными и сетевыми возможностями, а также с сосредоточением усилий разработчиков на решениях проблем эффективности. Сложность этих задач настолько велика, что исторически Х-консорциум никакого внимания «потребительской» стороне X-Window не уделял. Речь идет о красоте... Экран компьютера с «голым» X-Window ужасен — серый, невыразительный, окна не имеют привычных симпатичных обрамлений, управление их положением на экране затруднено. А как же красивые картинки с экранами Linux, которые можно было встретить на страницах нашего журнала? Все эти «красивости» — заслуга совершенно сторонних программ, работающих в Х-среде, в первую очередь — библиотек виджетов и оконных менеджеров.

Так как Х ничего не знает о всяческих кнопках, пиктограммах и прочих элементах пользовательского интерфейса, называемых виджетами, а для нормального процесса взаимодействия с компьютером они просто необходимы, то они, естественно, созданы. Причем их очень много — самых разных, в том числе есть и распространяемые самим Х-консорциумом (Motif и CDE).

 секретные материалы

Это разнообразие с потребительской точки зрения большого удовольствия не доставляет, а высокие стоимость и ресур-соемкость Motif/CDE не позволяют им стать абсолютными лидерами. Такая ситуация несомненно сказалась на популяр-ности Unix — пусть старые версии Windows предлагали далеко не красивый интерфейс, но он был единым! Программисты освоились с нюансами работы в нем, пользователи привыкли к внешнему виду. Следует отметить, что в последнее время развитием Х-технологий активно занимается сообщество свободного программного обеспечения (Free Software Foundation), и некоторые новые разработки уже сейчас претендуют на статус де-факто стандарта (речь идет о GTK).

Оконный менеджер — также обязательный атрибут удоб-ной и красивой работы в Х. Это обычная программа, напи-санная с использованием специфических возможностей Xlib и в соответствии с рядом ограничений. Она позволяет упро-стить управление размерами и положением окон на экране и обеспечивает всяческие «красивости», в первую очередь — обрамления окон и дополнительные (не реализованные непосредственно в программах) элементы управления. Стро-гие ограничения, налагаемые на проектирование оконных ме-неджеров, — не случайность и не прихоть. Их соблюдение гарантирует корректное выполнение программ, использую-щих любые библиотеки виджетов (или вообще построенных без них — есть и такие), на любой Х-станции/терминале.

Существует даже специальный раздел стандарта Х-протокола, называемый «Соглашение о связи между клиентами» (Interclient Communication Conventions), содержащий подробный перечень этих ограничений. Так что с разнообразием интерфейсных технологий на самом деле не все так плохо — при наличии всех необходимых составных частей работоспособное приложение на вашей машине всегда будет выполняться так, как того хотели его авторы.

Интересной особенностью Х-технологии является возможность частичного изменения внешнего вида приложений, исходные тексты которых недоступны. Абстракции атомов и ресурсов позволяют, например, переопределять шрифты в приложениях, не допускающих выполнения этой операции каким-либо другим путем. Ряд утилит, входящих в состав стандартной поставки X-Window, существенно облегчает выполнение подобной работы. Так, программа editres отображает в наглядном виде древовидную структуру иерархии виджетов (и косвенно — связанных с ними ресурсов) выбранного приложения.

Пожалуй, одной из самых сложных внутренних подсистем Х является подсистема управления цветом. Каждое окно X-Window — свой, относительно независимый мир с собственной системой координат, цветовой палитрой и со строго определенным местом в оконной иерархии. Общие требования к Х распространяются и на цветовую палитру — таблицу соответствия кодов пикселов реальным цветам на экране. Ее реализация должна быть мобильной и эффективной, в противном случае удовольствие от работы с X-Window осталось бы уделом очень ограниченного круга пользователей. Задача эта совсем не тривиальна — большинство современных видеокарт работает с загружаемой палитрой. Способом простой «перегрузки на лету» обеспечить неза-висимость цветов в различных окнах и при этом получить немигающее стабильное изображение на экране очень сложно. Не вдаваясь в подробности реализации, могу только уверить, что решение цветовых проблем удалось разработчикам Х на славу.

Последняя, достаточно специфическая подсистема X-Window обеспечивает операции рисования, так называемые графические примитивы и графический контекст. Сетевая специфика, естественно, сказалась и здесь — запросные пакеты Х-протокола на рисование графических примитивов (точек, линий, многоугольников, окружностей и пр.) содержат далеко не всю необходимую для выполнения точно оп-ределенных операций информацию. «Недостающая» часть информации называется графическим контекстом и включает в себя обширный перечень параметров (цвет, толщина линии и пр.). Графический контекст — это ресурс Х-сервера, обладающий своим атомом, соответственно, при формивании графического примитива для всей «недостающей» информации используется атом графического контекста. Такой механизм обладает двумя интересными особенностями — во-первых, это существенно сокращает трафик в сети (или снижает требования к пропускной способности шин), во-вторых — изменения графического контекста автоматически распространяются на все примитивы, сформированные с этим графическим контекстом. Возможность одним вызовом изменить цвет части сложного рисунка или элемента пользовательского интерфейса — широко распространенный прием в Х-программировании. К перечню подобных приемов следует отнести и часто используемую функцию Х — вывод графики не в видеопамять непосредственно, а в предварительно сформированные буферные области памяти, называемые пиксельными картами (pixmap), с последующим копированием их «на экран». Правда, программы, злоупотребляющие подобной техникой, очень плохо работают в сети по причине недостаточной для передачи больших объемов информации пропускной способности.

«ЮНОШАМ, ОБДУМЫВАЮЩИМ ЖИТЬЕ...»

Увы, ограниченный объем журнальной статьи (а уж если речь идет о такой сложной системе, как Х, — то и книги среднего формата) не позволяет достаточно подробно рассказать о всех возможностях и особенностях X-Window. Да и, собственно говоря, статья эта была задумана для других целей. Воспринимайте ее как самый первый экскурс в очень интересный и в целом относительно несложный мир действительно мощ-ных программных систем, испытанных временем и заслуженно признанных серьезными потребителями. Ведь на самом деле потребности промышленности, обороны и науки не могут соответствовать принципу «один мир — одна программа». У каждой программной системы есть свои достоинства и недостатки, и каждая программа оценивается по множеству критериев. Точно определить, какой из них главный для некоторой абстрактной «вообще»-программы, невозможно. С моей личной точки зрения, определяемой текущим статусом (компьютер-то я использую как печатную машинку с броузером), главный критерий — способствование обучению. Следовательно, программы должны чуть ли не принудительно заставлять ежедневно учиться. Сначала этот процесс кажется тяжелым, потом становится легче, затем входишь во вкус...

Разделяющим подобную точку зрения и согласным с эпиграфом рекомендую за дополнительной информацией о X-Window обратиться к следующим сайтам:

  • www.rahul.net/kenton/xsites.html — самый обширный сборник ссылок на почти всю доступную онлайновую информацию по X-Window;

  • metalab.unc.edu/LDP/HOWTO/XWindow-User_HOWTO.html — обновленное и очень удачное пользовательское руководство по X-Window.


Вы можете подписаться на наш Telegram-канал для получения наиболее интересной информации

+11
голос

Напечатать Отправить другу

Читайте также

Помянем Х11, особенно её х86 реализацию! Бу-га-га-га-га-га!

Извините, не могу сдержать гомерический раскат дикого ржача!

Через год в большинстве контор перекатятся на Win2k, пока еще можно будет достать крякнутые версии в палатке на радиорынке.

По инерции будут еще пользоваться Цитриксом, но уже в 2003 версии всё кардинально поменяется...

@@@быстрая (субъективно — в Linux и особенно в FreeBSD на машинах одинаковой конфигурации она значительно обгоняет Windows 95)[email protected]@@

ой пан Андрий, не 3,14**здыть ото, як Галя на базари...

Тю, теперь в вашей же формулировке: как хипстер заблудший на раёне, где вам ни рады... %_)))))

"За тем чтобы компьютеры такого класса не попадали в руки «вероятного противника», СОСОМ следил ревностно"

Забавно читать это на сайте с именем ko.com )

Не помню уже. Вроде с Украины сняли ограничения уже во времена Ющенко. При Кучме не снимали, тому що слишком много пиратили?

А уж сколько тогда было ограничений на вероятного противника, что буквально 5 лет назад от сегодня так глубоко озаботились, аж рыпнуться не могли, угу... только в пределах глубокой озабоченности :-)))

RISC-компы, первый раз я увидел в Украине, в 1993-м году. На компьютерной выставке в "Интурист"-е ("Киевская Русь"). Я тогда очень сильно увлекался программированием на Pascal, PL/M и C и на дивном языке "РАПИРА" ( ). А поскольку, я, сам - для себя (не было ,ведь, никаких тырнетов, были: только BBS, типа - зачатков FIDO и зарубежных) попИсывал модули на АСМе и даже, иногда, - на машинных кодах - я просто и легко понял и оценил RISC-архитектуру и полюбил её с первого взгляда. А взрослые дяди, из Америки, которые привезли эти "железки" и с которыми я общался много часов, выясняя детали, даже - хотели меня пригласить на работу. А потом,детство - кончилось, кушать дома было - нечего, от слова "совсем" и я пошёл работать электромонтажником, за 1 800 000 купонов / месяц (примерно $20). А потом-всякие, типичные для того времени, истории: с полу-бандитами, рекетом, ларьками и т.п. Когда, я снова смог "выдохнуть" и прикоснуться к клавиатуре, в Украине уже не было никаких RISC-компов, а везде были - только IBM PC 286, с отдельной кнопочкой TURBO. Вот так я "просрал" один из больших шансов, посланных мне судьбой... Но,я - был не один такой. =)

Ничего страшного... :-) Тут много миллионов человек поступили точно аналогично %-))))

//сарказм

РАПИРА тоже ничего так, если представить язык 1С как некое продолжение, главное кириллица в синтаксисе :-))) // шучу.

В 93м я кажется только заглядывал в школьный класс, куда навезли БК как их там 1001, или как.

Только сейчас глянул в википедию - машинка то 16битная, гыгы..

Тут уже другой вопрос всплывает, какие такие RISC компы могли привозить в Киев на выставку?

Английские желуди? Амиги (они вообще риски?)?

DEC/SGI - да ну, космос же для 93года.

SUN/IBM?

Но таки КО хорошо за Линукс набрасывало в те времена. В глухих тупиках интернетов не было, проверить факты было сложно. :-)

А теперь обидно, что старые компы выкинул, софта из тех времен не запустишь толком.

 
 
IDC
Реклама

  •  Home  •  Рынок  •  ИТ-директор  •  CloudComputing  •  Hard  •  Soft  •  Сети  •  Безопасность  •  Наука  •  IoT