Jump to content

Recommended Posts

Posted

Возможно, вопрос несколько в другую ветку форума, но поскольку целиком я перерыл только эту, задам здесь же и вопрос. Итак - что такое device polling. Принцип работы, преимущества над прерываниями, и если можно - цифры. Заранее благодарен.

Posted

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

 

Если поллинг (опрос) не используется, сетёвка генерирует 1 прерывание на каждый пришедший (а иногда и отправленный) пакет. Соответственно, pps ограничивается количеством прерываний, которые может прожевать комп.

Posted

А что, при поллинге, эффективнее работать будет?

 

Или только в случае наличия достаточно большого буфера у сетевухи?

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

То есть время с момента прерывания до момента возвращения в выполнявшийся код состоит из

1. Собственно время обработки пакета

2. Время сохранения контекста задачи, перехода на обработчик, восстановления контекста и возвращения в исходную задачу.

Поллинг позволяет сократить время 2. Получается, что время 1 полностью зависит от архитектуры сетевой карты?

 

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

Разве нет опасности потерять пакеты при переполнении буферы сетевухи?

Если поллинг (опрос) не используется, сетёвка генерирует 1 прерывание на каждый пришедший (а иногда и отправленный) пакет. Соответственно, pps ограничивается количеством прерываний, которые может прожевать комп.

Верны ли такие расчеты:

Для 100Мбит/с == 12.5 мб/с при размере пакета в 500 байт кол-во пакетов будет составлять 50 000. Получается, что в секунду сетевуха генерит 50 000 прерываний?

И еще вопрос, оффтоповый, но все же... что произойдет с пакетом, если очередное прерывание застанет процессор в обработчике прерывания сетевухи же?

Posted
что произойдет с пакетом, если очередное прерывание застанет процессор в обработчике прерывания сетевухи же?

Не застигнет, прерывание встанет в очередь, и возникнет после обработки первого

Еще вариант - после обработки первого прерывания, но до выхода из него, посмотреть на флаги прерываний, и, при необходимости, обработать эти прерывания, не тратя время на входы - выходы. Имхо это и есть механизм поллинга

  • 17 years later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.