Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС СФМЭИ.doc
Скачиваний:
23
Добавлен:
17.09.2019
Размер:
1.37 Mб
Скачать

7.4. Задания для самостоятельной работы

  1. Исследование возможности использования в качестве объектов синхронизации потоков. Первичный поток ожидает ввода от пользователя строки символов, запускает вторичный поток и ожидает завершения вторичного потока. Вторичный поток переписывает строку в обратном порядке, подчитывает количество гласных в строке и завершает свою работу. Первичный поток выводит на экран результат работы вторичного потока.

  2. Исследование возможности синхронизации потоков с помощью событий. Создание двух приложений. Первое приложение следит за вторым приложением. Второе приложение позволяет пользователю вводить с помощью клавиатуры и отображать в своем окне произвольные символы. Первое, контролирующее приложение при вводе в окне второго приложения символа отображает в своем окне символ "*".

  3. Исследование возможности синхронизации потоков с помощью событий c автоматическим сбросом. Написать программу, состоящую из четырех потоков. Первый поток считывает порциями в буфер текстовый файл. Второй поток подсчитывает количество символов в файле. Третий поток подсчитывает количество слов в файле. Четвертый поток подсчитывает количество строк в файле. Работа всех потоков синхронизируется.

  4. Исследование возможности синхронизации потоков с помощью критических секций. Создание многооконного приложения (MDI приложения). В каждом окне рисуются произвольные фигуры. Причем, в каждый момент времени может рисоваться фигура только в одном окне.

  5. Исследование возможности синхронизации потоков с помощью объектов Mutex. Первичный поток создает два вторичных потока. Один из которых постоянно увеличивает на единицу содержимое какой-либо переменной, а другой выводит на экран содержимое этой переменной. Выполните синхронизация потоков таким образом, чтобы числа на экран выводились по порядку.

  6. Исследование возможности синхронизации потоков с помощью семафоров. Напишите программу, использующую семафор для ограничения количества запущенных потоков, работающих в MDI-окне. Программа позволяет создавать произвольное количество окон, но работа может выполняться только в ограниченном количестве окон, в соответствии с показаниями семафора.

  7. С помощью объектов синхронизации Windows создать модель вычислительной сети. Сеть состоит из нескольких серверов, к которым обращаются с запросами клиенты. Запросы клиентов поступают через случайные промежутки времени. Каждый сервер имеет ограниченный размер входной очереди запросов. Запрос каждого клиента обрабатывается в течение некоторого времени.

  8. С помощью объектов синхронизации Windows смоделировать работу супермаркета. Поток «супермаркет» выполняет следующие действия: открытие супермаркета, создание потока, моделирующего отдельного покупателя, закрытие входа по окончании работы супермаркета (после этого в него не могут входить новые посетители), ожидание оставшихся в супермаркете покупателей. Потоки «покупатели» создаются через случайные промежутки времени (необходимо предусмотреть максимально возможный интервал). «Покупатели» выполняют следующие операции: ждут входа в магазин, делают случайное количество покупок, становятся в очередь к кассе, проводят у кассы случайный период времени, отходят от кассы, выходят из супермаркета.

  9. С помощью объектов синхронизации Windows смоделировать работу парикмахерской. В парикмахерской 3 кресла, 3 парикмахера, зал ожидания, в котором 4 клиента могут разместиться на диване, а остальные стоя. Правила пожарной безопасности ограничивают общее количество клиентов внутри посещения 20 людьми. Всего парикмахерская должна обслужить 50 клиентов.

  10. С помощью объектов синхронизации Windows решить задачу об обедающих философах (задача Дейкстры). В некотором царстве, в некотором государстве жили вместе 5 философов. Жизнь их проходила в размышлениях, прерываемых приемами пищи. Философы давно сошлись во мнении, что только спагетти в состоянии восстановить их подточенные непрерывными размышлениями силы. Питались они за одним большим круглым столом, на котором в центре помещалось большое блюдо со спагетти, по окружность пять тарелок и пять вилок. Проголодавшийся философ садится на свое место за столом и, пользуясь двумя вилками, приступает к еде. Задача состоит в том, чтобы разработать алгоритм обеда, который обеспечивает взаимоисключения (два философа не могут одновременно пользоваться одной вилкой) и не допу скает взаимоблокировок.

  11. С помощью объектов синхронизации Windows смоделировать работу Web-сервера. При создании приложения учитывать, что запросы клиентов могут иметь различный приоритет.

  12. С помощью объектов синхронизации Windows смоделировать работу стоянки автотранспорта возле супермаркета. Стоянка имеет ограниченное число мест, каждая машина стоит некоторый случайный промежуток времени. Машины приезжают на стоянку в случайный момент времени. Причем количество машин приезжающих на стоянку резко увеличивается в вечернее время (с 16.00 до 17.00).

  13. С помощью объектов синхронизации Windows смоделировать ситуацию на перекрестке. Приложение должно учитывать время работы светофора, и количество машин на перекрестке. Приложение должно ответить на вопрос, при каких условиях перекресток перестанет быть узким местом.

  14. Задача взаимного исключения. ОС, управляющая параллельными процессами, должна согласовать работу n>1 параллельных процессов при использовании некоторого критического ресурса таким образом, чтобы удовлетворить следующим требованиям: одновременно внутри критической области должно находиться не более одного процесса. Количество процессов заранее не известно.

  15. Задача "Производитель-потребитель". Взаимодействуют два процесса с жестко распределенными между ними функциями. Один процесс вырабатывает сообщения, предназначенные для восприятия и обработки другим процессом. Процесс, вырабатывающий сообщения, называют производителем, а воспринимающий сообщения — потребителем. Процессы взаимодействуют через некоторую обобщенную область памяти, которая по смыслу является критическим ресурсом. В эту область процесс-производитель должен помещать очередное сообщение (предполагается, что область способна хранить только одно сообщение), а процесс-потребитель должен считывать очередное сообщение. Необходимо согласовать работы двух процессов при одностороннем обмене сообщениями таким образом, чтобы удовлетворить следующим требованиям:

    • выполнять требования задачи взаимного исключения по отношению к критическому ресурсу — обобщенной памяти для хранения сообщения

    • учитывать состояние обобщенной области памяти, характеризующей возможность или невозможность посылки (принятия) очередного сообщения

Попытка процесса-производителя поместить очередное сообщение в область, из которой не было считано предыдущее сообщение процессом-потребителем, должна быть блокирована. Процесс-производитель должен быть переведен в состояние ожидания возможности поместить очередное сообщение через некоторое время в область памяти, по мере ее освобождения. Аналогично должна быть блокирована попытка процесса-потребителя считать сообщение из области в ситуации, когда процесс-производитель не поместил туда очередного сообщения.

  1. Задача "Читатели-писатели"(больший приоритет имеют процессы-читатели). В отношении некоторой области памяти, являющейся критическим ресурсом для параллельных процессов, работающих с ней, выделяется два типа процессов. Первый тип — процессы-читатели. Они считывают одновременно информацию из области, если это допускается при работе с конкретным устройством памяти. Второй тип — процессы-писатели. Они записывают информацию в область и могут делать это, только исключая как друг друга, т. е. запись должна удовлетворяться на основе решения задачи взаимного исключения. Устанавливается приоритетность в использовании критического ресурса процессам-читателям. Если хотя бы один процесс-читатель пользуется ресурсом, то он закрыт для использования всем процессам-писателям и доступен для использования всем процессам-читателям.

  2. Задача "Читатели-писатели" (больший приоритет имеют процессы-писатели). В отношении некоторой области памяти, являющейся критическим ресурсом для параллельных процессов, работающих с ней, выделяется два типа процессов. Первый тип — процессы-читатели. Они считывают одновременно информацию из области, если это допускается при работе с конкретным устройством памяти. Второй тип — процессы-писатели. Они записывают информацию в область и могут делать это, только исключая как друг друга, т. е. запись должна удовлетворяться на основе решения задачи взаимного исключения. Устанавливается приоритетность в использовании критического ресурса процессам - писателями. При появлении запроса от процесса-писателя необходимо закрыть ресурс для использования всем процессам-читателям.

  3. С помощью объектов синхронизации Windows смоделировать работу кафе. Кафе имеет ограниченное число столиков, каждый столик занят некоторый случайный промежуток времени. Каждый официант обслуживает несколько столиков. Если все столики заняты, клиенты уходят. Определите, при каких условиях кафе будет иметь прибыль, не потеряет клиентов, а посетители смогут спокойно поесть (за приемлемое время).

  4. С помощью объектов синхронизации Windows смоделировать работу аэропорта. В приложении следует задавать число взлетно-посадочных полос и число самолетов, выполняющих взлет и посадку.

  5. С помощью объектов синхронизации Windows смоделировать работу поликлиники. Число врачей (только участковых) и количество больных вводятся с клавиатуры. Время пребывания каждого больного у врача – случайное число. Задача должна определять оптимальное число врачей, чтобы все больные за время приемы смогли попасть к врачу.