Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

GRID_УП

.pdf
Скачиваний:
75
Добавлен:
16.03.2016
Размер:
1.78 Mб
Скачать

241

Сервер Photon не работает с окнами, не взаимодействует с устройствами ввода (мышью, клавиатурой и т.п.). За непосредственную прорисовку изображения отвечает графический драйвер. Задача графического драйвера — отображение информации, получаемой от сервера шрифтов и от интерпретатора графического потока. За ввод информации от мыши, клавиатуры и других устройств отвечает драйвер ввода.

Следует заметить, что Photon наследует сетевую прозрачность ОС QNX — дополнительные графические драйверы могут использоваться для расширения графического пространства Photon за счет физических дисплеев других узлов сети. При этом можно легко обеспечить дублирование изображения.

Photon использует кодировку Unicode, что обеспечивает ввод и вывод текста, написанного на разных языках.

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

ратора рабочего стола.

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

Реализация графической среды. В обычной настольной системе Photon может запускаться одним из двух способов.

Вручную из командной строки в любое время после регистрации в системе.

Автоматически утилитой tinit, если не существует файла

/etc/config/system/nophoton.

В любом случае используется командный сценарий /usr/bin/ph, выполняющий запуск всех необходимых компонентов графической среды в зависимости от конфигурации системы. Вот что делает этот сценарий:

242

1. Запускает утилиту зондирования графического оборудования crttrap; если такое оборудование найдено и опознано, то crttrap запускает программу devgt-iographics для определения доступных графических режимов видеокарты. Программа devgtiographics записывает результаты своей работы в файл

/etc/system/config/graphics-modes.

2.Запускается графический сервер Photon. Если существует переменная окружения LOGNAME (а это означает, что вы ее либо нарочно инициализировали в командных скриптах, либо вы уже прошли регистрацию с помощью утилиты login), то Photon стартует сразу. В противном случае Photon запустит утилиту phiogin для регистрации пользователя в системе. Можно запретить пользователю выход из Photon в командную строку, присвоив переменной PHEXIT_DISABLE значение 1.

3.Программа crttrap запускает администратор графического вывода io-graphics, используя командную строку из файла

/etc/system/config/graphics-modes. Процесс io-graphics загружает интерпретатор графического потока gri-photon.so и сервер шрифтов. По умолчанию io-graphics загружает сервер шрифтов, реализованный в виде разделяемого объекта — pnfont.so. Можно указать администратру графического вывода запускать сервер шрифтов в виде отдельного процесса phfont, создав переменную окружения PHFONT_USE_EXTERNAL. Отдельный процесс сервера шрифтов может понадобиться для того, чтобы его можно было использовать с других узлов сети. Заметим, что

вдистрибутиве QNX есть несколько серверов шрифтов с различными ограничениями функциональности для встраиваемых систем.

4.Запускается процесс inputtrap для зондирования устройств ввода. Он определяет, с какими аргументами необходимо запускать драйвер-администратор графического ввода devi-hirun и запускает его. Результат своей работы inputtrap сохраняет в

файле /etc/config/trap/input.имя_узла.

5.Запускается утилита fontsieuth, указывающая серверу шрифтов phfont, в каких каталогах находятся шрифты.

6.Затем запускаются процессы bkgdmgr (рисует фон рабочего стола), wmswitch (позволяет переключаться между открытыми окнами приложений, используя комбинацию клавиш

243

«Alt»-«Tab»), saver («хранитель экрана»). Кроме того, сам сервер Photon запускает оконный менеджер pwm и администратор рабочего стола shelf.

Утилиты конфигурирования. Компоненты Photon можно конфигурировать с помощью нескольких утилит. Для того чтобы изменить настройки оконного менеджера, используется утилита.

Вкладка Background утилиты pwmopts позволяет настраивать параметры администратора фона bkgdmgr.

Для настройки подсистемы шрифтов предназначена утили-

та fontadmin.

Эта программа позволяет задавать необходимые псевдонимы для инсталлированных шрифтов. Настройка администратора графического вывода io-grafics выполняется с помощью про-

граммы phgrafx.

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

Настройка мыши может выполняться с помощью утилиты

input-cfg.

Разрешить либо запретить удаленное подключение к локальной сессии Photon можно с помощью утилиты phrelaycfg.

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

7.10 Печать в ОС QNX

Традиционная система печати (lpd). Эта система широко известна в UNIX-подобных ОС. И, как следствие, достаточно хорошо документирована. Поэтому мы сделаем лишь краткий ее обзор.

Система печати lpd условно делится на три части:

1.Сервер печати (спулер) lpd.

2.Файл Конфигурации Принтеров /etc/printcap.

3.Клиентские утилиты lpr, lprq, lprrm, lprc.

244

Самой многофункциональной из всех утилит системы lpd является lprc. Она позволяет выполнять все то, что делают другие утилиты, плюс выполняет активизацию/деактивизацию принтеров, управляет очередью и делает другую полезную работу.

Утилита lpr выполняет постановку задания в очередь для печати. Утилитой lprq можно просматривать очередь заданий. Удалить задание из очереди можно утилитой lprrm.

Данная система достаточно старая, и многие поставщики ОС предлагают более удобные решения.

Собственная система печати QNX. Основой системы пе-

чати QNX является серверный процесс-администратор spooler. Назначение spooler — это обеспечение бесконфликтного доступа нескольких пользователей к контролируемому им устройству. Этот процесс автоматически запускается администратором нумерации устройств enum-devices. По умолчанию spooler контролирует доступ к параллельному порту /dev/par1. Если к параллельному порту подключить принтер, то spooler автоматически распознает его и путем зондирующих запросов получает параметры принтера.

В каталоге /etc/printers содержится несколько файлов конфигурации spooler для разных типов принтеров. При запуске spooler выполняет несколько операций:

Определяет тип принтера и выбирает соответствующий этому типу файл конфигурации.

Сравнивает свойства, указанные в файле конфигурации,

спараметрами принтера, полученными при его сканировании.

Регистрирует в пространстве имен префикс-каталогов /dev/printers/имя_принтера/. В этом каталоге создаются каталог spool/, файлы устройств phs, raw и файл, соответствующий типу принтера.

Создает каталог /var/spool/printers/имя_принтера.имя_хоста/. В этот каталог отображается содержимое /dev/printers/ имя_принтера/spool.

В каталог spool записывается файл с результирующими настройками принтера.

245

Когда пользователь выдает задание на печать, соответствующий файл помещается в каталог spool и spooler вызывает необходимые фильтры для обработки файла. Результатом обработки является файл в формате, понятном принтеру. Конечный файл посылается в устройство печати.

В составе дистрибутива ОС QNX поставляется несколько фильтров для наиболее популярных наборов принтеров. Кроме того, в состав ОС QNX входит Printer DDK (Driver Development Kit), представляющий собой подробно комментированный пример исходного кода фильтра с инструкцией для разработчиков.

Для управления заданиями можно воспользоваться фотоновской утилитой prjobs.

Вопросы для самопроверки

1.Какие механизмы существуют в ОС QNX для создания процессов?

2.Какие фазы проходит каждый процесс?

3.В каких состояниях могут находиться процессы?

4.Какими свойствами обладает обработчик прерываний?

5.Назовите назначение администратора ресурсов в ОС

QNX.

6.Приведите классификацию файловых систем ОС QNX.

7.Расскажите о реализации файловых систем в ОС QNX.

8.Для чего используются инсталляционные пакеты и репозитарии в ОС QNX?

9.Какие символьные устройства ввода/вывода существуют

вQNX?

10.Приведите структуру сетевой подсистемы ОС QNX.

11.Какие сетевые протоколы поддерживаются ОС QNX?

12.Что представляет собой технология FLEET?

13.Опишите технологию Jump Gate.

14.Как в ОС QNX реализован графический интерфейс пользователя.

15.Опишите процесс печати в ОС QNX.

246

8 КОНТРОЛЬНЫЕ РАБОТЫ

8.1 Контрольная работа № 1

Выполняется в виде электронного теста.

8.2 Контрольная работа № 2

При отсылке результатов контрольной работы, высылайте исполняемый файл и исходные тексты программы.

Вариант 1

1. Разработайте клиент-серверное приложение с использованием интерфейса прикладного программирования WinAPI или

POSIX:

1.Клиент должен иметь возможность приема команд от пользователя, используя интерфейс командной стро-

ки (не используйте меню или кнопки).

2.Клиент, получив команду, должен отправить ее серверу и ждать ответа. Получив ответ вывести его на экран.

3.Сервер, получив команду должен проверить ее на правильность ввода, если команда неверна, выдать клиенту сообщение об ошибке.

4.Сервер должен обрабатывать три команды: help (выдача помощи по командам), dir или ls (выдача файлов в текущей или какой-либо другой директории), type или cat (распечаткакакого-либо указанноготекстовогофайла).

2.Ответьте на вопросы:

1.Дайте определение системы реального времени.

2.Что представляет собой SCADA-система?

3.В чем отличие понятий процессов от потоков?

Вариант 2

1. Разработайте клиент-серверное приложение с использованием интерфейса прикладного программирования WinAPI или

POSIX:

247

1.Информационная система «Выборы». Предварительный подсчет голосов за кандидатов. Число голосов на каждом из 5-ти избирательных пунктов постепенно увеличивается. Центризбирком опрашивает избирательные пункты и выводит результат по каждому из кандидатов. На экране изображаются кандидаты и колво голосов по каждому из них. Если у первого больше всего голосов, то он рисуется выше других (не по росту, а по расположению на экране); если у третьего колво голосов меньше всех, то он рисуется ниже всех; соответственно второй выше третьего, но ниже первого. Все кандидаты разных цветов.

2.Написать консольное приложение-сервер, исполняющее роль избирательного участка, и оконное при- ложение-клиент, исполняющее роль Центризбиркома. Число голосов на серверах, растет по таймеру. Клиент, также по таймеру, опрашивает сервера.

2.Ответьте на вопросы:

1.КакиеосновныецелиопределяетстандартSCEPTRE?

2.В чем особенность системы RT-Linux?

3.Каие алгоритмы планирования реализованы в ОС

QNX Neutrino 6.3? Опишите их.

Вариант 3

1. Разработайте приложение с использованием интерфейса прикладного программирования WinAPI или POSIX:

1.Программа должна моделировать механизм адаптивной многозадачности.

2.Пользователь может задать: количество потоков, указав им различные приоритеты; время выполнения одного кванта времен; максимальное время выполнения каждого потока (при тестировании параметров учитывайте возможность восприятия работы программы человеком).

3.При старте механизма многозадачности на экран должна выводиться информация о потоках: состояние потока (выполняемый или невыполняемый), текущий и первоначальный приоритеты потока, время выполнения

248

(время выполнения можно реализовать условно с исполь- зованиеминкрементированиякакго-либо числа N).

4.Реализовать как текстовое, так и графическое представление информации о потоках (можно использовать символы псевдографики).

2.Ответьте на вопросы:

1.Назовите назначение администратора ресурсов в ОС

QNX.

2.Что означают термины система «жесткого реального времени» и система «мягкого реального времени»?

3.Приведите названия популярных зарубежных и отечественных SCADA-программ.

Вариант 4

1.Разработайте приложение с использованием интерфейса прикладного программирования WinAPI или POSIX:

1.Программа должна моделировать механизм спорадической многозадачности.

2.Пользователь может задать: количество потоков, указав им различные приоритеты; бюджет времени выполнения; время восстановления бюджета (при тестировании параметров учитывайте возможность восприятия работы программы человеком).

3.При старте механизма многозадачности на экран должна выводиться информация о потоках: состояние потока (выполняемый или невыполняемый), текущий и первоначальный бюджет потока, время выполнения (время выполнения можно реализовать условно с использованием инкрементирования какго-либо числа N).

4.Реализовать как текстовое, так и графическое представление информации о потоках (можно использовать символы псевдографики).

2.Ответьте на вопросы:

1.Дайте определение понятию механизма диспетчеризации.

2.Опишите стандарт POSIX 1003.1b.

3.Приведите основные аргументы за и против использования Windows NT в качестве ОСРВ.

249

Вариант 5

1.Разработайте приложение с использованием интерфейса прикладного программирования WinAPI или POSIX:

1.Программа должна моделировать механизмы многозадачности: FIFO, Round Robin, Приоритетная многозадачность.

2.Пользователь может задать: количество потоков, указав им различные приоритеты; квант времени выполнения (при тестировании параметров учитывайте возможность восприятия работы программы человеком).

3.При старте механизма многозадачности на экран должна выводиться информация о потоках: состояние потока (выполняемый или невыполняемый), приоритет, время выполнения (время выполнения можно реализовать условно с использованием инкрементирования какго-либо числа N).

4.Реализовать как текстовое, так и графическое представление информации о потоках (можно использовать символы псевдографики).

2.Ответьте на вопросы:

1.Какие формы межзадачного взаимодействия реализованы в ОС QNX?

2.Приведите классификацию файловых систем ОС

QNX.

3. Какие процессоры доминируют среди «промышленных компьютеров»?

Вариант 6

1. Разработайте приложение с использованием интерфейса прикладного программирования WinAPI или POSIX:

1.Программа должна моделировать проблему инверсии приоритетов.

2.В программе присутствуют три потока с разными приоритетами. Пользователь может в любой момент заблокировать или разблокировать любой из потоков.

250

3.Пользователь может отправить любой из потоков на использование некоторого ресурса либо отменить требования к ресурсу.

4.Реализовать как текстовое, так и графическое представление информации о состоянии потоков (можно использовать символы псевдографики).

2.Ответьте на вопросы:

1.Опишите спецификации PCI-Express.

2.Какие механизмы существуют для решения проблемы инверсии приоритетов?

3.Из каких основных частей состоит стандарт

OSEK/VDX?

Вариант 7

1. Разработайте клиент-серверное приложение с использованием интерфейса прикладного программирования WinAPI или

POSIX:

1. Система безопасности летательного аппарата. Система должна следить за температурой носовой части, передней кромки левого и правого крыла. Всего три датчика температуры. Датчик носовой части должен опрашиваться с частотой 4 Гц, датчики крыльев — 2 Гц. Датчик возвращает значение температуры в диа-

пазоне 0…65535 К.

2. Написать программы сервера, моделирующие датчики и клиента — системы безопасности. Пусть значения температуры изменяются по закону косинуса (в случае отсутствия библиотеки тригонометрических функций следует реализовать функцию косинуса с помощью разложения ряда) в заданном диапазоне.

3.Программа-клиент должна осуществлять опрос серверов и выводить на экран значение температуры в шесть столбцов (временная отметка, температура). Предусмотреть возможность отказа датчика, клиент не должен при этом блокироваться. Вместо отказавшего датчика в столбце должна выводиться –1.

4.При запуске должно быть три процесса сервера и один процесс клиент.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]