Назад | Перейти на главную страницу

Как сетевая карта отправляет аппаратное прерывание?

Некоторый контекст.

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

Теоретически я знаю, как работает аппаратное прерывание, но как оно конкретно работает, когда сетевая карта получает пакеты информации? Что происходит на аппаратном уровне? Как правильно диагностировать, произошло ли физическое повреждение, чтобы избежать того, что по сути сводится к выбрасыванию деталей в проблему?

Теоретически я знаю, как работает аппаратное прерывание, но как оно конкретно работает, когда сетевая карта получает пакеты информации? Что происходит на аппаратном уровне?

Когда сетевая карта получает информацию, она проверяет, выполняются ли условия для запуска аппаратного прерывания. Обычно это делается во встроенном ПО контроллера сетевой карты. Если, например, прерывание приема уже было отправлено, но еще не подтверждено, нет причин для отправки другого.

Если сетевая карта решает отправить прерывание, фактический механизм зависит от интерфейса сетевой карты и того, как он настроен. Старый способ заключался в изменении напряжения на выделенной линии прерывания. Это будет переходить к контроллеру прерываний, который обычно утверждает некоторую другую строку, объединяющую несколько прерываний. Затем ОС будет спрашивать контроллер прерываний, какие прерывания сработали.

Более новый способ - "прерывания, сигнализируемые сообщением" (MSI), где сетевая карта в основном записывает определенное слово по определенному адресу, и это вызывает прерывание, которое генерируется каким-либо другим оборудованием, обычно контроллером шины. Это позволяет устройству иметь больше прерываний, а также нацеливать прерывания на определенные процессоры.

Как правильно диагностировать, произошло ли физическое повреждение, чтобы избежать того, что по сути сводится к выбрасыванию деталей в проблему?

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