Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 6311
Последний выпуск: 19.06.2015

Может ли обработчик GP прервать другое прерывание? ))

12K
01 ноября 2013 года
ASoftware
87 / / 16.04.2009
Я пишу небольшую ОС (чисто для повышения ЧСВ), уже реализовал защищенный режим, и некую тривиальную многозадачность.

Вопрос в следующем:
Как правильно определить какой процесс вызвал GP ?

есть таблица процессов,
адреса процессов пока записываю вручную:

pr_table:
pr_one dd proc1
pr_two dd proc2

При тике таймера в cs:ip заносится адрес первой программы pr_one, она выполняется до того момента пока таймер снова не тикнет, после тика в pr_one записывается адрес программы (выталкивается из стека) тот адрес откуда она была прервана, загружается второй процесс из pr_twо, сбрасывается заявка в контролере прерываний, передается управление программе с адреса proc2 и все повторяется ...

Задача в том что если в каком либо из процессов возникает GP, я его ловлю в обработчике GP, он выводит сообщение о том что произошла ошибка, и после этого необходимо этот процесс кильнуть.

Я могу удалить этот процесс из таблицы процессов, но вопрос такой:

А может ли какое-нибудь прерывание прервать мой обработчик GP еще ДО того как я сброшу заявку в контроллере прерываний ? (Другой процессор - (в многоядерном процессоре, прерывание от какого-либо устройства, еще что-то?))
Если нет, я тогда просто удаляю процесс из таблицы процессов и система продолжает стабильную работу.

Вопрос может глупый, но информации в инете просто нет. Может кто сталкивался? Я знаю сюда иногда заходят разработчики Kolibri
325
02 ноября 2013 года
sadovoya
757 / / 19.11.2005
Может тут? Похоже камень может сам вмешиваться (и ось). Но вряд ли он это сделает так, чтобы создать конфликт. Иначе что это за защищенный режим...
А чего разрабов Kolibri OS прямо не спросите?
413
02 ноября 2013 года
CassandraDied
763 / / 24.05.2012
Ноуп же. Это ж ещё в древних процессорах реализовано. Когда начинается обработка системного прерывания, флаг разрешения прерываний должен быть сброшен. А потом, по выходу, установлен снова.
sadovoya, я прав?
325
02 ноября 2013 года
sadovoya
757 / / 19.11.2005
Не силен я в защищенных режимах. А вот вопрос так вопрос по "низкоуровневому программированию", зацените, пока не удалили :))
349
04 ноября 2013 года
Phantom-84
656 / / 27.10.2005
Естественно, может, если это "другое прерывание" вызвало исключение.
413
04 ноября 2013 года
CassandraDied
763 / / 24.05.2012
Цитата: Phantom-84
Естественно, может, если это "другое прерывание" вызвало исключение.


Ссылку на пруф, пожалуйста, можно увидеть?

349
05 ноября 2013 года
Phantom-84
656 / / 27.10.2005
Да, пожалуйста:
http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html

Хотя просто логически поразмыслить тоже никто не запрещает.

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог