Лабораторная работа №4, 4 семестр, 7 вариант
Состав работы
|
|
|
|
|
|
|
|
Работа представляет собой rar архив с файлами (распаковать онлайн), которые открываются в программах:
- Microsoft Word
Описание
Написать программу, которая будет эмулировать параллельную работу некоторых потоков. Потоки должны работать циклически. В качестве модели использовать схему “производитель – потребитель”. Один поток (производитель) может помещать случайные (или какие-то определенные – например, только четные числа или квадраты целых чисел и т.п.) числа в буфер (массив заданного размера), для наглядности поток-производитель должен эти числа выводить на экран. Другой поток (потребитель) забирает числа из этого буфера. Для контроля также выполнять вывод на экран чисел, взятых потоком-потребителем из буфера. Вывод разными потоками выполнять в разные строки и/или разным цветом; дополнительно выводить на экран индикатор того, какой именно поток работает в настоящий момент, а также содержимое буфера и текущий процент его заполненности.
На экране параллельная работа потоков может быть представлена следующим образом:
Верхняя строка (производитель): ячейка для вывода текущего сгенерированного числа, признак активности потока (слово, символ, цвет), сообщение о переполнении буфера в случае этого события. Возможно, ещё какая-то полезная информация, например, номер заполняемой ячейки.
Нижняя (или вторая) строка (потребитель): ячейка для вывода текущего прочитанного числа, признак активности потока (слово, символ, цвет), сообщение о пустом буфере в случае этого события. Возможно, информация о номере считываемой из буфера ячейки.
В середине экрана: сам буфер, в который числа добавляются потоком-производителем и из которого считываются (удаляются или перекрашиваются, попадая при этом в его ячейку в нижней строке экрана) потоком-потребителем. Считывание чисел можно производить по принципу стека или очереди. При считывании по принципу очереди после завершения работы потребителя какое-то количество чисел из начала буфера исчезнет, следовательно, буфер будет перемещаться по экрану и в какой-то момент его потребуется переписать заново, от начала.
Отдельной строкой или в углу экрана отображать процент заполненности буфера.
Предусмотреть обработку критических ситуаций:
1) Случай, когда потребителю предоставлено управление, а буфер данных пуст – тогда активный поток должен напрямую отдать управление производителю, а сам уйти в режим ожидания. При этом вопрос с квантом времени для производителя может быть решён по-разному. Например, остаток недоработанного потребителем кванта может быть передан производителю, либо ему может быть выделен новый квант времени.
2) Случай, когда управление предоставлено производителю, а буфер полон и записывать результаты некуда – поток-производитель должен заблокироваться до появления свободного места в буфере и запустить поток-потребитель. Вопрос с квантом может решаться аналогично.
Для того чтобы было возможно пронаблюдать работу потоков в замедленном режиме, в каждом из потоков следует поставить дополнительную задержку (стандартный delay), величину которой задавать с клавиатуры при запуске программы, в качестве параметра командной строки. При запуске без параметров выводить сообщение примерного вида: “Программа запущена со стандартной задержкой, величина которой =…” и формат запуска программы для задания желаемой задержки.
Потоки при работе чередуются случайным образом; регламентировать их работу с помощью таймера (выделять каждому кванты времени, величина которых тоже случайна – в некотором диапазоне). При этом может складываться ситуация, что один и тот же поток несколько раз подряд получит управление. Таймер по окончании выделенного потоку кванта времени изменяет статус этого потока с активного на пассивный, в результате чего внутренний цикл этого потока должен завершиться.
Внутри обработчика прерываний таймера не может находиться вызовов процедур – потоков! Вызовы процедур должны происходить в бесконечном цикле в основной программе. В обработчик прерываний таймера вообще нельзя включать никакие действия, требующие длительного выполнения, например, вызовы циклических процедур, или процедур, работающих с графикой или с диском.
Для выхода из программы предусмотреть какую-то специальную клавишу или комбинацию клавиш (выбор по желанию программиста), информация о ней должна быть известна пользователю – помещена на экране. При нажатии этой клавиши происходит окончание работы потока-производителя, а поток-потребитель закончит свою работу, только когда буфер будет исчерпан, т.е. выработанная информация будет полностью использована.
Контрольные вопросы:
1. Как поведет себя программа, если первым будет выбираться на выполнение поток-потребитель?
2. Каким образом можно создать приоритет тому или другому потоку? Используя только датчик случайных чисел? Добавьте возможность задания приоритета в форме параметра командной строки.
3. Возможно ли добавление в ту же программу новых потоков? Измените программу таким образом, чтобы можно было при ее запуске указывать требуемое количество потоков. При этом функции каждого потока определяются случайным образом. Т.е. может получиться несколько потребителей и один производитель, или наоборот… В крайней ситуации – все производители или все потребители. Как поведёт себя программа в подобном случае?
На экране параллельная работа потоков может быть представлена следующим образом:
Верхняя строка (производитель): ячейка для вывода текущего сгенерированного числа, признак активности потока (слово, символ, цвет), сообщение о переполнении буфера в случае этого события. Возможно, ещё какая-то полезная информация, например, номер заполняемой ячейки.
Нижняя (или вторая) строка (потребитель): ячейка для вывода текущего прочитанного числа, признак активности потока (слово, символ, цвет), сообщение о пустом буфере в случае этого события. Возможно, информация о номере считываемой из буфера ячейки.
В середине экрана: сам буфер, в который числа добавляются потоком-производителем и из которого считываются (удаляются или перекрашиваются, попадая при этом в его ячейку в нижней строке экрана) потоком-потребителем. Считывание чисел можно производить по принципу стека или очереди. При считывании по принципу очереди после завершения работы потребителя какое-то количество чисел из начала буфера исчезнет, следовательно, буфер будет перемещаться по экрану и в какой-то момент его потребуется переписать заново, от начала.
Отдельной строкой или в углу экрана отображать процент заполненности буфера.
Предусмотреть обработку критических ситуаций:
1) Случай, когда потребителю предоставлено управление, а буфер данных пуст – тогда активный поток должен напрямую отдать управление производителю, а сам уйти в режим ожидания. При этом вопрос с квантом времени для производителя может быть решён по-разному. Например, остаток недоработанного потребителем кванта может быть передан производителю, либо ему может быть выделен новый квант времени.
2) Случай, когда управление предоставлено производителю, а буфер полон и записывать результаты некуда – поток-производитель должен заблокироваться до появления свободного места в буфере и запустить поток-потребитель. Вопрос с квантом может решаться аналогично.
Для того чтобы было возможно пронаблюдать работу потоков в замедленном режиме, в каждом из потоков следует поставить дополнительную задержку (стандартный delay), величину которой задавать с клавиатуры при запуске программы, в качестве параметра командной строки. При запуске без параметров выводить сообщение примерного вида: “Программа запущена со стандартной задержкой, величина которой =…” и формат запуска программы для задания желаемой задержки.
Потоки при работе чередуются случайным образом; регламентировать их работу с помощью таймера (выделять каждому кванты времени, величина которых тоже случайна – в некотором диапазоне). При этом может складываться ситуация, что один и тот же поток несколько раз подряд получит управление. Таймер по окончании выделенного потоку кванта времени изменяет статус этого потока с активного на пассивный, в результате чего внутренний цикл этого потока должен завершиться.
Внутри обработчика прерываний таймера не может находиться вызовов процедур – потоков! Вызовы процедур должны происходить в бесконечном цикле в основной программе. В обработчик прерываний таймера вообще нельзя включать никакие действия, требующие длительного выполнения, например, вызовы циклических процедур, или процедур, работающих с графикой или с диском.
Для выхода из программы предусмотреть какую-то специальную клавишу или комбинацию клавиш (выбор по желанию программиста), информация о ней должна быть известна пользователю – помещена на экране. При нажатии этой клавиши происходит окончание работы потока-производителя, а поток-потребитель закончит свою работу, только когда буфер будет исчерпан, т.е. выработанная информация будет полностью использована.
Контрольные вопросы:
1. Как поведет себя программа, если первым будет выбираться на выполнение поток-потребитель?
2. Каким образом можно создать приоритет тому или другому потоку? Используя только датчик случайных чисел? Добавьте возможность задания приоритета в форме параметра командной строки.
3. Возможно ли добавление в ту же программу новых потоков? Измените программу таким образом, чтобы можно было при ее запуске указывать требуемое количество потоков. При этом функции каждого потока определяются случайным образом. Т.е. может получиться несколько потребителей и один производитель, или наоборот… В крайней ситуации – все производители или все потребители. Как поведёт себя программа в подобном случае?
Дополнительная информация
Учебное заведение: Сибирский Государственный Университет Телекоммуникаций и Информатики Межрегиональный центр переподготовки специалистов
Год сдачи: 2018г
Предмет: Операционные системы
Преподаватель: Бах О.А.
Оценка: Зачёт
Год сдачи: 2018г
Предмет: Операционные системы
Преподаватель: Бах О.А.
Оценка: Зачёт
Похожие материалы
Лабораторная работа №4, 4 семестр, 7 вариант
Madam
: 25 сентября 2018
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
50 руб.
Лабораторная работа №4, 5 семестр, 7 вариант
Madam
: 27 сентября 2018
Лабораторная работа №4
По дисциплине: Человеко-машинное взаимодействие
Преподаватель: Ракитский А.А.
Оценка: Зачёт
Год сдачи: 2018г
4.1. Проведите анализ соответствия программы (по вариантам) правилам Нильсена–Молиха.
4.2. Опишите, как принципы организации графического интерфейса учтены (или не учтены) в данной программе.
Вариант 7: «Алгоритм Евклида»
50 руб.
Лабораторная работа №4, 5 семестр, 7 вариант
Madam
: 27 сентября 2018
Вариант 7
Напишите на языке ПРОЛОГ программу, которая в списке слов находит слово максимальной длины и ставит его последним (если таких слов несколько, то переставляется первое найденное). Список вводится с клавиатуры, цель – внутренняя.
Например: Список [“f”,”baxg”,”add”,”qw”] преобразуется в [“f”,”add”,”qw”,”baxg”].
Вариант задачи выбирается по последней цифре пароля. Текст функции сохраняйте в файле. В теле функции использование операторов set и setq не допускается!
50 руб.
Лабораторная работа №3, 4 семестр, 7 вариант
Madam
: 25 сентября 2018
Задание 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
50 руб.
Лабораторная работа №2, 4 семестр, 7 вариант
Madam
: 25 сентября 2018
ЗАДАНИЕ 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.
50 руб.
Лабораторная работа №2, 4 семестр, 7 вариант
Madam
: 25 сентября 2018
Задание:
Написать резидентную программу, которая будет работать, как “будильник” – через заданный интервал времени издавать короткий звуковой сигнал – “тикать” (например, через 1–2 секунды). По завершении более длительного интервала времени (от нескольких секунд до нескольких минут или часов) должен раздаваться более продолжительный мелодичный звуковой сигнал, имитирующий звонок будильника.
Длительность звукового сигнала – “тиканья” – не должна быть слишком большой. Её следует задавать в прогр
50 руб.
Лабораторная работа №1, 4 семестр, 7 вариант
Madam
: 25 сентября 2018
ЗАДАНИЕ 1: Создать форму как показано на рисунке 1.
Рис.1
1. Рекомендуемый порядок размещения на форме компонентов TPanel, TDirectoryListBox, TFileListBox и TSplitter:
- Panel1, Panel2 – в верхней и нижней частях клиентской области ;
- DirectoryListBox1– слева на клиентской области (свойство Align);
- Splitter1;
- FileListBox1 – на всю оставшуюся клиентскую область (свойство Align).
2. Для установки связей между списками DriveCo
50 руб.
Лабораторная работа №5, 4 семестр, 7 вариант
Madam
: 25 сентября 2018
Написать программу, которая будет работать с видеопамятью. Можно выполнить любое из приведенных ниже заданий. Независимо от конкретного задания программа должна работать резидентно. Текст, присутствовавший на экране до запуска программы, не должен портиться никаким образом.
В программе следует использовать два обработчика прерываний – прерываний таймера и прерываний клавиатуры. Прерывания таймера регламентируют скорость перемещения объекта, причем параметр, характеризующий величину скорости, не
50 руб.
Другие работы
Проект наружного освещения индивидуального загородного жилого дома. Рабочий проект. Объект: Индивидуальный загородный жилой дом
GnobYTEL
: 13 декабря 2011
ВЕДОМОСТЬ РАБОЧИХ ЧЕРТЕЖЕЙ ОСНОВНОГО КОМПЛЕКТА
Титульный лист
1. Опись документов
2. Вид здания при архитектурном освещении
3. Фасад в осях "1'"-"8". Привязки осветительных приборов
4. Фасад в осях "А"-"И'". Привязки осветительных приборов
5. Фасад в осях "8'"-"1'". Привязки осветительных приборов
6. Фасад в осях "И"-"А'". Привязки осветительных приборов
7. Планы 1-го, 2-го этажа. Фрагменты
8. Фасад/сечение в осях "5"-"6"
9. Расстановка осветительных приборов. Визуализация
10. Расчет мест функци
11 руб.
80 руб.
Технологический процесс механической обработки втулки (курсовой проект)
Abibok
: 17 мая 2021
1. Расчет режимов резания
1.1 Поверхность 8 (получистовое точение поверхности)
Глубина резания
Подача
Скорость резания
, [2, c.259]
где -среднее значение стойкости инструмента
-поправочный коэффициент [4, таб.17]
790 руб.
Гидравлика АКАДЕМИЯ ГРАЖДАНСКОЙ ЗАЩИТЫ Задача 8 Вариант 50
Z24
: 12 марта 2026
Определить количество автонасосов АНР-40-130, необходимое для подачи воды в перекачку, если разность высотных отметок между головным автонасосом и водоисточником Z. Перекачка производится на расстояние L по двум прорезиненным рукавным линиям диаметрами d1 и d2. Головной автонасос, расположенный у места пожара, обеспечивает работу двух стволов с диаметрами насадков dH1 и dH2. Насос работает в режиме α = 0,75.
Рукава системы прорезиненные.
Примечание: При перекачке из насоса в насос в конце ма
200 руб.