Лабораторная работа №4, 4 семестр, 7 вариант

Цена:
50 руб.

Состав работы

material.view.file_icon
material.view.file_icon LAB4.PAS
material.view.file_icon Лабораторная работа-4. 4-семестр. 7 - вариант.docx
material.view.file_icon LAB4.EXE
Работа представляет собой rar архив с файлами (распаковать онлайн), которые открываются в программах:
  • Microsoft Word

Описание

Написать программу, которая будет эмулировать параллельную работу некоторых потоков. Потоки должны работать циклически. В качестве модели использовать схему “производитель – потребитель”. Один поток (производитель) может помещать случайные (или какие-то определенные – например, только четные числа или квадраты целых чисел и т.п.) числа в буфер (массив заданного размера), для наглядности поток-производитель должен эти числа выводить на экран. Другой поток (потребитель) забирает числа из этого буфера. Для контроля также выполнять вывод на экран чисел, взятых потоком-потребителем из буфера. Вывод разными потоками выполнять в разные строки и/или разным цветом; дополнительно выводить на экран индикатор того, какой именно поток работает в настоящий момент, а также содержимое буфера и текущий процент его заполненности.

На экране параллельная работа потоков может быть представлена следующим образом:

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

Нижняя (или вторая) строка (потребитель): ячейка для вывода текущего прочитанного числа, признак активности потока (слово, символ, цвет), сообщение о пустом буфере в случае этого события. Возможно, информация о номере считываемой из буфера ячейки.

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

Отдельной строкой или в углу экрана отображать процент заполненности буфера.

Предусмотреть обработку критических ситуаций:

1) Случай, когда потребителю предоставлено управление, а буфер данных пуст – тогда активный поток должен напрямую отдать управление производителю, а сам уйти в режим ожидания. При этом вопрос с квантом времени для производителя может быть решён по-разному. Например, остаток недоработанного потребителем кванта может быть передан производителю, либо ему может быть выделен новый квант времени.

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

Для того чтобы было возможно пронаблюдать работу потоков в замедленном режиме, в каждом из потоков следует поставить дополнительную задержку (стандартный delay), величину которой задавать с клавиатуры при запуске программы, в качестве параметра командной строки. При запуске без параметров выводить сообщение примерного вида: “Программа запущена со стандартной задержкой, величина которой =…” и формат запуска программы для задания желаемой задержки.

Потоки при работе чередуются случайным образом; регламентировать их работу с помощью таймера (выделять каждому кванты времени, величина которых тоже случайна – в некотором диапазоне). При этом может складываться ситуация, что один и тот же поток несколько раз подряд получит управление. Таймер по окончании выделенного потоку кванта времени изменяет статус этого потока с активного на пассивный, в результате чего внутренний цикл этого потока должен завершиться.

Внутри обработчика прерываний таймера не может находиться вызовов процедур – потоков! Вызовы процедур должны происходить в бесконечном цикле в основной программе. В обработчик прерываний таймера вообще нельзя включать никакие действия, требующие длительного выполнения, например, вызовы циклических процедур, или процедур, работающих с графикой или с диском.

Для выхода из программы предусмотреть какую-то специальную клавишу или комбинацию клавиш (выбор по желанию программиста), информация о ней должна быть известна пользователю – помещена на экране. При нажатии этой клавиши происходит окончание работы потока-производителя, а поток-потребитель закончит свою работу, только когда буфер будет исчерпан, т.е. выработанная информация будет полностью использована.

Контрольные вопросы:

1. Как поведет себя программа, если первым будет выбираться на выполнение поток-потребитель?
2. Каким образом можно создать приоритет тому или другому потоку? Используя только датчик случайных чисел? Добавьте возможность задания приоритета в форме параметра командной строки.
3. Возможно ли добавление в ту же программу новых потоков? Измените программу таким образом, чтобы можно было при ее запуске указывать требуемое количество потоков. При этом функции каждого потока определяются случайным образом. Т.е. может получиться несколько потребителей и один производитель, или наоборот… В крайней ситуации – все производители или все потребители. Как поведёт себя программа в подобном случае?

Дополнительная информация

Учебное заведение: Сибирский Государственный Университет Телекоммуникаций и Информатики Межрегиональный центр переподготовки специалистов
Год сдачи: 2018г
Предмет: Операционные системы
Преподаватель: Бах О.А.
Оценка: Зачёт
Лабораторная работа №4, 4 семестр, 7 вариант
1. Создание таблиц. Создайте таблицы: Faculty (Название факультета, Курс, Количество групп на курсе ), Group (Название группы, Фамилия старосты, Количество студентов в группе), Stud (ФИО, Домашний адрес, Телефон). (см. лекцию, п.8.3) Таблица Faculty Filed name Type Size Key F_Num + * F_Name A 5 F_Kurs I F_KolGrp I Таблица Group Таблица Stud Filed nam
User Madam : 25 сентября 2018
50 руб.
Лабораторная работа №4, 5 семестр, 7 вариант
Лабораторная работа №4 По дисциплине: Человеко-машинное взаимодействие Преподаватель: Ракитский А.А. Оценка: Зачёт Год сдачи: 2018г 4.1. Проведите анализ соответствия программы (по вариантам) правилам Нильсена–Молиха. 4.2. Опишите, как принципы организации графического интерфейса учтены (или не учтены) в данной программе. Вариант 7: «Алгоритм Евклида»
User Madam : 27 сентября 2018
50 руб.
Лабораторная работа №4, 5 семестр, 7 вариант
Вариант 7 Напишите на языке ПРОЛОГ программу, которая в списке слов находит слово максимальной длины и ставит его последним (если таких слов несколько, то переставляется первое найденное). Список вводится с клавиатуры, цель – внутренняя. Например: Список [“f”,”baxg”,”add”,”qw”] преобразуется в [“f”,”add”,”qw”,”baxg”]. Вариант задачи выбирается по последней цифре пароля. Текст функции сохраняйте в файле. В теле функции использование операторов set и setq не допускается!
User Madam : 27 сентября 2018
50 руб.
Лабораторная работа №3, 4 семестр, 7 вариант
Задание 1:Создание простейшего приложения базы данных с использованием эксперта форм базы данных (DataBase Form Wizard). 1. Создайте новое приложение. 2. Выполните команду DataBase - Form Wizard (или File - New и на закладке Business выберите элемент DataBase Form Wizard). • В раскрывшемся окне DataBase Form Wizard выберите опции: • Create a simple form; • Create a form using Ttable objects. Нажмите кнопку Next. • В следующем раскрывшемся окне выберите в комбинированных списках папку C:\Progra
User Madam : 25 сентября 2018
50 руб.
Лабораторная работа №2, 4 семестр, 7 вариант
ЗАДАНИЕ 1: Создание простейшего редактора, который работает с файлом memos.txt, находящемся в текущей папке. 1. Создайте главное меню – компонент MainMenu - с пунктами: File Help New About... F1 Open... F3 Close Save F2 Save As... Exit Alt+X 1.1. Создайте обработчики событий, поступающих от объектов: Exit1 – закрытие формы; About1 – информация об авторах в стандартном окне (MessageDlg). (Примечание: для размещения текста в нескольких строчках используйте #13#10.
User Madam : 25 сентября 2018
50 руб.
Лабораторная работа №2, 4 семестр, 7 вариант
Задание: Написать резидентную программу, которая будет работать, как “будильник” – через заданный интервал времени издавать короткий звуковой сигнал – “тикать” (например, через 1–2 секунды). По завершении более длительного интервала времени (от нескольких секунд до нескольких минут или часов) должен раздаваться более продолжительный мелодичный звуковой сигнал, имитирующий звонок будильника. Длительность звукового сигнала – “тиканья” – не должна быть слишком большой. Её следует задавать в прогр
User Madam : 25 сентября 2018
50 руб.
Лабораторная работа №1, 4 семестр, 7 вариант
ЗАДАНИЕ 1: Создать форму как показано на рисунке 1. Рис.1 1. Рекомендуемый порядок размещения на форме компонентов TPanel, TDirectoryListBox, TFileListBox и TSplitter: - Panel1, Panel2 – в верхней и нижней частях клиентской области ; - DirectoryListBox1– слева на клиентской области (свойство Align); - Splitter1; - FileListBox1 – на всю оставшуюся клиентскую область (свойство Align). 2. Для установки связей между списками DriveCo
User Madam : 25 сентября 2018
50 руб.
Лабораторная работа №5, 4 семестр, 7 вариант
Написать программу, которая будет работать с видеопамятью. Можно выполнить любое из приведенных ниже заданий. Независимо от конкретного задания программа должна работать резидентно. Текст, присутствовавший на экране до запуска программы, не должен портиться никаким образом. В программе следует использовать два обработчика прерываний – прерываний таймера и прерываний клавиатуры. Прерывания таймера регламентируют скорость перемещения объекта, причем параметр, характеризующий величину скорости, не
User Madam : 25 сентября 2018
50 руб.
Проект наружного освещения индивидуального загородного жилого дома. Рабочий проект. Объект: Индивидуальный загородный жилой дом
ВЕДОМОСТЬ РАБОЧИХ ЧЕРТЕЖЕЙ ОСНОВНОГО КОМПЛЕКТА Титульный лист 1. Опись документов 2. Вид здания при архитектурном освещении 3. Фасад в осях "1'"-"8". Привязки осветительных приборов 4. Фасад в осях "А"-"И'". Привязки осветительных приборов 5. Фасад в осях "8'"-"1'". Привязки осветительных приборов 6. Фасад в осях "И"-"А'". Привязки осветительных приборов 7. Планы 1-го, 2-го этажа. Фрагменты 8. Фасад/сечение в осях "5"-"6" 9. Расстановка осветительных приборов. Визуализация 10. Расчет мест функци
User GnobYTEL : 13 декабря 2011
11 руб.
Технологический процесс механической обработки втулки (курсовой проект)
1. Расчет режимов резания 1.1 Поверхность 8 (получистовое точение поверхности) Глубина резания Подача Скорость резания , [2, c.259] где -среднее значение стойкости инструмента -поправочный коэффициент [4, таб.17]
User Abibok : 17 мая 2021
790 руб.
Технологический процесс механической обработки втулки (курсовой проект) promo
Гидравлика АКАДЕМИЯ ГРАЖДАНСКОЙ ЗАЩИТЫ Задача 8 Вариант 50
Определить количество автонасосов АНР-40-130, необходимое для подачи воды в перекачку, если разность высотных отметок между головным автонасосом и водоисточником Z. Перекачка производится на расстояние L по двум прорезиненным рукавным линиям диаметрами d1 и d2. Головной автонасос, расположенный у места пожара, обеспечивает работу двух стволов с диаметрами насадков dH1 и dH2. Насос работает в режиме α = 0,75. Рукава системы прорезиненные. Примечание: При перекачке из насоса в насос в конце ма
User Z24 : 12 марта 2026
200 руб.
Гидравлика АКАДЕМИЯ ГРАЖДАНСКОЙ ЗАЩИТЫ Задача 8 Вариант 50
up Наверх