- •Министерство образования и науки Украины
- •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);
каталог будет обозначен символом d.
обычный файл будет обозначен символом -.
символьное устройство будет обозначено символом с.
блочное устройство будет обозначено символом b.
именованные специальные устройства будут обозначены символом n.
FIFO-файл будет обозначен символом f.
символическая ссылка обозначается символом l, при этом к имени файла добавляется стрелка с именем того файла на который сделана ссылка.
Жесткая ссылка обозначает ся так же, как файл, на который она ссылается, счетчик ссылок при этом будет иметь значение больше 1.
Наиболее часто употребляемые из них: -а – выводить все файлы (в том числе и скрытые); -F – выводить символ информации о типе файла (каталог – /, выполняемый – *); -l – выводить подробную информацию о файлах. По команде ls <имя_файла> выводится информация только для указанного файла.
При использовании флага -l на экран выводится примерно следующее:
$ ls -l
drwxrwxr-x 2 ncs ncs 4096 jan 1 13:44 backup
-rw-rw-r-- 5 ncs ncs 25 dec 7 15:01 file1
-rw-rw-r-- 5 ncs ncs 123 dec 7 15:02 file2
В первой колонке приводятся права доступа к файлам, во второй – количество связей файла, в третьей – сведения о владельце файла, в четвертой – имя группы, которой принадлежит файл, пятая показывает размер файла в байтах, шестая – дату и время его создания, седьмая – собственно имя файла.
Первая колонка состоит из четырех полей:
- rwx rwx rwx
Первое поле показывает тип файла (- – обыкновенный файл, b – файл, представляющий блочное устройство, c – файл, представляющий символьное устройство, d – каталог, l – символическая связь). Три следующих поля указывают права доступа к файлу по чтению, записи и запуска на выполнение соответственно. Второе поле указывает права владельца файла, третье – права группы владельцев файла, а четвертое – права всех остальных пользователей. Каждое из этих полей содержит по три символа. Например, последовательность rwx во втором поле означает, что владелец файла имеет права на чтение, запись и выполнение данного файла; последовательность rw- в третьем поле означает, что пользователи из группы владельцев файла имеют права на чтение и запись файла; последовательность r-- в четвертом поле означает, что все остальные пользователи имеют право только на чтение файла. Флаги r и x в применении к каталогам означают, что данная группа пользователей имеет право на просмотр содержимого каталога, флаг w – на право создавать файлы в данном каталоге, флаг x – право входить в каталог.
3.6.3. Создание новых каталогов
Новые каталоги создаются с помощью mkdir
Синтаксис: mkdir <dir1> ... <dirN>
где <dir1> ... <dirN> создаваемые каталоги.
Пример:
mkdir /home/stud/test создает каталог test в каталоге /home/stud.
3.6.4. Копирование файлов
Копирование файлов осуществляется командой cp (CoPy):
Синтаксис: cp <file1> ... <fileN> <destination>
где <file1> ... <fileN> имена копируемых файлов, а <destination> файл или каталог, в который копируют.
Пример:
cp ../frog joe копирует файл ../frog в файл или каталог joe.
/home/stud/foo# cp /etc/termcap .
/home/stud/foo# cp /etc/shells .
/home/stud/foo# ls -F
shells termcap
/home/stud/foo# cp shells bells
/home/stud/foo# ls -F
bells shells termcap
/home/stud/foo#
Команда cp копирует файлы, перечисленные в командной строке, в файл или каталог, указанный последним аргументом. Несколько файлов одной командой cp можно скопировать только в каталог, а в файл можно скопировать только один файл. Обратите внимание на то, как мы используем каталог ``.''для ссылки на текущий каталог.