- •Министерство образования и науки Украины
- •1. Определение системам реального времени
- •1.1. Основные понятия
- •1.2. Срв
- •1.3. Классификация срв
- •1.4. Структура срв
- •Основные требования к срв и их особенности
- •1.4.1. Ос
- •1.4.2. Основные архитектурные решения ос
- •1.4.3. Основные концепции ос
- •Прерывания
- •Системные вызовы
- •Файловая система
- •Процессы
- •Нити (потоки)
- •Понятие ресурса
- •1.5. Аппаратные среды срв
- •1.5.1. Мультипрограммная среда
- •Состояния процесса (см. Рисунок 4.).
- •1.5.2. Симметричная мультипроцессорная среда (рис. 5)
- •1.5.3. Распределенная среда (рис. 6)
- •1.6. Конфигурации клиент-серверных систем (рис.7.)
- •1.7. Средства ввода-вывода срв
- •2.1. Версии qnx
- •2.2. Posix-совместимость
- •2.3. Архитектура микроядра qnx
- •2.3.1. Микроядро
- •2.3.2. Системные процессы
- •2.3.3. Системные и пользовательские процессы
- •2.3.4. Драйверы устройств
- •2.3.5. Межпроцессное взаимодействие
- •2.3.6. Сеть qnx
- •2.4. Файлы и файловая система
- •2.4.1. Типы файлов
- •2.4.2. Жесткие ссылки
- •2.4.3. Символические ссылки
- •2.4.4. Named Special Device — именованные специальные устройства
- •2.4.5. Именованные программные каналы (fifo) (Именованный канал)
- •2.5. Структура файловой системы qnx
- •2.6. Концепция прав доступа
- •3. Начало работы
- •3.1. Интерфейс командной строки
- •3.2. Консоль командной строки
- •3.3. Соглашения по работе с командной строкой
- •3.4. Знакомство с shell
- •3.5. Обращение к домашнему каталогу
- •3.6. Базовые команды
- •3.6.1. Изменение текущего каталога
- •3.6.2. Просмотр содержимого каталогов
- •Жесткая ссылка обозначает ся так же, как файл, на который она ссылается, счетчик ссылок при этом будет иметь значение больше 1.
- •3.6.3. Создание новых каталогов
- •3.6.4. Копирование файлов
- •3.6.5. Перемещение файлов
- •3.6.6. Удаление файлов
- •3.6.7. Удаление каталогов
- •3.6.8. Просмотр содержимого файлов
- •3.6.9. Конкатенация (слияние) и просмотр файлов
- •3.6.10. Получение оперативной помощи
- •4. Объектно-ориентированное программирование
- •4.1. Системы программирования
- •4.2. Создание приложения
- •4.3. Средства отладки программ
- •5. Архитектура ос qnx
- •5.1. Типы процессов
- •5.2. Механизмы микроядра
- •5.3. Диспетчеризация потоков
- •5.4. Администратор процессов
- •5.5. Управление памятью
- •5.6. Управление пространством путевых имен
- •5.7. Пространство путевых имен
- •5.7.1. Файловая система qnx
- •5.7.2. Виртуальные устройства
- •Устройство /dev/null
- •Устройство /dev/zero
- •Устройство /dev/full
- •Устройства генерирования случайных чисел
- •5.8. Программы, процессы, нити
- •5.9. Свойства процессно-нитиевой структуры прв
- •5.10. Программный интерфейс qnx
- •5.10.1. Системные вызовы и функции стандартных библиотек
- •5.10.2. Обработка ошибок
- •5.11. Формальные параметры функции main
- •5.12. Разграничение доступа к файлам
- •5.13. Функции базового ввода/вывода
- •5.13.1. Открытие файла
- •5.13.2. Дублирование дескриптора файла
- •5.13.3. Доступ к файлу
- •6. Функции управления файловой системой
- •6.1. Смена корневого каталога
- •6.2. Смена текущего каталога
- •6.3. Создание каталога
- •6.4. Удаление каталога
- •6.5. Создание жесткой связи
- •6.6. Создание символической связи
- •6.7. Чтение символической связи
- •6.8. Переименование файла
- •6.9. Удаление файла
- •7. Микроядро
- •7.1. Запуск процессов
- •7.2. Запуск процесса из shell
- •7.3. Программный запуск процессов
- •7.3.1. Функция system()
- •7.3.2. Функции семейства exec*()
- •7.3.3. Функции семейства spawn*()
- •7.3.4. Функция fork()
- •7.3.5. Функция vfork()
- •7.4. Организация взаимодействия между процессами
- •7.5. Создание и удаление каналов Создание канала.
- •Удаление канала
- •7.6. Установление и удаление соединений с каналом Установление соединения
- •Int ConnectAttach(uint32_t nd, pid_t pid, int chid, unsigned index, int flags);
- •Разрыв соединения
- •Int ConnectDetach(int coid);
- •7.7. Передача сообщений
- •7.7.1. Посылка сообщения
- •IntMsgSend(int coid, constvoid* smsg, int sbytes, void* rmsg, int rbytes);
- •7.7.2. Прием сообщения
- •Int MsgReceive(int chid, void *msg, int bytes, struct _msg_info *info);
- •7.7.3. Посылка ответа
- •Int MsgReply(int rcvid,int status,const void* msg, int size);
- •7.7.4. Сценарии ответов
- •7.7.5. Управление сообщениями
- •7.7.6. Управление приемом сообщений
- •7.7.7. Управление передачей ответа
- •Int MsgSendv(int coid, const iov_t* siov, //Массив iov сообщения int sparts, //Количество iov сообщения const iov_t* riov, //Массив iov ответа int rbytes); //Количество iov ответа
- •Int MsgReceivev(int chid, const iov_t* riov, //Массив iov буфера int sparts, //Количество iov буфера struct_msg_info* riov);
2.6. Концепция прав доступа
Поскольку QNX – многопользовательская система, чтобы защитить файлы каждого пользователя от дурного влияния других пользователей, QNX поддерживает механизм, известный, как система прав доступа к файлам. Этот механизм позволяет каждому файлу приписать конкретного владельца, а также совместно использовать файлы нескольким пользователям и группам пользователей. Если пользователь пожелает, он может закрыть доступ к своим файлам так, что никто другой не сможет к ним подступиться. Однако в большинстве систем по умолчанию другим пользователям разрешается читать ваши файлы, но запрещается изменять или удалять.
Как объяснялось выше, каждый файл имеет конкретного владельца. Но, кроме того, файлами, также владеют конкретные группы пользователей, которые определяются при регистрации пользователей в системе. Каждый пользователь становится членом как минимум одной группы пользователей. Системный администратор может предоставить пользователю доступ более, чем к одной группе.
Права доступа подразделяются на три типа: чтение (read), запись (write) и выполнение (execute). Эти типы прав доступа могут быть предоставлены трем классам пользователей: владельцу файла, группе, в которую входит владелец, и всем (прочим) пользователям.
Разрешение на чтение позволяет пользователю читать содержимое файлов, а в случае каталогов - просматривать перечень имен файлов в каталоге. Разрешение на запись позволяет пользователю писать в файл и изменять его. Для каталогов это дает право создавать в каталоге новые файлы и каталоги, или удалять файлы в этом каталоге. Наконец, разрешение на выполнение позволяет пользователю выполнять файлы (как бинарные программы, так и командные файлы). Разрешение на выполнение применительно к каталогам означает возможность выполнять команды вроде cd.
Важно заметить, что права доступа, которые имеет файл зависят также от прав доступа к каталогу, в котором этот файл находится, то есть, другие пользователи не смогут добраться к файлу, если у них не будет прав на чтение и выполнение каталога, в котором находится файл.
Другими словами, чтобы иметь доступ к файлу, вы должны иметь доступ ко всем каталогам, лежащим на пути от корня к этому файлу, а также разрешение на доступ собственно к этому файлу.
Обычно файлам устанавливается защита, которая позволяет другим пользователям читать файлы, но ни коим образом их не менять. Каталогам обычно устанавливаются права доступа так, что позволяет другим пользователям перемещаться по каталогам, но ничего в них не трогать и не записывать.
3. Начало работы
QNX предоставляет пользователю для управления операционной системой два вида пользовательских интерфейсов: консоль командной строки и графический пользовательский интерфейс (GUI). При работе в графике командная строка все равно доступна посредством программы псевдотерминала pterm.
Графический интерфейс обеспечивается запуском некоторой оболочки, имеющейся в файловой системе. В настоящее время инсталляция QNX 6 включает в свой состав графическую оболочку Photon. После установки операционной системы Photon запускается автоматически при запуске QNX. Вы оказываетесь в рабочем пространстве (workspace) графической оболочки Photon. Пользователь регистрируется в системе, используя средства графического интерфейса Photon. Как работать в графической оболочке, интуитивно понятно. Снизу находится панель задач, в левой ее части находится кнопка Launch. При нажатии кнопки Launch появляется меню, позволяющее вызывать различные прикладные программы. На рабочем столе GUI Photon справа находится панель инструментов быстрого запуска. На ней по умолчанию располагаются кнопки таких утилит, как виртуальный терминал (pterm), менеджер файлов (file manager) и т.д. Весь набор утилит Photon располагается в его системных каталогах, и они могут быть явно запущены.
В правой части экрана находится меню быстрого запуска приложений — Shelf. Следует обратить внимание на следующие программы:
П Photon Terminal (pterm) — штатный псевдотерминал, позволяющий работать с инструментами командной строки (в том числе, с нашим старым знакомым vi);
Helpviewer — программа доступа к штатной электронной до кументации. Надо сказать, что в составе QNX поставляется достаточно обширная и подробная документация;
Photon File Manager (pfm) — штатный файловый менеджер. Для любителей Norton Commander есть продукт "третьего" производителя mqc (MiShell QNX Commander) — аналог Midnight Commander для Linux.
Чтобы отказаться от услуг GUI Photon и перейти в режим консоли командной строки, пользователь должен сразу, не регистрируясь, завершить работу GUI Photon, выбрав из меню завершения опцию выхода в консоль командной строки. При необходимости возврата в Photon требуется с консоли выполнить команду
# ph