OSDev

для всех
Текущее время: 22 окт 2017, 03:48

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: как обходить исключения
СообщениеДобавлено: 04 май 2014, 10:10 

Зарегистрирован: 10 апр 2012, 23:19
Сообщения: 274
вот как ни задам вопрос, ответа почти ни разу не дождался.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как обходить исключения
СообщениеДобавлено: 04 май 2014, 14:48 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1025
Откуда: Балаково
В хорошем вопросе есть половина ответа :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как обходить исключения
СообщениеДобавлено: 04 май 2014, 23:18 

Зарегистрирован: 10 апр 2012, 23:19
Сообщения: 274
Himik писал(а):
В хорошем вопросе есть половина ответа :)

тогда вопрос безсмысленно задавать,
большую часть всего, накопал самостоятельно.

Зачем нужен форум тогда, просто так поболтать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как обходить исключения
СообщениеДобавлено: 05 май 2014, 02:20 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1025
Откуда: Балаково
Вопрос "обхождения" и "реакции" на исключения является в основном проблемой пользовательских приложений, а не ОС. Некоторые исключения может обрабатывать ОС, а по остальным исключениям ОС может передавать управление в приложения, используя заранее установленные протоколы и механизмы взаимодействия. Пожалуй реализация механизма "сигналов" и будет твоей основной задачей. Я этим ещё не занимался.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как обходить исключения
СообщениеДобавлено: 05 май 2014, 13:34 

Зарегистрирован: 10 апр 2012, 23:19
Сообщения: 274
Himik писал(а):
Вопрос "обхождения" и "реакции" на исключения является в основном проблемой пользовательских приложений, а не ОС. Некоторые исключения может обрабатывать ОС, а по остальным исключениям ОС может передавать управление в приложения, используя заранее установленные протоколы и механизмы взаимодействия. Пожалуй реализация механизма "сигналов" и будет твоей основной задачей. Я этим ещё не занимался.

мне надо делать отладку базовых кодов OC, и когда приложения сбоят нужно видеть где и в каком месте они сбоят,
а у меня получается что ОС просто вырубается.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как обходить исключения
СообщениеДобавлено: 05 май 2014, 14:18 
Аватара пользователя

Зарегистрирован: 20 мар 2014, 12:53
Сообщения: 45
У меня похожая ситуация.

Реализовал простой вариант.
... На всех не подключенных прерываниях висит обработчик, который выводит номер сработавшего прерывания. При возникновении исключения выводится состояние процессора на момент останова. Можно получить значение programm counter на момент останова.

В планах подключить мини консоль, способную снять дамп стека (и прочее) и вернуть процессор систему в основное состояние (разными методами). В планах также модуль "песочница", который полностью копирует все данные системы (а может, и код...) и состояние процессора (при запуске тестовой задачи) . При возникновении ошибки модуль возвращает систему в начальное состояние, но мне такое еще рано и не нужно.

_________________
http://osdev.ru/viewtopic.php?f=4&t=893 - GenOS


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как обходить исключения
СообщениеДобавлено: 05 май 2014, 14:37 
Аватара пользователя

Зарегистрирован: 20 мар 2014, 12:53
Сообщения: 45
Кстати говоря...
Не смог понять, можно ли простыми способами определить номер сработавшего прерывания...

Поэтому, чтобы определять номер прерывания в системе висит 256 обработчиков-затычек, по одному на номер... Можно проще?

_________________
http://osdev.ru/viewtopic.php?f=4&t=893 - GenOS


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как обходить исключения
СообщениеДобавлено: 05 май 2014, 15:58 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1056
Можно. Но Я пока так не делал. Внешних прерываний пока что 24 шт и больше не бывает.
А определить можно, читаешь ISR-регистр из контроллёра прерываний и смотришь на каком бите по счёту единица, такой и номер у вектора прерывание.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как обходить исключения
СообщениеДобавлено: 05 май 2014, 16:43 

Зарегистрирован: 10 апр 2012, 23:19
Сообщения: 274
У меня с верху стоит панелька на ней должны отображатся ошибки,
а оно не всегда отображаются, из-за фатальных ошибок,
нудно чтобы отображалось.


Вложения:
SCR.png
SCR.png [ 1.6 КБ | Просмотров: 3220 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как обходить исключения
СообщениеДобавлено: 05 май 2014, 18:46 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1056
Для того чтобы критическая ошибка не вызывала падения системы система должна быть устойчивой. Один из принципов устойчивости это наличие нескольких независимых модулей, частей. У меня таким модулем является отладчик и Ядро ОС. Они никак не связаны между собой кроме как в месте вызова прерывания.

Стоит также рассказать про управление. Управление строиться иерархически. Т.е управление можно изобразить в виде дерева.
Так вот в низу элементы покрывают небольшую область. А те кто стоит выше включают знания тех кто внизу.
Так вот во время вызова исключение управление должно передаваться тому кто выше так как у него больше знаний для принятия решения.
Так вот ближе к нашим баранам кто выше прерывания? Вначале управление передаётся программе в модуль обработки исключения. Если она не знает что делать, то управление передаётся выше стоящему. Кто выше прикладного приложения? Отладчик. Вот отладчик и делает вывод информации. Он принимает решение либо устранить неисправность. К примеру просто проигнорировать и перейти на следующую инструкцию.
Но что делать если отладчик этого сделать не может? Ответ прост управление должно перейти выше стоящему. А кто выше отладчика? Человек, программист который управляет этим отладчиком. Управление передаётся ему к примеру в виде консоли. Программист может устранить ошибку к примеру сменить не правильный селектор на правильный. Но как правило это просто запуск зарастание сохранённого состояния ядра. Что касается отладки прикладного ПО то это просто уничтожение процесса и передачи управления любому другому.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB