Эмуляция работы параллельных процессов на примере схемы “производитель–потребитель
Состав работы
|
|
|
|
|
|
|
|
|
|
Работа представляет собой zip архив с файлами (распаковать онлайн), которые открываются в программах:
- Microsoft Word
Описание
Постановка задачи
Написать программу, которая будет эмулировать параллельную работу некоторых потоков. Потоки должны работать циклически. В качестве модели использовать схему “производитель – потребитель”. Один поток (производитель) может помещать случайные (или какие-то определенные – например, только четные числа или квадраты целых чисел и т.п.) числа в буфер (массив заданного размера), для наглядности поток-производитель должен эти числа выводить на экран. Другой поток (потребитель) забирает числа из этого буфера. Для контроля также выполнять вывод на экран чисел, взятых потоком-потребителем из буфера. Вывод разными потоками выполнять в разные строки и/или разным цветом; дополнительно выводить на экран индикатор того, какой именно поток работает в настоящий момент, а также содержимое буфера и текущий процент его заполненности.
На экране параллельная работа потоков может быть представлена следующим образом:
Верхняя строка (производитель): ячейка для вывода текущего сгенерированного числа, признак активности потока (слово, символ, цвет), сообщение о переполнении буфера в случае этого события. Возможно, ещё какая-то полезная информация, например, номер заполняемой ячейки.
Нижняя (или вторая) строка (потребитель): ячейка для вывода текущего прочитанного числа, признак активности потока (слово, символ, цвет), сообщение о пустом буфере в случае этого события. Возможно, информация о номере считываемой из буфера ячейки.
В середине экрана: сам буфер, в который числа добавляются потоком-производителем и из которого считываются (удаляются или перекрашиваются, попадая при этом в его ячейку в нижней строке экрана) потоком-потребителем. Считывание чисел можно производить по принципу стека или очереди. При считывании по принципу очереди после завершения работы потребителя какое-то количество чисел из начала буфера исчезнет, следовательно, буфер будет перемещаться по экрану и в какой-то момент его потребуется переписать заново, от начала.
Отдельной строкой или в углу экрана отображать процент заполненности буфера.
Предусмотреть обработку критических ситуаций:
1) Случай, когда потребителю предоставлено управление, а буфер данных пуст – тогда активный поток должен напрямую отдать управление производителю, а сам уйти в режим ожидания. При этом вопрос с квантом времени для производителя может быть решён по-разному. Например, остаток недоработанного потребителем кванта может быть передан производителю, либо ему может быть выделен новый квант времени.
2) Случай, когда управление предоставлено производителю, а буфер полон и записывать результаты некуда – поток-производитель должен заблокироваться до появления свободного места в буфере и запустить поток-потребитель. Вопрос с квантом может решаться аналогично.
Для того чтобы было возможно пронаблюдать работу потоков в замедленном режиме, в каждом из потоков следует поставить дополнительную задержку (стандартный delay), величину которой задавать с клавиатуры при запуске программы, в качестве параметра командной строки. При запуске без параметров выводить сообщение примерного вида: “Программа запущена со стандартной задержкой, величина которой =…” и формат запуска программы для задания желаемой задержки.
Потоки при работе чередуются случайным образом; регламентировать их работу с помощью таймера (выделять каждому кванты времени, величина которых тоже случайна – в некотором диапазоне). При этом может складываться ситуация, что один и тот же поток несколько раз подряд получит управление. Таймер по окончании выделенного потоку кванта времени изменяет статус этого потока с активного на пассивный, в результате чего внутренний цикл этого потока должен завершиться.
Внутри обработчика прерываний таймера не может находиться вызовов процедур – потоков! Вызовы процедур должны происходить в бесконечном цикле в основной программе. В обработчик прерываний таймера вообще нельзя включать никакие действия, требующие длительного выполнения, например, вызовы циклических процедур, или процедур, работающих с графикой или с диском.
Для выхода из программы предусмотреть какую-то специальную клавишу или комбинацию клавиш (выбор по желанию программиста), информация о ней должна быть известна пользователю – помещена на экране. При нажатии этой клавиши происходит окончание работы потока-производителя, а поток-потребитель закончит свою работу, только когда буфер будет исчерпан, т.е. выработанная информация будет полностью использована.
Написать программу, которая будет эмулировать параллельную работу некоторых потоков. Потоки должны работать циклически. В качестве модели использовать схему “производитель – потребитель”. Один поток (производитель) может помещать случайные (или какие-то определенные – например, только четные числа или квадраты целых чисел и т.п.) числа в буфер (массив заданного размера), для наглядности поток-производитель должен эти числа выводить на экран. Другой поток (потребитель) забирает числа из этого буфера. Для контроля также выполнять вывод на экран чисел, взятых потоком-потребителем из буфера. Вывод разными потоками выполнять в разные строки и/или разным цветом; дополнительно выводить на экран индикатор того, какой именно поток работает в настоящий момент, а также содержимое буфера и текущий процент его заполненности.
На экране параллельная работа потоков может быть представлена следующим образом:
Верхняя строка (производитель): ячейка для вывода текущего сгенерированного числа, признак активности потока (слово, символ, цвет), сообщение о переполнении буфера в случае этого события. Возможно, ещё какая-то полезная информация, например, номер заполняемой ячейки.
Нижняя (или вторая) строка (потребитель): ячейка для вывода текущего прочитанного числа, признак активности потока (слово, символ, цвет), сообщение о пустом буфере в случае этого события. Возможно, информация о номере считываемой из буфера ячейки.
В середине экрана: сам буфер, в который числа добавляются потоком-производителем и из которого считываются (удаляются или перекрашиваются, попадая при этом в его ячейку в нижней строке экрана) потоком-потребителем. Считывание чисел можно производить по принципу стека или очереди. При считывании по принципу очереди после завершения работы потребителя какое-то количество чисел из начала буфера исчезнет, следовательно, буфер будет перемещаться по экрану и в какой-то момент его потребуется переписать заново, от начала.
Отдельной строкой или в углу экрана отображать процент заполненности буфера.
Предусмотреть обработку критических ситуаций:
1) Случай, когда потребителю предоставлено управление, а буфер данных пуст – тогда активный поток должен напрямую отдать управление производителю, а сам уйти в режим ожидания. При этом вопрос с квантом времени для производителя может быть решён по-разному. Например, остаток недоработанного потребителем кванта может быть передан производителю, либо ему может быть выделен новый квант времени.
2) Случай, когда управление предоставлено производителю, а буфер полон и записывать результаты некуда – поток-производитель должен заблокироваться до появления свободного места в буфере и запустить поток-потребитель. Вопрос с квантом может решаться аналогично.
Для того чтобы было возможно пронаблюдать работу потоков в замедленном режиме, в каждом из потоков следует поставить дополнительную задержку (стандартный delay), величину которой задавать с клавиатуры при запуске программы, в качестве параметра командной строки. При запуске без параметров выводить сообщение примерного вида: “Программа запущена со стандартной задержкой, величина которой =…” и формат запуска программы для задания желаемой задержки.
Потоки при работе чередуются случайным образом; регламентировать их работу с помощью таймера (выделять каждому кванты времени, величина которых тоже случайна – в некотором диапазоне). При этом может складываться ситуация, что один и тот же поток несколько раз подряд получит управление. Таймер по окончании выделенного потоку кванта времени изменяет статус этого потока с активного на пассивный, в результате чего внутренний цикл этого потока должен завершиться.
Внутри обработчика прерываний таймера не может находиться вызовов процедур – потоков! Вызовы процедур должны происходить в бесконечном цикле в основной программе. В обработчик прерываний таймера вообще нельзя включать никакие действия, требующие длительного выполнения, например, вызовы циклических процедур, или процедур, работающих с графикой или с диском.
Для выхода из программы предусмотреть какую-то специальную клавишу или комбинацию клавиш (выбор по желанию программиста), информация о ней должна быть известна пользователю – помещена на экране. При нажатии этой клавиши происходит окончание работы потока-производителя, а поток-потребитель закончит свою работу, только когда буфер будет исчерпан, т.е. выработанная информация будет полностью использована.
Дополнительная информация
Сдано 2012г.
Похожие материалы
Лабораторная работа №4 Эмуляция работы параллельных процессов на примере схемы «производитель–потребитель»
Ruslanks
: 2 апреля 2018
Написать программу, которая будет эмулировать параллельную работу некоторых потоков. Потоки должны работать циклически. В качестве модели использовать схему «производитель – потребитель». Один поток (производитель) может помещать случайные (или какие-то определенные – например, только четные числа или квадраты целых чисел и т.п.) числа в буфер (массив заданного размера), для наглядности поток-производитель должен эти числа выводить на экран. Другой поток (потребитель) забирает числа из этого буф
150 руб.
Операционные системы Лабораторная работа №3 Эмуляция работы параллельных процессов на примере схемы “производитель–потребитель”
svladislav987
: 23 августа 2023
Задание для выполнения лаб. работы №3
Написать программу, которая будет эмулировать параллельную работу некоторых потоков. Потоки должны работать циклически. В качестве модели использовать схему “производитель – потребитель”. Один поток (производитель) может помещать случайные (или какие-то определенные – например, только четные числа или квадраты целых чисел и т.п.) числа в буфер (массив заданного размера), для наглядности поток-производитель должен эти числа выводить на экран. Другой поток (п
200 руб.
Операционные системы. Лабораторная работа № 4. Эмуляция работы параллельных процессов на примере схемы «производитель–потребитель»
nik200511
: 11 марта 2014
1. Постановка задачи
Написать программу, которая будет эмулировать параллельную работу некоторых потоков. Потоки должны работать циклически. В качестве модели использовать схему “производитель – потребитель”. Один поток (производитель) может помещать случайные (или какие-то определенные – например, только четные числа или квадраты целых чисел и т.п.) числа в буфер (массив заданного размера), для наглядности поток-производитель должен эти числа выводить на экран. Другой поток (потребитель) забира
41 руб.
Операционные системы. Лабораторная работа № 4. Эмуляция работы параллельных процессов на примере схемы “производитель-потребитель” . Turbo Pascal. СибГУТИ
РешуВашуРаботу
: 27 апреля 2018
Задание для выполнения лаб. работы №4
Написать программу, которая будет эмулировать параллельную работу некоторых потоков. Потоки должны работать циклически. В качестве модели использовать схему “производитель – потребитель”. Один поток (производитель) может помещать случайные (или какие-то определенные – например, только четные числа или квадраты целых чисел и т.п.) числа в буфер (массив заданного размера), для наглядности поток-производитель должен эти числа выводить на экран. Другой поток (п
450 руб.
Лояльность потребителей
evelin
: 19 июля 2015
Введение.
Понятие лояльности потребителей.
Понятие лояльности потребителей и её значение.
Связь между уровнем удовлетворенности и лояльностью.
Критерии и методы оценки лояльности потребителей.
Клиентская лояльность: три модели поведения.
Критерии оценки лояльности потребителей. Методика "SERVQUAL".
Другие методики оценки лояльности потребителей.
программы повышения лояльности.
Общие сведения о программах повышения лояльности.
Дисконтная программа и розыгрыши призов.
Бонусные программы поощрения
42 руб.
Управление взаимоотношениями с потребителями.
studypro3
: 8 февраля 2019
Технологии работы с возражениями покупателей
Практическая часть.
1) Краткое описание ситуации любой организации (1 стр). Вид деятельности любой. Источники информации: личный опыт работы, публикации, сайты организаций.
Задания по деятельности организации:
А) Какие признаки сегментирования рынка использует организация? Стратегия охвата (сегментирования) рынка?
Б) Какие исследования можно провести для проверки гипотез о профилях сегментов?В) Определите возможные признаки позиционирования компании
400 руб.
Управление взаимоотношениями с потребителями.
studypro3
: 27 марта 2018
Технологии работы с возражениями покупателей
Практическая часть.
1) Краткое описание ситуации любой организации (1 стр). Вид деятельности любой. Источники информации: личный опыт работы, публикации, сайты организаций.
Задания по деятельности организации:
А) Какие признаки сегментирования рынка использует организация? Стратегия охвата (сегментирования) рынка?
Б) Какие исследования можно провести для проверки гипотез о профилях сегментов?
) Определите возможные признаки позиционирования компании
500 руб.
Модели поведения потребителей
evelin
: 19 июля 2015
В работе рассмотрены основные модели поведения потребителей, их классификация,описан процесс принятия решений, приведены особенности поведения организаций–потребителей и конечных потребителей.
В практической части рассчитана сегментация рынка потребителей ООО "Лэтуаль" в г. Тула (на основе критерия Фишера) и маркетинговые исследования.
41 руб.
Другие работы
Деньги и денежные реформы в России
DocentMark
: 31 октября 2012
Содержание:
1. Введение……………………………………………………………………….3
2. Экономическое положение Советской республики в период гражданской войны……………………………………………………………….5
3. Натурализация хозяйственных связей……………………..…………7
4. Деньги и денежная реформы 1919-1924 гг. ………………………..8
5. Реформы 20-60 гг. …………………………………………………………10
6. От попыток реформ к кризису командно-бюрократической системы…………………………………………………………………………....14
7. Экономическое развитие Советского Союза в середине 60-х - начале 80-х гг. ………………………
10 руб.
Системи систем виявлення вторгнень (СВВ) или Intrusion Detection Systems (IDS)
Slolka
: 5 октября 2013
IDS є програмними або апаратними системами, які автоматизують процес перегляду подій, що виникають у комп'ютерній системі чи мережі, аналізують їх з точки зору безпеки. Так як кількість мережевих атак зростає, IDS стають необхідним доповненням інфраструктури безпеки. Ми розглянемо, для яких цілей призначені IDS, як вибрати та настроїти IDS для конкретних систем і мережевих оточень, як обробляти результати роботи IDS і як інтегрувати IDS з іншою інфраструктурою безпеки підприємства.
Виявлення пр
10 руб.
Датчик шума
DocentMark
: 13 ноября 2012
Введение
Данный курсовой проект выполнен на основе материала, полученного на предприятии ФГУП «Калугаприбор» г. Калуги.
В данном курсовом проекте при разработке печатного узла учитывались условия его работы.
Условия эксплуатации блока подразумевают постоянное действие вибрации (10 g) и воздействие ударов (перегрузка 15 g, форма импульса прямоугольная, t = 15 мс), давление 760 мм. рт. ст., диапазон температур (-60 – +100)°С, влажность до 80% при температуре 300С.
Данный узел должен обеспечивать в
15 руб.
Лабораторная работа №2 по дисциплине Планирование и управление информационной безопасностью. Вариант №1
xtrail
: 26 июля 2024
Лабораторная работа № 2
ТЕМА: «Методы противодействия несанкционированному доступу»
1. Цель работы: Ознакомиться с организации доступа к ресурсам.
2 Порядок выполнения:
1. В первую очередь требуется выбрать один из вариантов выполнения работы:
1) исследования параметров парольной защиты (из 6 баллов),
2) разработка модели системы доступа в соответствии с вариантами по журналу (таблица 5).
2. Напишите вывод по выполненной работе.
Теоретические положения
2. Задание.
1. Определить время п
500 руб.