Что такое функционирование в «Реальном масштабе времени»


Индивидуальное задание выполняется только одно из


Download 1.86 Mb.
Pdf ko'rish
bet70/72
Sana19.04.2023
Hajmi1.86 Mb.
#1362511
TuriУчебное пособие
1   ...   64   65   66   67   68   69   70   71   72
Bog'liq
Луканов А.С. Системы реального времени 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-ОК" и, получив ответ, выдает его на экран и 
терминируется. 
Аналогично ведет себя каждый вновь запущенный процесс 
цепочки. 


153 

Download 1.86 Mb.

Do'stlaringiz bilan baham:
1   ...   64   65   66   67   68   69   70   71   72




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling