Лабораторная работа №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
Написать программу, которая должна “озвучивать” клавиатуру, т.е. после запуска этой программы нажатие любой клавиши на клавиатуре будет сопровождаться звуковым сигналом. Клавиатура при этом должна оставаться работоспособной, т.е. продолжать выполнять свои основные функции в нормальном темпе.
Программа должна быть резидентной, т.е. оставаться в памяти после своего завершения.
В качестве пробного варианта длительность звукового сигнала и частоту задать константами в программе. Когда будет получе
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 руб.
Другие работы
Расчетная часть-РАСЧЕТ ОСНОВНЫХ ПАРАМЕТРОВ ТАЛЕВОЙ СИСТЕМЫ Буровой лебедки ЛБУ-1100: Подбор талевого каната, Подбор шкивов талевой системы, Расчет размеров барабана лебедки, Определение длины талевого каната, необходимого для оснастки талевой системы БУ,
leha.nakonechnyy.92@mail.ru
: 10 августа 2016
Расчетная часть-РАСЧЕТ ОСНОВНЫХ ПАРАМЕТРОВ ТАЛЕВОЙ СИСТЕМЫ Буровой лебедки ЛБУ-1100: Подбор талевого каната, Подбор шкивов талевой системы, Расчет размеров барабана лебедки, Определение длины талевого каната, необходимого для оснастки талевой системы БУ, Определение класса буровой установки, выбор оснастки талевой системы, определение максимальной нагрузки на крюке с учетом возможного прихвата бурильной колонны-Курсовая работа-Дипломная работа-Оборудование для бурения нефтяных и газовых скважин
276 руб.
Муфта клиновая - Вариант №4
HelpStud
: 30 июня 2019
Приспособление для разъемного соединения валов. При соединении необходимо концы валов вставить в муфту таким образом, чтобы отверстие в валах (3) приходилось против окон в муфте (1), затем продеть клинья (2) и затянуть ими валы. Валы (3) изготовлены из стали 08 ГОСТ 1050-88, а муфта (1) и клинья (2) – из стали 40 ГОСТ 1050-88.
По заданию:
1. Созданы 3D модели деталей, входящих в сборочную единицу.
2. Выполнена 3D модель сборочной единицы.
3. Выполнены ассоциативные чертежи всех деталей по их 3
130 руб.
Курсовая работа по дисциплине: Основы передачи дискретных сигналов. Вариант № 6. 4-й семестр.
vindemia
: 30 июня 2015
Задача № 1
Для дискретного симметричного канала без памяти вероятность ошибочного приема элемента равна Рош=7*10(-3). Рассчитать вероятность поражения кодовой комбинации заданной длины n=25, ошибкой кратности t=0...4. [Р (t, n)]. Сделать выводы по результатам расчетов.
Задача № 2
Определить вероятность неправильного приема кодовой комбинации , если для передачи используется код с кодовым расстоянием в режиме исправления ошибок. Длину кодовой комбинации и вероятность ошибочного приема элемента
70 руб.
Программирование. Зачет. Билет №1
Dreyko
: 19 февраля 2017
Билет 1
1. Предмет информатики. Основные задачи.
2. Команды общесистемного назначения.
100 руб.