Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
maxvell
0 / 0 / 0
Регистрация: 25.03.2012
Сообщений: 4
#1

прерывания - C++

25.03.2012, 17:23. Просмотров 1334. Ответов 9
Метки нет (Все метки)

можно ли создать такую программу, которая вообще никак не будет реагировать на прерывания?
на самом деле задался вопросом о вычислении скорости выполнения операций. Написал код, а потом вспомнил о том, как лектор рассказывал о прерываниях и понял, что результат работы программы может быть каким угодно, так как программа может не выполняться, а время будет идти.
Если отключить обработку никак нельзя, не могли бы вы подсказать, где прочитать о том, что можно делать с прерываниями в с/с++.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.03.2012, 17:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос прерывания (C++):

Прерывания asm - C++
Не могу использовать прерывания(int) в встроенном ассемблере. Вылезает ошибка доступа. Помогите пожалуйста помогите.

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

Таблица векторов прерывания - C++
Здравствуйте, на одном сайте видел следующую запись: static void (* near const _vect)(void) @0xFFC0 = { Dummy_ISR, //...

Условие прерывания цикла - C++
Из-за чего происходит(условие прерывания) выход из цикла? Мои предположения что пока b не равно 0, то цикл выполняется, как только...

Программа обработки прерывания от клавиатуры должна: - C++
1. Распознавать нажатие горячей комбинации клавиш и реагировать на него звуком 2. При первом нажатии горячей комбинации переходить в...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
NoMasters
Псевдослучайный
1754 / 1097 / 72
Регистрация: 13.09.2011
Сообщений: 3,134
25.03.2012, 18:54 #2
Монопольно пользоваться всеми ресурсами, очевидным образом, можно только в однозадачной системе.
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
25.03.2012, 19:25 #3
А какая система то? Что ж ты молчишь? Отвечай!
Ты под Windows пишешь?
Или может быть под DOS?
Или микроконтроллеры программируешь?
0
maxvell
0 / 0 / 0
Регистрация: 25.03.2012
Сообщений: 4
25.03.2012, 19:30  [ТС] #4
пишу под linux ubuntu. но могу и под виндой - не принципиально. Интересно, имеется ли вообще такая возможность? или можно ли её как-нибудь эмулировать, если возможно только в однозадачных системах?
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
25.03.2012, 19:40 #5
Цитата Сообщение от maxvell Посмотреть сообщение
пишу под linux ubuntu. но могу и под виндой - не принципиально. Интересно, имеется ли вообще такая возможность? или можно ли её как-нибудь эмулировать, если возможно только в однозадачных системах?
Тебе же сказали, в многозадачных системах работа с прерываниями запрещена и бессмысленна.
Скажи лучше зачем тебе понадобились прерывания.
0
maxvell
0 / 0 / 0
Регистрация: 25.03.2012
Сообщений: 4
25.03.2012, 19:48  [ТС] #6
я написал в начале, что нужны не прерывания, а их отсутствие.
нужно протестировать время работы алгоритма. для этого используется clock() из ctime. так вот, чтобы измерения были более точными, нужно, если прерывания вызываются, сохранить текущее значение clock(), а при возврате к программе - измерить clock() заново и продолжить работу. Есть что-нибудь подходящее или где-нибудь можно об этом прочитать?
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
25.03.2012, 19:55 #7
Цитата Сообщение от maxvell Посмотреть сообщение
я написал в начале, что нужны не прерывания, а их отсутствие.
нужно протестировать время работы алгоритма. для этого используется clock() из ctime. так вот, чтобы измерения были более точными, нужно, если прерывания вызываются, сохранить текущее значение clock(), а при возврате к программе - измерить clock() заново и продолжить работу. Есть что-нибудь подходящее или где-нибудь можно об этом прочитать?
Понимаешь, для многозадачных систем ты просишь невозможное (поправьте если я ошибаюсь)
Ну представь ситуацию, пользователь щёлкнул по твоей программе, она стала засекать скорость алгоритма, и тут пользователь одновременно начал играть в "Сапёра".
Как ты запретишь ему это делать?
Отсюда вывод, оценивай производительность алгоритма либо косвенно (добавь в программу счётчик операций)
Либо пиши под DOS.

Кто-нибудь знает ещё варианты?
0
villu
203 / 204 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
25.03.2012, 20:07 #8
можно ли создать такую программу, которая вообще никак не будет реагировать на прерывания?
на самом деле задался вопросом о вычислении скорости выполнения операций. Написал код, а потом вспомнил о том, как лектор рассказывал о прерываниях и понял, что результат работы программы может быть каким угодно, так как программа может не выполняться, а время будет идти.
Если отключить обработку никак нельзя, не могли бы вы подсказать, где прочитать о том, что можно делать с прерываниями в с/с++.
А зачем? Если под линукс пишешь, то есть такой вызов clock, (time.h), который
SYNOPSIS
#include <time.h>

clock_t clock(void);

DESCRIPTION
The clock() function returns an approximation of processor time used by the program.

RETURN VALUE
The value returned is the CPU time used so far as a clock_t; to get the number of seconds
used, divide by CLOCKS_PER_SEC. If the processor time used is not available or its value
cannot be represented, the function returns the value (clock_t) -1.
1
maxvell
0 / 0 / 0
Регистрация: 25.03.2012
Сообщений: 4
25.03.2012, 20:43  [ТС] #9
можно поподробней, что значит: пиши под DOS?
собственно clock() и пользуюсь. но он выдаёт довольно сильно различающиеся результаты.. я подумал, что это связано с прерываниеми, разве нет?
0
villu
203 / 204 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
25.03.2012, 21:00 #10
ну тогда смотри man times, и
man sysconf про _SC_CLK_TCK
и да, "запретить прерывания" может только модуль ядра, а под виндой, полагаю, только драйвер
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.03.2012, 21:00
Привет! Вот еще темы с ответами:

Прерывания в ОСи: прототип функции-обработчика - C++
Как реализовать прерывания на C++. Какой должен быть прототип функции-обработчика. Как делать выход из обработчика. Mожет callback надо...

[Вопрос] Перехват прерывания прямым доступом к вектору прерывания - Assembler
Всех приветствую! В данный момент разбираюсь с обработкой аппаратного прерывания (прерывание таймера 08h и 1Ch, -//- клавиатуры 09h). ...

Вычислить адрес вектора прерывания по номеру прерывания. - Assembler
17. По заданному номеру прерывания (13 h) вычислите логические адреса хранения исходных адресов обработчиков прерывания в таблице векторов....

Обработчик прерывания и перехват прерывания - Assembler
Доброе время суток, я чтиаю книгу Калашникова-Ассемблер и уже втрой день не могу понять почему обработчик не перехватывает прерывания и не...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
25.03.2012, 21:00
Ответ Создать тему
Опции темы

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