Глобальные переменные не использовать! 6 страница
− завершает свою работу.
Написать программы для консольного процесса Boss и консольных процессов Parent, Child. Для моделирования передачи сообщений ввести специальные события, которые обозначают любые 4-е цифры и конец сеанса для процессов Parent и Child
ПроцессBoss:
− запрашивает у пользователя количество процессов Parent и количество процессов Child, которые он должен запустить;
− запрашивает кол-во сообщений, отправленных Parent и Child
− запускает заданное количество процессов Parent, Child;
− отправляет сообщения для процессов Parent, Child Отправить сообщение может только трём процессам из всех процессов Child и Parent, передача остальных сообщений от других процессов должна блокироваться с помощью мьютексов;
− завершает свою работу.
ПроцессParent:
− получает сообщение, от процесса Boss и выводит его на консоль;
− завершает свою работу.
ПроцессChild:
− получает сообщение, от процесса Boss и выводит его на консоль; завершает свою работу.
4. Написать программы для консольного процесса Boss (Резидент) и консольных процессов Scout (Шпион).
Для моделирования передачи сообщений ввести специальные события, которые обозначают любые 4-е цифры.
ПроцессBoss:
− запрашивает у пользователя количество процессов Scout, которые он должен запустить;
− запрашивает у пользователя пароль (3 цифры);
− запускает заданное количество процессов Scout;
− принимает от каждого процесса Scout сообщение и выводит его на консоль в одной строке. Принимать сообщение может только от трёх процессов, передача остальных сообщений от других процессов должна блокироваться;
− если приходит сообщение, с цифрой не из пароля, то выводит на консоль текст "ошибка";
− завершает свою работу.
ПроцессScout:
− запрашивает с консоли сообщение, состоящее из цифр, и передает их (по одному) процессу Boss;
− завершает свою работу.
5.Написать программы для консольного процесса Boss и консольных процессов Parent, Child. Для моделирования передачи сообщений ввести специальные события, которые обозначают «А» , «В» и конец сеанса для процессов Parent и Child.
ПроцессBoss:
− запрашивает у пользователя количество процессов Parent и количество процессов Child, которые он должен запустить;
− запускает заданное количество процессов Parent, Child;
− запрашивает кол-во сообщений, полученных от Parent или Child
− принимает от каждого процесса Parent, Child сообщение и выводит сообщение и кто его отправил на консоль в одной строке. Принимать сообщение может только от одного процесса Child и одного процесса Parent, передача остальных сообщений от других процессов должна блокироваться с помощью мьютексов;
− завершает свою работу.
ПроцессParent:
− запрашивает с консоли сообщения, состоящее из «А» и передает их (по одному) процессу Boss;
− завершает свою работу.
ПроцессChild:
− запрашивает с консоли сообщения, состоящее из «В» » и передает их (по одному) процессу Boss;
− завершает свою работу.
6.Написать программы для консольного процесса Administrator и консольных процессов Reader и Writer.
Для моделирования передачи сообщений ввести специальные события, которые обозначают сообщение “A”,сообщение “В”, и конец сеанса для процессов Reader и Writer.
Одновременно принимать и отправлять сообщения могут только два процесса Writer и два процесса Reader, передача остальных сообщений от других процессов должна блокироваться с помощью мьютексов;
Процесс Administrator:
− запрашивает у пользователя количество процессов Writer( Reader);
− запрашивает у пользователя количество отправленных (полученных) сообщений для процессов Writer (Reader);
− запускает заданное количество процессов Reader и Writer;
− принимает от каждого процесса Writer сообщение и выводит на консоль, затем отправляет его процессу Reader;
− принимает от каждого процесса Reader и Writer сообщение о завершении сеанса и выводит его на консоль в одной строке;
− завершает свою работу.
ПроцессWriter:
− запрашивает с консоли сообщения, состоящее из “A" , “В", и передает их (по одному) процессу Administrator;
− передает сообщение о завершении сеанса процессу Administrator;
− завершает свою работу.
ПроцессReader:
− принимает сообщение от процесса Administrator;
− выводит на консоль сообщение;
− передает сообщение о завершении сеанса процессу Administrator;
− завершает свою работу.
7.Написать программы для консольного процесса Boss и консольных процессов Parent, Child. Для моделирования передачи сообщений ввести специальные события, которые обозначают «А» , «В», «С» , «D» и конец сеанса для процессов Parent и Child.
ПроцессBoss:
− запрашивает у пользователя количество процессов Parent и количество процессов Child, которые он должен запустить;
− запускает заданное количество процессов Parent, Child;
− запрашивает количество сообщений, принятых от Parent или Child
− принимает от каждого процесса Parent, Child сообщение и выводит сообщение и кто его отправил на консоль в одной строке. Принимать сообщение может только от двух процессов Child и одного процесса Parent, передача остальных сообщений от других процессов должна блокироваться с помощью мьютексов;
− завершает свою работу.
ПроцессParent:
− запрашивает с консоли сообщения, состоящее из «А» , «В» и передает их (по одному) процессу Boss;
− завершает свою работу.
ПроцессChild:
− запрашивает с консоли сообщения, состоящее из «С», «D» и передает их (по одному) процессу Boss;
− завершает свою работу.
8. Написать программы для консольного процесса Administrator и консольных процессов Reader и Writer.
Для моделирования передачи сообщений ввести специальные события, которые обозначают сообщение “A", сообщение “В", и конец сеанса для процессов Reader и Writer.
Одновременно принимать и отправлять сообщения могут только один процесс Writer и один процесс Reader, передача остальных сообщений от других процессов должна блокироваться с помощью мьютексов.
ПроцессAdministrator:
− запрашивает у пользователя количество процессов Reader и Writer, которые он должен запустить;
− запрашивает у пользователя количество отправленных сообщений для процесса Writer и количество принятых сообщений для процесса Reader(соответствие сообщений проверить и подкорректировать по формуле);
− запускает заданное количество процессов Reader и Writer;
− принимает от каждого процесса Reader и Writer сообщение о завершении сеанса и выводит его на консоль в одной строке.
− завершает свою работу.
ПроцессWriter:
− запрашивает с консоли сообщения, и передает их (по одному) процессу Reader;
− передает сообщение о завершении сеанса процессу Administrator;
− завершает свою работу.
ПроцессReader:
− принимает сообщение от процесса Writer;
− выводит на консоль сообщение;
− передает сообщение о завершении сеанса процессу Administrator;
− завершает свою работу.
9. Написать программы для консольного процесса Boss и консольных процессов Employee. Для моделирования передачи сообщений ввести специальные события, которые «0» , «1», «2», «3» и конец сеанса для процессов Employee .
ПроцессBoss:
− запрашивает у пользователя количество процессов Employee, которые он должен запустить;
− запускает заданное количество процессов Employee;
− принимает от каждого процесса Employee сообщение и выводит его на консоль в одной строке. Принимать сообщение может только от трёх процессов, передача остальных сообщений от других процессов должна блокироваться с помощью мьютексов;
− завершает свою работу.
ПроцессEmployee:
− запрашивает с консоли сообщения, состоящее из «0» , «1», «2», «3», конец сеанса работы и передает (по одному) его процессу Boss;
− завершает свою работу.
10. Написать программы для консольного процесса Administrator и консольных процессов Reader и Writer.
Для моделирования передачи сообщений ввести специальные события, которые обозначают сообщение “Л”, сообщение “Б”, и конец сеанса для процессов Reader и Writer.
Одновременно принимать и отправлять сообщения могут только два процесса Writer и два процесса Reader, передача остальных сообщений от других процессов должна блокироваться с помощью мьютексов;
ПроцессAdministrator:
− запрашивает у пользователя количество процессов Reader и Writer, которые он должен запустить;
− запрашивает у пользователя кол-во отправленных сообщений для процесса Writer. Кол-во принятых сообщений для процесса Reader вычислить. (соответствие сообщений проверить и подкорректировать по формуле);
− запускает заданное количество процессов Reader и Writer;
− принимает от каждого процесса Reader и Writer сообщение о завершении сеанса и выводит его на консоль в одной строке.
− завершает свою работу.
ПроцессWriter:
− запрашивает с консоли сообщения, и передает их (по одному) процессу Reader;
− передает сообщение о завершении сеанса процессу Administrator;
− завершает свою работу.
ПроцессReader:
− принимает сообщение от процесса Writer;
− выводит на консоль сообщение;
− передает сообщение о завершении сеанса процессу Administrator;
− завершает свою работу.
11. Написать программы для консольного процесса Administrator и консольных процессов Reader и Writer.
Для моделирования передачи сообщений ввести специальные события, которые обозначают сообщение “Л” , сообщение “Б”, и конец сеанса для процессов ReaderиWriter.
Одновременно принимать и отправлять сообщения могут только один процесс Writer и два процесса Reader, передача остальных сообщений от других процессов должна блокироваться с помощью мьютексов;
ПроцессAdministrator:
− запрашивает у пользователя количество процессов Reader и Writer, которые он должен запустить;
− запрашивает у пользователя кол-во отправленных сообщений для процесса Writer. Кол-во принятых сообщений для процесса Reader вычислить. (соответствие сообщений проверить и подкорректировать по формуле);
− запускает заданное количество процессов Reader и Writer;
− принимает от каждого процесса Reader и Writer сообщение о завершении сеанса и выводит его на консоль в одной строке.
− завершает свою работу.
ПроцессWriter:
− запрашивает с консоли сообщения, и передает их (по одному) процессу Reader;
− передает сообщение о завершении сеанса процессу Administrator;
− завершает свою работу.
ПроцессReader:
− принимает сообщение от процесса Writer;
− выводит на консоль сообщение;
− передает сообщение о завершении сеанса процессу Administrator;
− завершает свою работу.
Контрольные вопросы
1. Поясните цели синхронизации процессов и потоков многозадачных ОС.
2. Что такое мьютексы (mutex) и чем они отличаются от критических областей?
3. Какие функции и типы Windows API используются для получения доступа к мьютексу, его захвата и освобождения?
4.Что такое события (event) в Windows API и для чего они могут использоваться?
5. Какие существуют типы событий и чем они отличаются друг от друга?
6. Какими функциями Windows API осуществляется работа с событиями?
7. В каком случае событие, сбрасываемое вручную, всё-таки сбрасывается автоматически?
8. Поясните общие свойства и различия при использовании событий и мьютексов.
Лабораторная работа №6
Тема: Обмен данными по анонимному каналу с сервером
Цель работы:
1. Изучение механизмов межпроцессного обмена в ОС семейства Windows.
2. Изучить функции для работы с анонимными каналами.
3. В соответствии с заданным вариантом разработать приложение, реализующее обмен данными между процессами с помощью анонимных каналов.
Краткое теоретическое введение