С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.76
Mindsurfer
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 15
#1

Как реализовать обработку прерываний в С++? - C++

24.12.2012, 14:05. Просмотров 2705. Ответов 11
Метки нет (Все метки)

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

Вариант 1. Реализация планировщика с двумя состояниями:
ГОТОВ <-> ВЫПОЛНЕНИЕ


Вариант 2. Реализация планировщика с тремя состояниями:
ГОТОВ <-> ВЫПОЛНЕНИЕ -> ОЖИДАНИЕ

В качестве ожидаемого события может быть выбрано нажатие определенной клавиши.

Вариант 3. Реализация планировщика с тремя состояниями, где величина кванта зависит от приоритета процесса, приоритет можно повысить или понизить.

Например: Процесс блокируется по нажатию определенной клавиши.
(+ / -) – (увеличение / уменьшение) приоритета.
Пробуждение – по нажатию той же клавиши.

1.4. Общая схема работы

1. запуск планировщика
2. инициализация процессов и постановка их в очередь готовых к выполнению
3. выбор первого процесса из очереди готовых
4. обращение к контексту процесса и запуск процесса
5. в каждом элементарном цикле обработка счетчика тиков и проверка истечения кванта:
если квант закончился – передача управления планировщику, нет продолжение работы процесса
6. для прерванного процесса запоминается контекст, а процесс ставится в очередь готовых
7. если очередь не пуста – возврат на 3, иначе завершение программы

1.5. Требования к реализации (для всех вариантов)
  • три программных модуля + планировщик
  • наличие структуры, имитирующей БУП
  • обязательно инициализируемая в начале работы очередь готовых процессов
  • возможность изменения кванта
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.12.2012, 14:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как реализовать обработку прерываний в С++? (C++):

Как лучше реализовать обработку строки? - C++
Здравствуйте, делаю простецкий обработчик HTTP заголовков. Как лучше сделать, с начало узнать длину подстроки с заголовками, а потом...

Необходимо реализовать обработку исключительных ситуаций в программе - C++
Необходимо реализовать обработку исключительных ситуаций в программе, в котором реализуется циклический алгоритм вычисления вектора...

Реализовать обработку и файловую запись/чтение массива с большим количеством элементов - C++
такую задачу поставили... имеется 600 000 элементов. Каждому элементу присвоить значение и по 300 000 записать в файл. массив такое...

Реализовать ввод, формирование/обработку и вывод массивов с при-менением функций - C++
Задачка такова: Написал код: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;time.h&gt; using namespace std; int f(int A){A =...

Создать динамический массив. ввод,вывод и обработку элементов массива реализовать через функции - C++
создать динамический массив. ввод,вывод и обработку элементов массива реализовать через функции

Как осуществить Обработку бинарного файла? - C++
Файл содержит произвольные данные. Определить, встречается ли в файле определенная последовательность байт (заданных виде массива...

11
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
24.12.2012, 14:12 #2
Прерывания - это низкий уровень, так что тебе в раздел ассемблера, паскаля, может быть решётки и джавы. На плюсах прерываний просто нет, есть: события, хуки, сигналы.
0
Mindsurfer
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 15
24.12.2012, 14:21  [ТС] #3
Господин преподаватель желает видеть в С++

Добавлено через 3 минуты
Или просто в С, да хотя бы в С#, но как-то так =_="
0
Toshkarik
1147 / 864 / 51
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
24.12.2012, 14:33 #4
Цитата Сообщение от taras atavin Посмотреть сообщение
решётки и джавы
Откуда в них то? C++ уж более низкоуровнев.

Mindsurfer, ассемблерные вставки вам в помощь.
0
Mindsurfer
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 15
24.12.2012, 14:54  [ТС] #5
Это как? Просто ассемблер мы абсолютно не проходили... За 2 дня успею освоить настолько, чтобы справиться с этим?
0
Toshkarik
1147 / 864 / 51
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
24.12.2012, 15:24 #6
Mindsurfer, ну тут уже все от Вас зависит.
0
Kastaneda
Jesus loves me
Эксперт С++
4697 / 2901 / 238
Регистрация: 12.12.2009
Сообщений: 7,388
Записей в блоге: 2
Завершенные тесты: 1
24.12.2012, 15:39 #7
При чем тут обработка прерываний если речь идет об имитации планировщика?
Это все можно сделать гораздо проще, чем кажется. По нажатию клавиши менять задачу, сохраняя ее контекст. Сомневаюсь, что нужно сохранять стек-фрейм и все регистры, достаточно сохранить значение всех переменных (т.е. ни какого ассемблера) и точку останова.

Добавлено через 1 минуту
А не, я что-то внимания не обратил на это
Цитата Сообщение от Mindsurfer Посмотреть сообщение
Надо разработать три программных модуля, каждый процесс после запуска представляет уникальный процесс
все немного сложнее
1
Mindsurfer
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 15
24.12.2012, 15:52  [ТС] #8
Но надежда у меня есть?
0
Kastaneda
Jesus loves me
Эксперт С++
4697 / 2901 / 238
Регистрация: 12.12.2009
Сообщений: 7,388
Записей в блоге: 2
Завершенные тесты: 1
24.12.2012, 15:55 #9
Если уверенно С++'ом владеешь, то есть
1
Mindsurfer
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 15
24.12.2012, 16:35  [ТС] #10
Можешь помочь?
0
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
24.12.2012, 17:00 #11
Цитата Сообщение от Toshkarik Посмотреть сообщение
C++ уж более низкоуровнев.
Он даже ОО.
0
silent_1991
29.12.2012, 07:22     Как реализовать обработку прерываний в С++?
  #12

Не по теме:

Цитата Сообщение от taras atavin Посмотреть сообщение
Он даже ОО.
Нет, он с поддержкой ОО-парадигмы. Писать в чисто процедурном стиле никто не запрещает, в отличие от чисто-ОО языков.

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.12.2012, 07:22
Привет! Вот еще темы с ответами:

Как распараллелить обработку массива данных? - C++
Есть массив данных. Есть функция, которая обрабатывает элемент этого массива. Надо распараллелить обработку. Для этого хочу в цикле...

Обработчик прерываний - C++
Есть такое задание: &quot;При нажатии символьной клавиши с нажатой клавишей Shift выводить её код. Для вывода использовать прерывание...

Обработка прерываний - C++
Доброго времени суток. Пытаюсь выполнить пример программы с использованием прерывания, взятый из справки Borland C++. #include &lt;stdio.h&gt;...

Организация прерываний в DOS - C++
Доброе время суток. Возникла проблема с прерываниями в DOS. Недавно начал изучать их использование в написании программ, так что заранее...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
29.12.2012, 07:22
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.