OSDev

для всех
Текущее время: 29 апр 2024, 19:36

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




Начать новую тему Ответить на тему  [ Сообщений: 11 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: WatchDog
СообщениеДобавлено: 16 авг 2011, 14:39 
Аватара пользователя

Зарегистрирован: 20 апр 2011, 10:54
Сообщения: 145
Сейчас почитал wiki.osdev.org про NMI. Возник вопрос:
В обычноп PC есть WatchDog?
Если есть, то как ему заткнуть рот?

Я ничего о нем не знал и все Хелловорды в PM работали. Может, незнание от ответственности избавляет :-)))?

_________________
Found a CPU. LAPIC ID: 00


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: WatchDog
СообщениеДобавлено: 16 авг 2011, 15:13 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
Мне как-то не попадались сторожевые таймеры в обычных ПК (всякие промышленные не в счёт). Что касается НМИ, его можно отключить средствами чипсета, но это, естественно, зависит от платформы. Но используется сие прерывание для извещения ЦП о какой-то нехорошей аппаратной ошибке, поэтому в нормальных условиях не возникает, а на ненормальные можно не обращать внимания, если система, так сказать, любительская.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: WatchDog
СообщениеДобавлено: 16 авг 2011, 16:56 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
По-моему это достаточно универсальный вариант отключения для PC:
Код:
        mov al,8Fh
        out 70h,al
        in al,71h


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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: WatchDog
СообщениеДобавлено: 16 авг 2011, 19:07 
Аватара пользователя

Зарегистрирован: 20 апр 2011, 10:54
Сообщения: 145
Отключать само NMI наверное не не надо, как еще определить, что компу кирдык. И потом, с APIC, насколько я знаю, удобно использовать NMI.
NMI в принципе тоже Guru Meditation Error (пока не включили APIC).
Главный вопрос был - что раз в пять секунд нигде битик сбрасывать не надо.

_________________
Found a CPU. LAPIC ID: 00


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: WatchDog
СообщениеДобавлено: 16 авг 2011, 19:36 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
Отключать надо только на время инициализации, а потом снова включать. Ну или не включать, если не знаешь или не определился с тем, как будешь обрабатывать возникновение NMI.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: WatchDog
СообщениеДобавлено: 17 авг 2011, 16:57 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
SII писал(а):
используется сие прерывание для извещения ЦП о какой-то нехорошей аппаратной ошибке, поэтому в нормальных условиях не возникает...

На многих чипсетах NMI используется для извещения ЦП об ошибке чётности при обращении к памяти. Соответственно, возникает только при битой памяти или если данные попортились на очень низком аппаратном уровне. Например, данные рушатся из-за плохого питания.
Как обходиться с таким прерыванием, не совсем понятно.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: WatchDog
СообщениеДобавлено: 17 авг 2011, 17:10 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
Yoda писал(а):
Как обходиться с таким прерыванием, не совсем понятно.

По идее, системе нет смысла продолжать работать на неисправной аппаратуре, поэтому должен выполниться выход из системы, ну и потом выключить, либо перезагрузить компьютер.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: WatchDog
СообщениеДобавлено: 17 авг 2011, 18:47 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
Скорей, отБСОДить это дело и зависнуть... Более продвинутая обработка имеет смысл лишь под конкретную аппаратуру, когда разработчик системы знает, в каких именно случаях возникает прерывание и какие действия можно предпринять. Например, на "настоящих" серверах (т.е. мощных компутерах со специальными матерями и т.д. и т.п.) может быть установлено много модулей памяти, и при отказе какого-либо из них часто можно продолжать работу, "прибив" лишь пострадавшие задачи (если нет возможности сохранить их работоспособность каким-либо способом). Но это, повторюсь, специфические случаи, и подобное решение для системы "для всего" не подходит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: WatchDog
СообщениеДобавлено: 18 авг 2011, 23:37 

Зарегистрирован: 16 фев 2010, 22:03
Сообщения: 101
Блокировать NMI имхо смысла нет. Он происходит при критической ошибке (вроде битой памяти). Продолжать работу может быть даже опасно. Либо обрабатывать его должным образом, либо пусть система крешится от того что не задан обработчик NMI, чем от того что рухнет ядро из-за повреждения свои данных или кода, ещё неизвестно что успевшее натворить. А если хочется именно корректно обработать, то зависать/перезагружаться/выводить сообщение об ошибке и делать одно из предыдущих пунктов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: WatchDog
СообщениеДобавлено: 21 авг 2011, 10:14 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Думаю не для кого не секрет, то что я сейчас напишу.

Если посмотреть в документацию IBM PC ps/2 то можно увидеть что сторожевой таймер есть.
Цель у него простая отследить зависание системы. Делает он следующим образом контролирует прерывания если во со времени срабатывания прерывания до момента его сброса прошло большое определенного интервала, то сторожевой таймер генерирует NMI.

Идея хорошая. Но обычно обработчик прерывания должен быть коротким. И как следствие зависнуть он может только в одном случае неисправность железо. Баг и недоработки в коде обработчика не рассматриваю так как в коротком коде и легко найти.

Считаю что даже со сбойным железом компьютер должен работать.
А вот с NMI там дело сложнее. Его источником могут быть разные компоненты и это надо смотреть документацию на конкретную платформу - материнку.
По поводу чётности памяти. Я так понимаю для такой проверки нужно память с "ECC" а в обычных компах такую не ставят.

Ещё ACPI и Power Menager используют NMI под свои нужды. НО тут можно настроить задействовать NMI или нет.


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

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


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

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


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

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