− завершает свою работу.
Написать программы для консольного процесса 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. В соответствии с заданным вариантом разработать приложение, реализующее обмен данными между процессами с помощью анонимных каналов.
Краткое теоретическое введение