Основные механизмы взаимодействия процессов на примере средств, предоставляемых операционной системой QNX. Системные процессы, микроядро и драйверы устройств. Теоретические сведения, текст программы, последовательность действий. Сервер, создание канала.
При низкой оригинальности работы "Основы применения операционной системы реального времени QNX", Вы можете повысить уникальность этой работы до 80-100%
Комплекс лабораторных работ содержит 33 с., 8 рис., 7 источников.Главная обязанность операционной системы состоит в управлении ресурсами компьютера. Приложения реального времени, например, полагаются на способность операционной системы обрабатывать многочисленные события в пределах ограниченного интервала времени. Чем быстрее реагирует операционная система, тем большее пространство для маневра имеет приложение реального времени в пределах жестких временных рамок. Она обеспечивает все неотъемлемые составляющие системы реального времени: многозадачность, диспетчеризацию программ на основе приоритетов и быстрое переключение контекста [2].QNX состоит из небольшого ядра, координирующего работу взаимодействующих процессов [3].В некоторых операционных системах на него возлагается так много функций, что ядро, по сути, заменяет всю операционную систему! Во-первых, как и следует ядру реального времени, ядро QNX имеет очень маленький размер.Все услуги операционной системы, за исключением тех, которые выполняются ядром, в QNX предоставляются через стандартные процессы. Типичная конфигурация QNX имеет следующие системные процессы: · Менеджер процессов (Proc); Микроядро QNX отвечает за выполнение следующих функций: · связь между процессами - Микроядро управляет маршрутизацией сообщений; оно также поддерживает и другие формы IPC сигналы, флаги; · сетевой интерфейс низкого уровня - Микроядро осуществляет доставку всех сообщений, предназначенных для процессов на других узлах сети;Системные процессы практически ничем не отличаются от любых написанных пользователем программ - они не имеют какого-либо скрытого или особого интерфейса, недоступного пользовательским процессам. Так как большинство услуг операционной системы предоставляются стандартными процессами QNX, то расширение операционной системы требует всего лишь написания новой программы, обеспечивающей новую услугу! Фактически, граница между операционной системой и прикладной программой может быть очень размыта. Единственный критерий, по которому мы можем отличить прикладные процессы и системные сервисные процессы, состоит в том, что процесс операционной системы управляет каким-либо ресурсом в интересах прикладного процесса.Драйверы устройств - это процессы, которые являются посредниками между операционной системой и устройствами и избавляют операционную систему от необходимости иметь дело с особенностями конкретных устройств. Так как драйверы запускаются как обычные процессы, добавление нового драйвера в QNX не влияет на другие части операционной системы. После запуска и завершения процедуры инициализации, драйвер может выбрать один из двух вариантов поведения: · стать расширением определенного системного процесса; В типичной для многозадачной системы реального времени ситуации, когда несколько процессов выполняются одновременно, операционная система должна предоставить механизмы, позволяющие им общаться друг с другом. Связь между процессами (Interprocess communication, сокращенно IPC) является ключом к разработке приложений как совокупности процессов, в которых каждый процесс выполняет отведенную ему часть общей задачи.В простейшем случае локальная сеть обеспечивает разделяемый доступ к файлам и периферийным устройствам для нескольких соединенных между собой компьютеров. QNX идет гораздо дальше этого простейшего представления и объединяет всю сеть в единый, однородный набор ресурсов.2.1 Лабораторная работа №1 «Простейший пример»Минимальный набор действий, необходимый для демонстрации примера программы для QNX: Набрать текст программы. Откомпилировать программу. Запустить программу на исполнение. Текст программы можно набрать во встроенном редакторе, или взять готовый текстовый файл.#include int main(void)Создаем текстовый файл программы..profile lab1 lab3 lab5Один разработчик ПО, используя только единственный поток, может реализовать те же самые функциональные возможности, что и другой, использующий пять потоков. Теперь обратим внимание на функции, предназначенные для работы с потоками и процессами. Любой поток может осуществить запуск процесса; единственные налагаемые здесь ограничения вытекают из основных принципов защиты (правила доступа к файлу, ограничения на привилегии и т. д.). Рассмотрим некоторые из функций, которые обеспечивает для запуска других процессов (или подмены одного процесса другим): · system(); Любой поток может создать другой поток в том же самом процессе; на это не налагается никаких ограничений (за исключением объема памяти, конечно!) Наиболее общий путь реализации этого - использование вызова функций pthread_create(): #include int int pthread_create (pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);#include pthread_t thread_id1; void * long_thread1(void *notused) } void * long_thread2(void *notused) pthread_create(&thread_id1, NULL, long_thread1, NULL); pthread_create(&thread_id2, NULL, long_thread2, NULL);В программе создаются и запускаются на исполнение два потока.
План
СОДЕРЖАНИЕ
ВВЕДЕНИЕ
1. СТУКТУРНАЯ ОРГАНИЗАЦИЯ ОСРВ QNX
1.1 Архитектура микроядра системы QNX
1.1.1 Настоящее ядро
1.1.2 Системные процессы
1.2 Микроядро
1.3 Системные и пользовательские процессы
1.4 Драйверы устройств
1.5 Связь между процессами (IPC)
1.6 QNX как сеть
2. КОМПЛЕКС ЛАБОРАТОРНЫХ РАБОТ
2.1 Лабораторная работа №1 «Простейший пример»
2.1.1 Теоретические сведения
2.1.2 Текст программы
2.1.3 Последовательность действий
2.1.4 Результаты
2.2 Лабораторная работа №2 «Процессы и потоки»
2.2.1 Теоретические сведения
2.2.2 Текст программы
2.2.3 Последовательность действий
2.2.4 Результаты
2.3 Лабораторная работа №3 «Обмен сообщениями»
2.3.1 Теоретические сведения
2.3.2 Текст программы
2.3.3 Последовательность действий
2.3.4 Результаты
2.4 Лабораторная работа №4 «Таймауты»
2.4.1 Теоретические сведения
2.4.2 Текст программы
2.4.3 Последовательность действий
2.4.4 Результаты
2.5 Лабораторная работа №5 «Барьеры»
2.5.1 Теоретические сведения
2.5.2 Текст программы
2.5.3 Последовательность действий
2.5.4 Результаты
2.6 Лабораторная работа №6 «Условные переменные»
2.6.1 Теоретические сведения
2.6.2 Текст программы
2.6.3 Последовательность действий
2.6.4 Результаты
ЗАКЛЮЧЕНИЕ
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
ОПРЕДЕЛЕНИЯ, ОБОЗНАЧЕНИЯ И СОКРАЩЕНИЯ
Вывод
# cd..
# ls
. .lastlogin .ph a.out lab2 lab4
.. .profile lab1 lab3 lab5
# cd lab1
# ls
. .. myfirst.c
# gcc myfirst.c
# ls
. .. a.out myfirst.c
# `pwd`/a.out
Hello World
#
2.2 Лабораторная работа №2 «Процессы и потоки»# gcc pthread.c
# `pwd`a.out
Prog threads PID 852000
Eto pervii potok, TID 0 - N povtora 0
Eto vtoroi potok, TID 0 - N povtora 0
Eto vtoroi potok, TID 3 - N povtora 1
Eto pervii potok, TID 2 - N povtora 1
Eto vtoroi potok, TID 3 - N povtora 2
Eto vtoroi potok, TID 3 - N povtora 3
Eto pervii potok, TID 2 - N povtora 2
Eto vtoroi potok, TID 3 - N povtora 4
Eto pervii potok, TID 2 - N povtora 3
Eto pervii potok, TID 2 - N povtora 4
#
2.3 Лабораторная работа №3 «Обмен сообщениями»
Вы можете ЗАГРУЗИТЬ и ПОВЫСИТЬ уникальность своей работы