ЖУРНАЛ СТА 1/1996
1/96 106 ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ СИСТЕМЫ РЕАЛЬНОГО ВРЕМЕНИ ку не как программист, а как человек, знакомый с оптикой на уровне средней школы. Для начала представьте себе прозрачный параллелепи- пед. Пространство, которое он ограничивает, в терми- нах Photon называется про- странством событий. Грань параллелепипеда, обращен- ная к вам, является экраном компьютера (рис. 1). То есть вы находитесь наверху про- странства событий. Противо- положная грань представ- ляет собой «корневую» плос- кость. В этом пространстве размещаются объекты, кото- рыми оперирует Photon, — регионы. Они представляют собой прямоугольные области, распо- ложенные параллельно корневой плос- кости, и являются агентами QNX-про- цессов в пространстве событий. С по- мощью регионов задача получает све- дения о происходящем и с их же по- мощью доставляет свою информацию. Программа, работающая под управле- нием Photon, может создавать любое количество регионов и управлять их атрибутами (размером, местоположени- ем в пространстве событий, чувстви- тельностью, прозрачностью и так да- лее). Механизм передачи информации между регионами реализован на осно- ве сообщений на языке Photon, назы- ваемых событиями. События в Photon имеют материальную основу — они представляют собой набор таких же прямоугольных областей, как и регионы, и перемещаются в пространстве собы- тий в двух направлениях: к корневой плоскости или обратно. Регионы могут передавать различные типы событий, такие как события отображения, мы- ши, клавиатуры и события для позици- онирования окон. Если использовать аналогии из области физики, то собы- тия являются потоком фотонов, воз- действующих на регионы. По отноше- нию к событиям регионы обладают двумя важными свойствами: чувстви- тельностью и прозрачностью. Эти по- нятия говорят сами за себя. То есть если регион не чувствителен к определенно- му типу события, он его просто не заме- чает, если же он не прозрачен для собы- тия, проходящего через него, то он бу- дет модифицировать набор прямо- угольников события, вырезая области пересечения, в результате чего образу- ется набор меньших прямоугольников, представляющих собой оставшую- ся часть события, продолжающего движение по пространству событий. Следующий регион, чувствительный к этому событию, будет получать уже новый набор прямоугольников. На ри- сунке 2 показано событие, полученное регионом Г после прохождения через регионы А, Б и В. Непрозрачность реги- онов также позволяет избежать нежела- тельных эффектов прохождения собы- тий. Допустим, что регион Б посылает событие отображения в направлении графического региона (говоря проще, окно Б пытается отобразить себя на эк- ране). Так как регион В, расположен- ный перед регионом Б, непрозрачен для событий Б, то он вырезает часть со- бытия таким образом, чтобы оно не из- менило область региона В на экране. Регионы драйверов Подробнее стоит остановиться на ре- гионах драйверов. Сам Photon не зна- ет, как что-либо отображать на эк- ране или воспри- нимать нажатие клавиши на клавиа- туре. Фактически он только обраба- тывает события и управляет набора- ми их прямоугольников. За отображение информации на эк- ране отвечает графический драйвер, который, как и все драйверы, представ- ляет собой обыкновенную QNX-задачу и использует свой регион для приема графических событий и отображения их на экране, обеспечивая необходи- мый сервис для остальных задач. Обработку событий клавиатуры, мы- ши или сенсорного экрана произво- дит отдельный драйвер, называемый Pointer. Выполнение драйвера как отдельной задачи имеет ряд преимуществ. Во- первых, это экономит ресурсы вашей системы, так как один драйвер отвеча- ет за те или иные функции, избавляя другие задачи от необходимости ре- шать эту проблему самостоятельно. Во- вторых, взаимодействие с драйвером на основе передачи сообщений позво- ляет запускать драйверы на отдельном узле сети. На рисунке 3 вы можете ви- деть, как размещаются регионы драй- веров в пространстве событий. Регион устройств разделяет простран- ство событий на две части. Регионы драйверов находят- ся в ближней к поль- зователю части, ре- гионы остальных программ размеща- ются между регио- ном устройств и кор- невым регионом. Графический ре- гион находится бли- же всех к пользова- телю. Все события, доходящие до него, он отображает на физическом экране. Регион обработки мыши принимает информацию от мыши или сенсорно- го экрана и отправляет ее региону ус- тройств, который, в свою очередь, пе- редает одно событие программам пользователя, а второе графическому региону для отображения на экране перемещения указателя. Окно, распределенное по сети В Photon гра- фический драй- вер может ис- пользовать реги- он, меньший чем высота или ши- рина простран- ства событий. Та- ким образом, вы можете исполь- зовать несколько графических драйве- ров на разных узлах сети для отображе- ния различных частей пространства Рис. 1. Графическая метафора системы Photon Рис. 2. Прохождение событий через непрозрачные регионы Рис. 3. Размещение регионов драйверов
Made with FlippingBook
RkJQdWJsaXNoZXIy MTQ4NjUy