Глобальные переменные не использовать! 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. В соответствии с заданным вариантом разработать приложение, реализующее обмен данными между процессами с помощью анонимных каналов.

 

Краткое теоретическое введение