Категории: ДомЗдоровьеЗоологияИнформатикаИскусствоИскусствоКомпьютерыКулинарияМаркетингМатематикаМедицинаМенеджментОбразованиеПедагогикаПитомцыПрограммированиеПроизводствоПромышленностьПсихологияРазноеРелигияСоциологияСпортСтатистикаТранспортФизикаФилософияФинансыХимияХоббиЭкологияЭкономикаЭлектроника |
Блок-ориентированные специальные файлыБлок-ориентированные специальные файлы (очень часто их называют "блочными устройствами") — файлы, предназначенные для того, чтобы скрыть от приложений физические характеристики аппаратуры. Слово "блочный" говорит о том, что обмен данными осуществляется блоками по несколько байт (например, при работе с жестким диском обычный размер блока — 512 байт). В QNX блок-ориентированные специальные файлы создаются не на диске, а в оперативной памяти. Они создаются при старте соответствующих драйверов. Например, драйвер EIDE создает блок-ориентированные файлы: /dev/hd0 — для доступа к первому жесткому диску, /dev/hdl —для доступа ко второму жесткому диску и т.д. Байт-ориентированные специальные файлы Байт-ориентированные специальные файлы (очень часто их называют "символьными устройствами") — это файлы, аналогичные блочным устройствам, с той разницей, что символьные устройства обеспечивают интерфейс к аппаратуре, осуществляющей посимвольный ввод/вывод. К такой аппаратуре относятся, например, последовательный порт, сетевая карта и т. п. Так же как блочные устройства, байт-ориентированные специальные файлы создаются драйверами при запуске. Например, драйвер Ethernet-карты создает файл /dev/en0. Пример или «шоу-программирования» Выведем сообщение “Hello!” в окне терминала ttyp0. Для этого откройте окно терминала. Далее откройте в блокноте файл /dev/ttyp0. Запишете туда “Hello!” и сохраните. Результат наблюдаем в окне терминала. Указания к выполнению лабораторной работы Для простоты реализации отображения на экране дисплея хода выполнения каждого из потоков рекомендуется способ, предложенный в программе-примере – использование окна терминалов. В программе-примере терминал ttyp2 используется для отображения хода выполнения главного потока программы (main), а терминалы ttyp0 и ttyp1 для отображения порождаемых потоков. Помимо изменения номеров терминалов в исходном коде, необходимо открыть окна терминалов, чтобы увидеть результат выполнения на экране.
1. Для набора текста программы и её компиляции необходимо запустить IDE: Launch > QNX Momentics 6.3.0 > Integrated Development Environment.
2. Создание нового проекта: File->New. 3. Программа будет написана на языке Си (без использования объектов и классов). Си++ не потребуется. Необходимо выбрать QNX C Project и нажать OK.
4. В поле Name необходимо ввести имя проекта. 5. Выбор процессора, под который будет компилироваться программа.
6. В рабочем пространстве появится папка проекта. Файл laba.c содержит тестовый код, выводящий на консоль “Welcome to the Momentics IDE”. Этот код уже можно компилировать: Project->Rebuild All. Rebuild не запускается автоматически при нажатии Run.Если запустить Rebuild, не сохранив произведённые изменения, будет скомпилирован старый код. Каждый раз, когда были произведены изменения в коде программы, для просмотра результата их выполнения, необходимоСохранить, затем выполнить Rebuild All и только после этого запускать программу. 7а. Программа откомпилирована, собрана и готова к выполнению. Первый способ запуска программы – из IDE: Run->Run. 8а. Необходимо выбрать рабочую директорию проекта, затем – исполняемый файл.
9а. Запуск программы нажатием на клавишу Run. 10а. Результат выполнения.
7b. Второй способ запуска программы – из окна терминала: Launch->Utilites->Terminal.
8b. Необходимо перейти в директорию проекта и запустить программу (используется относительный путь « ./»)
Задание на лабораторную работу Цель работы Изучить операционную систему реального времени QNX, изучить встроенную расширяемую среду разработки Eclipse (Integrated Development Environment, далее IDE), изучить уникальный, свойственный только ОС QNX механизм взаимодействия/синхронизации потоков. Алгоритм выполнения 1. Описать логику работы схемы, приведенной в п.2.3. 2. Написать, работающую по схеме, используя программу-образец, работающую по схеме п.4.1. Если по заданию получается число пар обменов синхронными сообщениями между клиентом и сервером `>1`, это означает, что каждый из синхронных обменов должен происходить по схеме п.2.3. 3. Для отображения выполнения потоков программы следует использовать окна терминалов: одно для главного потока программы (main), 2 для всех порождаемых потоков, аналогично тому, как это сделано в примере. Номера терминалов для вывода результатов следует брать по правилу: ttyp(NN), ttyp(NN+1), ttyp(NN+2), где NN=(№-варианта) mod 9. Варианты заданий находятся в п.2.4. 4. Число пар обменов синхронными сообщениями между потоками клиента и сервера задаётся значением ZZ, где ZZ=(№-варианта) mod 3. 5. Длины бегущих строк (количество значков) задаются по правилам: T3 = (№-варианта) +10, T4 = (№-варианта) +5, МM = (№-варианта) + 8 Буфер для хранения информации о значке, выводимом в окно терминала, задаётся глобальной переменной и используется всеми потоками. Для синхронизации доступа к буферу используется мьютекс. Значки отличаются друг от друга числом символов в них. Следовательно, размерность буфера следует выбирать, исходя из максимального числа символов в значке.При том между значками, выводящимися в окна терминалов, не должно быть пробелов.Для этого придётся отказаться от фиксированной размерности буфера. |
|
Последнее изменение этой страницы: 2016-08-11 lectmania.ru. Все права принадлежат авторам данных материалов. В случае нарушения авторского права напишите нам сюда... |