Лабораторная работа
Эмуляция работы параллельных процессов на примере схемы «производитель–потребитель». Операционные системы. ЛР3. Вариант 8. Написать программу, которая будет эмулировать параллельную работу некоторых потоков. Потоки должны работать циклически
в среде программирования Turbo Pascal 7.0 (DOS) (Паскаль)
Программа

Среда программирования: Turbo Pascal 7.0 (DOS)
Название работы: Эмуляция работы параллельных процессов на примере схемы «производитель–потребитель». Операционные системы. ЛР3. Вариант 8. Написать программу, которая будет эмулировать параллельную работу некоторых потоков. Потоки должны работать циклически
Вид работы: Лабораторная работа
Тематика работы: Прочие
Объем программы: 5 (по десятибалльной шкале)
Уровень сложности: 5 (по десятибалльной шкале)
Разработчик (автор): Программист сайта kursovik.com (письмо автору)
Ключевые слова: Эмуляция работы, параллельные процессы, схема производитель–потребитель, производитель–потребитель, операционные системы, потоки, добавление потоков, количество потоков, несколько потребителей, активность потока, потомок-производитель, принцип очереди, процент заполненности буфера, буфер полон, поток-потребитель, работа потоков
Функции программы:
Лабораторная работа 3.
Эмуляция работы параллельных процессов на примере схемы «производитель–потребитель».
Разработать три программы на Pascal в соответствии с заданием:
Вариант 8.
Написать программу, которая будет эмулировать параллельную работу некоторых потоков. Потоки должны работать циклически. В качестве модели использовать схему «производитель – потребитель». Один поток (производитель) может помещать случайные (или какие-то определенные – например, только четные числа или квадраты целых чисел и т.п.) числа в буфер (массив заданного размера), для наглядности поток-производитель должен эти числа выводить на экран. Другой поток (потребитель) забирает числа из этого буфера. Для контроля также выполнять вывод на экран чисел, взятых потоком-потребителем из буфера. Вывод разными потоками выполнять в разные строки и/или разным цветом; дополнительно выводить на экран индикатор того, какой именно поток работает в настоящий момент, а также содержимое буфера и текущий процент его заполненности.
На экране параллельная работа потоков может быть представлена следующим образом:
Верхняя строка (производитель): ячейка для вывода текущего сгенерированного числа, признак активности потока (слово, символ, цвет), сообщение о переполнении буфера в случае этого события. Возможно, ещё какая-то полезная информация, например, номер заполняемой ячейки.
Нижняя (или вторая) строка (потребитель): ячейка для вывода текущего прочитанного числа, признак активности потока (слово, символ, цвет), сообщение о пустом буфере в случае этого события. Возможно, информация о номере считываемой из буфера ячейки.
В середине экрана: сам буфер, в который числа добавляются потоком-производителем и из которого считываются (удаляются или перекрашиваются, попадая при этом в его ячейку в нижней строке экрана) потоком-потребителем. Считывание чисел можно производить по принципу стека или очереди. При считывании по принципу очереди после завершения работы потребителя какое-то количество чисел из начала буфера исчезнет, следовательно, буфер будет перемещаться по экрану и в какой-то момент его потребуется переписать заново, от начала.
Отдельной строкой или в углу экрана отображать процент заполненности буфера.
Предусмотреть обработку критических ситуаций:
1) Случай, когда потребителю предоставлено управление, а буфер данных пуст – тогда активный поток должен напрямую отдать управление производителю, а сам уйти в режим ожидания. При этом вопрос с квантом времени для производителя может быть решён по-разному. Например, остаток недоработанного потребителем кванта может быть передан производителю, либо ему может быть выделен новый квант времени.
2) Случай, когда управление предоставлено производителю, а буфер полон и записывать результаты некуда – поток-производитель должен заблокироваться до появления свободного места в буфере и запустить поток-потребитель. Вопрос с квантом может решаться аналогично.
Для того чтобы было возможно пронаблюдать работу потоков в замедленном режиме, в каждом из потоков следует поставить дополнительную задержку (стандартный delay), величину которой задавать с клавиатуры при запуске программы, в качестве параметра командной строки. При запуске без параметров выводить сообщение примерного вида: «Программа запущена со стандартной задержкой, величина которой =…» и формат запуска программы для задания желаемой задержки.
Потоки при работе чередуются случайным образом; регламентировать их работу с помощью таймера (выделять каждому кванты времени, величина которых тоже случайна – в некотором диапазоне). При этом может складываться ситуация, что один и тот же поток несколько раз подряд получит управление. Таймер по окончании выделенного потоку кванта времени изменяет статус этого потока с активного на пассивный, в результате чего внутренний цикл этого потока должен завершиться.
Внутри обработчика прерываний таймера не может находиться вызовов процедур – потоков! Вызовы процедур должны происходить в бесконечном цикле в основной программе. В обработчик прерываний таймера вообще нельзя включать никакие действия, требующие длительного выполнения, например, вызовы циклических процедур, или процедур, работающих с графикой или с диском.
Для выхода из программы предусмотреть какую-то специальную клавишу или комбинацию клавиш (выбор по желанию программиста), информация о ней должна быть известна пользователю – помещена на экране. При нажатии этой клавиши происходит окончание работы потока-производителя, а поток-потребитель закончит свою работу, только когда буфер будет исчерпан, т.е. выработанная информация будет полностью использована.
2. Каким образом можно создать приоритет тому или другому потоку? Используя только датчик случайных чисел? Добавьте возможность задания приоритета в форме параметра командной строки.
3. Возможно ли добавление в ту же программу новых потоков? Измените программу таким образом, чтобы можно было при ее запуске указывать требуемое количество потоков. При этом функции каждого потока определяются случайным образом. Т.е. может получиться несколько потребителей и один производитель, или наоборот… В крайней ситуации – все производители или все потребители. Как поведёт себя программа в подобном случае?
Описание (отчет): Есть на 9 страниц, посмотреть оглавление
Пояснения к компиляции и запуску программы:
Для работы с первой программой по Лабораторной работе 3 нужно запустить файл "LAB3.EXE".
Для работы со второй программой по Лабораторной работе 3 нужно запустить файл "LAB3_1.EXE".
Для работы с третьей программой по Лабораторной работе 3 нужно запустить файл "LAB3_2.EXE".
Пояснения к запуску программы:
Для работы с первой программой по Лабораторной работе 3 нужно запустить файл "LAB3.EXE".
Для работы со второй программой по Лабораторной работе 3 нужно запустить файл "LAB3_1.EXE".
Для работы с третьей программой по Лабораторной работе 3 нужно запустить файл "LAB3_2.EXE".
На данный момент (25 марта 2025) на выполнении находится 31 заказ.
Количество программистов, занятых выполнением текущих заказов: 12.
В текущем месяце (март 2025) нами уже выполнено 30 заказов.
В текущем году (2025) нами уже выполнено 160 заказов.
В прошлом году (2024) нами было выполнено 763 заказа.
В позапрошлом году (2023) нами было выполнено 777 заказов.
Количество активных программистов на сайте: 64.
Загруженность отдела заказами: 34%.

Размер архива 17 Кб, все фaйлы прoверены aнтивирусом Кaсперского. Скачать







К программе прилагается:
- 1) отчет - 9 стр.
Перед покупкой готовой работы не забудьте проверить её оригинальность. Запросить у администратора проверку текущей оригинальности работы по версии системы Антиплагиат.РУ
ВНИМАНИЕ ! Если данный отчет Вам не подходит, то Вы можете заказать написание нового отчета (согласно Вашему оглавлению) автору данной программы. Чтобы узнать цену, нажмите на эту ссылку.

Описание задания, решения, листинг и скриншот работы программы.



Стоимость ИСХОДНОГО ТЕКСТА программы составляет 1200 руб РФ Продажа каждой работы строго учитывается, у каждой работы есть своя история продаж. |
Общие вопросы
- Как можно приобрести данную готовую работу ?
Заполните форму, которая расположена чуть Выше данного текста и нажмите кнопку "Приобрести"
- Каким образом производится оплата ?
После заполнения формы Вы получите на свой E-mail автоматическое письмо со всеми подробностями оплаты заказа. Оплата производится через платёжную систему Ю.Касса, которая обеспечивает полную защиту онлайн-платежей при покупках в Интернете. Оплатить заказ можно как электронными деньгами, так и банковской картой, в том числе и кредитной.
- Как быстро я получу данную работу после ее оплаты ?
В течение нескольких минут с момента оплата заказа. Мы работаем 7 дней в неделю.
- Каким образом будет доставлена мне данная работа после оплаты ?
На Ваш E-mail адрес и в личном кабинете нашего сайта sys.kursovik.com.
- Какие Вы даете гарантии, что данная работа будет выслана мне после оплаты ?
Смотрите рубрику Наши гарантии
- Что включает в себя исходный текст программы ? Вы пришлете все файлы проекта ?
Да, после оплаты Вы получите все файлы проекта данной работы, при желании сможете редактировать (видоизменять) программу (её описание) самостоятельно.
- Зачем в форме заказа вы просите ввести мой ВУЗ и город ?
Эти данные нам нужны для того, чтобы можно было предотвратить повторную продажу работы в один и тот же ВУЗ. На сайте в таблице продаж публикуется только информация о городах, куда была продана работа. Если клиент видит, что в его город работа уже покупалась, то он может запросить у нас название ВУЗов, куда покупалась эта работа. Данные о ВУЗе клиента хранятся только в нашей базе, в открытом доступе их нет. Если Вы все-таки не хотите оставлять информацию о городе и ВУЗе, то просто введите в соответствующие поля несколько пробелов. Тем не менее, мы Вам рекомендуем всё-таки указать достоверную информацию, тем самым Вы застрахуетесь от того, чтобы кто-то из студентов Вашего ВУЗа вместе с Вами сдавал одинаковую работу одному и тому же преподавателю.
- На Вашем сайте указано что эта работа не может быть выдана за свою, почему так ?
В идеале купленная работа должна быть использована в качестве образца или основы, чтобы студенту было проще написать свою собственную работу. Но если Вы всё-таки решите сдавать купленную у нас работу без изменений, то с нашей стороны по этому поводу никаких претензий не будет.
- Действительно ли данная работа является уникальной ?
Да, мы можем гарантировать уникальность данной работы.
Она была разработана нашим программистом и выставлена на продажу в 2023 году.
- Какой процент покажет работа при проверки ее уникальности в системе АнтиПлагиат.Ру ?
Обычно работы по программированию всегда показывают больше 50% уникального текста.
Это напрямую связано с тем, что даже если введение, заключение и теоретическая глава вдруг окажутся неуникальными, то сам текст программы и описание ее работы слихвой компенсируют этот недостаток, т.к. они пишутся с нуля, скопировать их вряд ли откуда можно.
Тем не мнее, если вдруг при проверке купленной у нас готовой работы, она не дотятянет до требуемого в Вашем ВУЗе процента уникальности, то мы готовы поднять его при помощи специальной программы.
ВНИМАНИЕ ! Это предложение действительно только для готовых работ, купленных на нашем сайте ! Повышать уникальность каких-либо других работ мы не будем :-)
- Сколько раз была продана данная работа ?
Ни разу.
- Есть ли отчет (описание) к данной работе ?
Есть, но если данный отчет Вам не подходит, то Вы можете заказать написание нового отчета (согласно Вашему оглавлению) автору данной программы. Для этого заполните пожалуйста форму, приведенную ниже. В форме укажите требуемое оглавление(план) отчета. Если в Вашем ВУЗе никаких особых требований к отчету не выдвигают, тогда выберите пункт "требований к отчету нет, всё на усмотрение программиста".

Если у Вас возник какой-либо вопрос по данной работе, пожалуйста заполните форму, приведенную ниже.
Ответ будет дан автором данной работы в обязательном порядке. Время отклика - 2-24 часа с момента заполнения формы. Если Ваш вопрос окажется полезным, мы разместим его на этой странице.

ВНИМАНИЕ! НОВИНКА!
Попробуйте наш Телеграм-БОТ для поиска готовых работ по программированию...
Готовые работы на тему «Прочие» на языке Паскаль
Готовые работы на тему «Игры» на языке Паскаль
ЛР | Двумерный клеточный автомат - игра "Жизнь" | Turbo Pascal 7.0 (DOS) | 1500 |
КП | Игра "Арканоид" | Turbo Pascal 7.0 (DOS) | 1000+ |
КП | Игра "Быки и коровы" | Turbo Pascal 7.0 (DOS) | 600+ |
Программа | Игра "Выложить квадрат" | Turbo Pascal 7.0 (DOS) | 800+ |
ЛР | Игра "Грибник" | Turbo Pascal 7.0 (DOS) | 800+ |
Программа | Игра "Грузчик" | Turbo Pascal 7.0 (DOS) | 800 |
Программа | Игра "Зенитка" | Turbo Pascal 7.0 (DOS) | 600+ |
КП | Игра "Крестики нолики" | Turbo Pascal 7.0 (DOS) | 800+ |
Программа | Игра "Крестики-нолики" (версия 2) | Turbo Pascal 7.0 (DOS) | 700 |
Программа | Игра "Морской бой" | Turbo Pascal 7.0 (DOS) | 900+ |
КП | Игра "Мудрый крот" (pusher) | Turbo Pascal 7.0 (DOS) | 900+ |
Программа | Игра "Пинг-Понг" | Turbo Pascal 7.0 (DOS) | 1000+ |
КП | Игра "Пятнашки" | Turbo Pascal 7.0 (DOS) | 600+ |
Программа | Игра "Сапер" | Turbo Pascal 7.0 (DOS) | 600 |
Программа | Игра "Сапер" (версия 2) | Turbo Pascal 7.0 (DOS) | 600 |
ЛР | Игра "Скачки простые" | Turbo Pascal 7.0 (DOS) | 600 |
КП | Игра "Скачки" | Turbo Pascal 7.0 (DOS) | 700+ |
Программа | Игра "Стенка" (Арканоид) | Turbo Pascal 7.0 (DOS) | 600+ |
КП | Игра "Тетрис - Стрелялка" | Turbo Pascal 7.0 (DOS) | 700+ |
Программа | Игра "Тетрис" с использованием ООП | Turbo Pascal 7.0 (DOS) | 900+ |
Программа | Игра "Цветрис" (версия 1 - упрощенная) | Turbo Pascal 7.0 (DOS) | 800 |
КП | Игра "Цветрис" (версия 2) | Turbo Pascal 7.0 (DOS) | 1000+ |
КП | Игра "Шашки" | Turbo Pascal 7.0 (DOS) | 900+ |
ЛР | Игра в кости | Turbo Pascal 7.0 (DOS) | 1000+ |
Программа | Игра «Змейка» (простая) | Free Pascal | 700+ |
КП | Игра «Катапульта» | Free Pascal | 700 |
КП | Игра «Морской бой» | Turbo Pascal 7.0 (DOS) | 1300+ |
Программа | Игра «Морской бой» (3 уровня) | Turbo Pascal 7.0 (DOS) | 1000 |
КП | Игра «Морской бой» в текстовом режиме | Pascal ABC | 800+ |
КП | Игра «Пятнашки» | Turbo Pascal 7.0 (DOS) | 900+ |
КП | Игра «Щёлк» (Click, Chomp) | Pascal ABC | 1700 |
КП | Клавиатурный тренажер | Turbo Pascal 7.0 (DOS) | 900+ |
ЛР | Морской бой - расстановка кораблей | Turbo Pascal 7.0 (DOS) | 600 |
КП | Программа "Клавиатурный тренажер" (версиия 2) | Turbo Pascal 7.0 (DOS) | 600+ |
Программа | Шахматы. Мат двумя слонами. | Turbo Pascal 7.0 (DOS) | 1300+ |
КП | Шахматы. Определение положения белых | Turbo Pascal 7.0 (DOS) | 600+ |
ЛР | Эволюция жуков | Turbo Pascal 7.0 (DOS) | 600 |
Готовые работы на тему «Графика» на языке Паскаль
Готовые работы на тему «Базы данных» на языке Паскаль
Готовые работы на тему «Клиент-серверные базы данных» на языке Паскаль
КП | Буфет университета | Lazarus | 900+ |
Готовые работы на тему «Обучающие программы» на языке Паскаль
ЛР | Демонстрация работы со списком | Turbo Pascal 7.0 (DOS) | 600 |
КП | Игра «Катапульта» | Free Pascal | 700 |
КП | Клавиатурный тренажер | Turbo Pascal 7.0 (DOS) | 900+ |
КП | Моделирование одноатомного газа | Lazarus | 1000+ |
КП | Обходы бинарного дерева | Turbo Pascal 7.0 (DOS) | 800 |
КП | Помощник экзаменатора | Turbo Pascal 7.0 (DOS) | 800+ |
ЛР | Собственная структура данных «строка» - модуль процедур и демонстрационная программа | Free Pascal | 1100 |
Программа | Тренажер слов | Turbo Pascal 7.0 (DOS) | 800 |
Готовые работы на тему «Работа с текстом» на языке Паскаль
Готовые работы на тему «Тесты» на языке Паскаль
КП | Клавиатурный тренажер | Turbo Pascal 7.0 (DOS) | 900+ |
ЛР | ЛР. Провести функциональное тестирование программы, которая из последовательности 10 целых чисел выводит минимальное значение элемента и определяет четное оно или нечетное. Функциональное тестирование ПО. Вариант 14 | Pascal ABC | 2000 |
КП | Помощник экзаменатора | Turbo Pascal 7.0 (DOS) | 800+ |
ЛР | Проверка правильности описания переменных | Turbo Pascal 7.0 (DOS) | 1000 |
ЛР | Тест "Типы данных языка Паскаль" | Turbo Pascal 7.0 (DOS) | 700 |
ЛР | Тест "Экзамен - Турбо Паскаль" | Turbo Pascal 7.0 (DOS) | 800 |
Готовые работы на тему «Кроссворды» на языке Паскаль
ЛР | Генератор кроссвордов по заданному списку слов | Pascal ABC | 2000 |
КП | Кроссворд | Turbo Pascal 7.0 (DOS) | 900+ |
Программа | Кроссворд (программа для автоматического составления кроссвордов) | Pascal ABC | 1200 |
Готовые работы на тему «Технологии» на языке Паскаль
КП | База данных "Видеотека" (ООП, списки, csv) | Turbo Pascal 7.0 (DOS) | 900+ |
КП | Игра "Шашки" | Turbo Pascal 7.0 (DOS) | 900+ |
КП | Кодирование, декодирование текста | Turbo Pascal 7.0 (DOS) | 500+ |
КП | Конвертер для перевода программ на языке Си в текст программы на языке Паскаль | Turbo Pascal 7.0 (DOS) | 800+ |
Готовые работы на тему «Математика» на языке Паскаль
Готовые работы на тему «Графы» на языке Паскаль
Готовые работы на тему «Структуры» на языке Паскаль
Готовые работы на тему «Алгоритмы» на языке Паскаль
Готовые работы на тему «Компиляторы» на языке Паскаль
Программа | Восстановления раздела объявлений в Pascal | Turbo Pascal 7.0 (DOS) | 600 |
ЛР | Интерпретатор языка A | Turbo Pascal 7.0 (DOS) | 600 |
ЛР | Проверка описания переменных pascal (Версия 2) | Turbo Pascal 7.0 (DOS) | 700+ |
ЛР | Проверка правильности описания переменных в паскале(pascal) | Turbo Pascal 7.0 (DOS) | 800+ |
Готовые работы на тему «Криптография» на языке Паскаль
КП | Библиотека для шифрования | Turbo Pascal 7.0 (DOS) | 900 |
КП | Шифрование файлов | Turbo Pascal 7.0 (DOS) | 600+ |
КП | Шифрование/дешифрование текста методом гаммирования | Turbo Pascal 7.0 (DOS) | 700+ |
- Программы на языке Паскаль
- Программы на языке Delphi
- Программы на языке Си
- Программы на языке Си++
- Программы на языке Си++ Qt
- Программы на языке C#
- Программы на языке MS Access
- Программы на языке SQL
- Программы на языке Бейсик
- Программы на языке Excel
- Программы на языке Java
- Программы на языке JavaScript
- Программы на языке PHP
- Программы на языке HTML
- Программы на языке Ассемблер
- Программы на языке Пролог
- Программы на языке Лисп
- Программы на языке Haskell
- Программы на языке F#
- Программы на языке 1С
- Программы на языке Maple
- Программы на языке 3D Studio
- Программы на языке Foxpro
- Программы на языке Fortran
- Программы на языке UML
- Программы на языке MatLab
- Программы на языке GPSS
- Программы на языке Python
- Программы на языке MathCAD
- Программы на языке BAT-файл
- Программы на языке Другой
- Программы на языке Без программирования
- Программы на языке Паскаль
- Программы на языке Delphi
- Программы на языке Си
- Программы на языке Си++
- Программы на языке Си++ Qt
- Программы на языке C#
- Программы на языке MS Access
- Программы на языке SQL
- Программы на языке Бейсик
- Программы на языке Excel
- Программы на языке Java
- Программы на языке JavaScript
- Программы на языке PHP
- Программы на языке HTML
- Программы на языке Ассемблер
- Программы на языке Пролог
- Программы на языке Лисп
- Программы на языке Haskell
- Программы на языке F#
- Программы на языке 1С
- Программы на языке Maple
- Программы на языке 3D Studio
- Программы на языке Foxpro
- Программы на языке Fortran
- Программы на языке UML
- Программы на языке MatLab
- Программы на языке GPSS
- Программы на языке Python
- Программы на языке MathCAD
- Программы на языке BAT-файл
- Программы на языке Другой
- Программы на языке Без программирования
- Готовые работы по бухгалтерскому учёту
- Готовые работы по финансовому менеджменту
- Готовые работы по финансовому анализу
- Готовые работы по финансам и кредиту
- Готовые работы по экономической теории
- Готовые работы по экономике предприятия
- Готовые работы по праву
- Готовые работы по юриспруденции
- Готовые работы по психологии
- Готовые работы по истории
- Программы на тему «Игры»
- Программы на тему «Графика»
- Программы на тему «Базы данных»
- Программы на тему «Клиент-серверные базы данных»
- Программы на тему «Обучающие программы»
- Программы на тему «Работа с текстом»
- Программы на тему «Тесты»
- Программы на тему «Кроссворды»
- Программы на тему «Технологии»
- Программы на тему «Интернет»
- Программы на тему «Сети»
- Программы на тему «Математика»
- Программы на тему «Графы»
- Программы на тему «Структуры»
- Программы на тему «Алгоритмы»
- Программы на тему «Компиляторы»
- Программы на тему «Криптография»
- Программы на тему «Нейронные сети»
- Программы на тему «Прочие»
| Психология | История | Электроника, Радиотехника, Механика |