Что такое функционирование в «Реальном масштабе времени»
Индивидуальное задание выполняется только одно из
Download 1.86 Mb. Pdf ko'rish
|
Луканов А.С. Системы реального времени 2020
Индивидуальное задание выполняется только одно из пяти по номеру студента в журнале преподавателя. Выполнение индивидуального задания учитывается при получении «зачёта – автомата». ЗАДАНИЕ 1 Разработать приложение, состоящее из трех взаимодействующих процессов. Требуется написать три программных модуля: М1, М2, М3. На базе модуля М1 из shell запускается стартовый процесс Р1(М1). Процесс Р1 создает канал и, используя функцию семейства spawn*(), запускает процессы Р2(М2) и Р3(М3), передавая им в качестве параметра chid созданного канала. 149 Процесс Р2 создает свой канал, устанавливает соединение с каналом процесса Р1, отправляет ему сообщение о chid своего канала и переходит в состояние приема сообщений по созданному каналу. Процесс Р3 устанавливает соединение с каналом процесса Р1 и посылает ему запрос на получение pid процесса Р2 и chid его канала для присоединения к каналу процесса Р2. Получив ответ (pid и chid), присоединяется к каналу процесса Р2 и посылает сообщение "Р2 загружен". Процесс Р2, приняв сообщение от процесса Р3, добавляет к нему информацию "Р1 принял сообщение от Р2" и отправляет сформированное таким образом сообщение процессу Р1. Процесс Р1, получив сообщение от Р2, выдает его на экран терминала, посылает ответ "Р1 ОК" процессу Р2 и завершает работу (терминируется). Процесс Р2, получив ответ от Р1, выдает его на экран терминала, посылает ответ " Р2 ОК" процессу Р3 и завершает работу (терминируется). Процесс Р3, получив ответ от Р2, выдает его на экран терминала после чего выдает на терминал "Р3 ОК" и завершает работу (терминируется). ЗАДАНИЕ 2 Разработать приложение, состоящее из трех взаимодействующих процессов. Требуется написать три программных модуля: М1, М2, М3. На базе модуля М1 из shell запускается стартовый процесс Р1(М1). Процесс Р1 создает канал и, используя функцию семейства spawn*(), запускает процесс Р2(М2), передавая ему в качестве параметра chid созданного канала, и переходит в состояние приема сообщений от Р2 по своему каналу. Процесс Р2 создает свой канал и, используя функцию семейства spawn*(), запускает процесс Р3(М3), передавая ему в 150 качестве параметра chid созданного канала. Устанавливает соединение с каналом процесса Р1, отправляет ему сообщение о pid процесса Р3 и переходит в состояние приема сообщений по созданному каналу от Р3. Процесс Р3 создает свой канал, устанавливает соединение с каналом процесса Р2 и посылает ему сообщение "Р3 загружен". Получив ответ, посылает ему chid своего канала и переходит в состояние приема сообщений по своему каналу. Процесс Р2, приняв первое сообщение, отправляет его процессу Р1, получив ответ от Р1, принимает chid от процесса Р3, посылает ему ответ и передает chid процессу Р1. Далее выдает на терминал "Р2 загружен" и переходит в состояние приема сообщений по своему каналу от Р3. Процесс Р1, получив первое сообщение от Р2, выдает его на экран терминала, посылает ответ процессу Р2 и принимает второе сообщение, устанавливает соединение с каналом процесса Р3 и посылает по нему сообщение "stop", после ответа переходит в ожидание сообщения по своему каналу. Процесс Р3, получив "stop", отправляет его процессу Р2, печатает "stop Р3" и терминируется. Процесс Р2, получив "stop", отправляет его процессу Р1, печатает "stop Р2" и терминируется. Процесс Р1, получив "stop", печатает "stop Р1" и терминируется. ЗАДАНИЕ 3 Разработать приложение, состоящее из трех взаимодействующих процессов. Требуется написать три программных модуля: М1, М2, М3. На базе модуля М1 из shell запускается стартовый процесс Р1(М1). Процесс Р1 создает канал и, используя функцию семейства spawn*(), запускает процессы Р2(М2) и Р3(М3), передавая им в качестве параметра chid созданного канала, и переходит в ожидание сообщений по своему каналу. 151 Процесс Р2 создает свой канал, устанавливает соединение с каналом процесса Р1, отправляет ему сообщение о chid своего канала и переходит в состояние приема сообщений по созданному каналу. Процесс Р3 создает свой канал, устанавливает соединение с каналом процесса Р1, отправляет ему сообщение о chid своего канала и переходит в состояние приема сообщений по созданному каналу. Процесс Р1, приняв сообщение от процесса Р2 или Р3 о chid канала, устанавливает соединение и посылает по нему - "Р1 принял сообщение от Р?", принимает ответ и выдает его на терминал. После такого взаимодействия с Р2 и Р3, Р1 терминируется. Процесс Р?, получив сообщение от Р1, выдает его на экран терминала, посылает ответ "Р? ОК" процессу Р1 и завершает работу (терминируется). ЗАДАНИЕ 4 Разработать приложение, состоящее из пяти взаимодействующих процессов. Требуется написать три программных модуля: М1, М2, М3. На базе модуля М1 из shell запускается стартовый процесс Р1(М1). Процесс Р1, используя функцию семейства spawn*(), запускает процесс Р2(М2) с флагом P_NOWAIT и Р3(М2) с флагом P_WAIT. Процесс Р2 создает свой канал и, используя функцию семейства spawn*(), запускает процесс Р4(М3), передавая в качестве аргумента chid своего канала, и переходит в состояние приема сообщений по созданному каналу. Процесс Р3 создает свой канал и, используя функцию семейства spawn*(), запускает процесс Р5(М3), передавая в качестве аргумента chid своего канала, и переходит в состояние приема сообщений по созданному каналу. 152 Процесс Р?(М3) устанавливает соединение c каналом родительского процесса Р?(М2) и посылает сообщение "Р?-ОК", получив ответ , выдает его на терминал и терминируется Процесс Р3(М2), получив сообщение от Р?(М3), выдает его на экран терминала, посылает ответ "Р? ОК" процессу Р?(М3) и завершает работу (терминируется). Процесс Р1, возобновив свою работу, выдает на терминал сообщение "STOP" и терминируется. ЗАДАНИЕ 5 Разработать приложение, которое строится в виде цепочки процессов. Требуется написать два программных модуля: М1, М2. На базе модуля М1 из shell запускается стартовый процесс Р1(М1), которому передается в качестве параметра длина цепочки N (количество процессов). Процесс Р1 создает свой канал и, используя функцию семейства spawn*(), запускает процесс Р2(М2), передавая в качестве аргумента длину цепочки N, chid своего канала и переходит в ожидание прихода по нему сообщения, после чего отвечает и терминируется. Процесс Р2(М2) устанавливает соединение с каналом родительского процесса и, если N не равно 0, создает свой канал и, используя функцию семейства spawn*(), запускает следующий процесс Р?(М2), передавая ему в качестве аргумента N-1 и chid своего канала, и переходит в состояние приема сообщений по своему каналу. Если N=0, то посылает предыдущему процессу сообщение "Р2-ОК" и, получив ответ, выдает его на экран и терминируется. Аналогично ведет себя каждый вновь запущенный процесс цепочки. |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling