engineerklub | Дата: Среда, 21.06.2023, 05:03 | Сообщение # 1 |
Генералиссимус
Группа: Администраторы
Сообщений: 28633
Статус: Offline
| Операционные системы вариант 18
Тип работы: Работа Курсовая Сдано в учебном заведении: ДО СИБГУТИ
Описание: Необходимо написать программу, реализующую параллельную работу нескольких процессов. Каждый процесс может состоять из одного или не-скольких потоков. Любой из потоков, работающих в составе этих процес-сов, может быть приостановлен и вновь запущен некоторой определенной клавишей (можно использовать буквенные или цифровые клавиши). Нажа-тия клавиш обрабатывать с помощью прерывания от клавиатуры (по ма-териалам лаб. работы №1). Окончание работы программы должно происходить при приостановке всех потоков их ключевыми клавишами либо при нажатии клавиши ESC. При окончании работы необходимо выполнить корректное завершение, т.е. “дочитать” всю информацию из буфера каждого процесса (при его наличии), закрыть все открытые файлы и т.п. – по материалам лаб. работы №3. Те потоки, которые выводят информацию на экран, должны использовать для этого каждый свое отдельное окно, обрамленное рамкой – экран визу-ально делится на несколько окон, в каждом из которых отображается один процесс. Дополнительное информационное окно должно содержать описание управляющих клавиш и краткое сообщение о тех действиях, которые вы-полняются в программе: номер потока, его статус в текущий момент вре-мени (активен, приостановлен, ожидает), другую информацию (указание величины выделенного потоку кванта времени, процент заполненности буфера и т.п.) в зависимости от конкретного потока. Программа должна работать устойчиво, без “зависаний” и непредвиден-ных зрительных эффектов. В случае необходимости указания параметров при запуске программы необходимо предусмотреть и обработать все воз-можные ошибки (с выводом диагностики на экран). Задачи 1, 3, 6 предполагают наличие управляющего блока, который, ис-пользуя прерывания таймера, случайным образом определяет очередной активный поток и выделяет ему кванты времени (возможно, в рамках большего кванта, выделенного всему процессу). Кванты времени – как для процесса в целом, так и для его потоков – изначально задавать некоторой фиксированной величины, но предусмотреть возможность её изменения во время работы путем нажатия некоторых ключевых клавиш (для каждого из потоков предусмотреть свою клавишу) – т.е. можно, например, увели-чить или уменьшить квант только потока-пpоизводителя. При этом допу-стимы разные варианты реализации – “общий” квант может либо меняться, либо оставаться постоянным (тогда при ускорении одного потока другой автоматически замедлится, т.к. величина его кванта уменьшится). Потоки этого класса задач могут иметь три статуса: “активен”, “ожидает” или “приостановлен”. В процессе работы может возникнуть, например, следующая ситуация. Поток-потребитель приостановлен своей ключевой клавишей, следовательно, буфер не освобождается. Поток-производитель активен, он заполнит буфер информацией и перейдёт в состояние ожида-ния. Из этого состояния он сможет выйти только после того, как будет воз-обновлена (нажатием клавиши) работа потока-потребителя, который осво-бодит место в буфере для помещения новой информации. В случае при-остановки производителя возникнет аналогичная ситуация, только с пу-стым буфером. Приостановка/возобновление потока возможны в любом его состоянии – как в активном, так и в состоянии ожидания.
СКАЧАТЬ
|
|
| |
engineerklub | Дата: Среда, 21.06.2023, 05:04 | Сообщение # 2 |
Генералиссимус
Группа: Администраторы
Сообщений: 28633
Статус: Offline
| Задачи 2, 4, 5, 7 должны выполняться равномерно, независимо от степени загрузки системы. Для этого каждой из них необходимо получать управ-ление через фиксированное количество “тиков” системного таймера, во время которого они выполнят какое-то свое элементарное действие (“бе-гущая строка” или “летающий объект” сместится на одну позицию, сменит-ся нота в музыке…). При такой реализации скорость каждого потока будет определяться количеством “тиков” таймера между его запусками. Для уменьшения скорости такого потока достаточно после нажатия ключевой клавиши предоставлять ему управление реже, через большее число “ти-ков”, соответственно для ускорения такого потока – опять же после нажа-тия ключевой клавиши – ему предоставляется управление чаще, в пределе – на каждом “тике”. Так, “бегущая строка” должна двигаться равномерно с постоянной скоростью (если она не приостановлена ключевой клавишей) независимо от количества активных процессов в системе, музыка – тоже играть равномерно… Потоки этого класса задач могут иметь два статуса: “активен” и “приостановлен”. Задания: 2. Музыкальное сопровождение – как минимум несколько нот различной длительности, образующие мелодию. Во включённом состоянии мелодия должна играть в фоновом режиме (по материалам лаб. работы №2). 3. Два потока: один выполняет поиск всех последовательных простых чи-сел и заносит их в буфер, второй осуществляет их вывод из буфера на экран (по материалам лаб. работы №3). 4. Вывод заголовка работы (фамилия и имя автора и название работы) по-стоянно меняющегося цвета. Место вывода (верхняя или нижняя строка экрана) задавать в качестве параметра командной строки. 6. Два потока: один генерирует случайные числа и выбирает в буфер те, которые являются полным квадратом, второй выводит их из буфера на экран (по материалам лаб. раб. №3).
СКАЧАТЬ
|
|
| |