Глобальные переменные не использовать! 6 страница

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

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

Сегодня в Сочи завершает свою работу международныйфестиваль искусств «Кинотаврик». Новости Эфкате