Как работает ассинхронность на уровне железа процессора
Например, такие операции как:
- таймеры
- ожидания ввода пользователя
- работа с сетью
Процессор находится в каком-то while(true) { ... }? и постоянно проверяет нет ли новых данных. Буду рад также подробным статьям об этом. Интересно как это и в старых ЭВМ работало, так и в современных ПК.
Ответы (1 шт):
В старых ЭВМ, да в принципе это в современных машинах, в контроллере прерываний есть такая замечательная вещь - PIT (programmable interval timer) - это аппаратный настраиваемый таймер. На нём построен отсчёт времени в каком-нибудь ДОСе, если это не реализовано аппаратно, конечно же :). Прерывания клавиатуры тоже реализованы через контроллер прерываний (на старых машинах это была отдельная микросхема - Intel 8259, либо её аналоги; ныне его функции выполняет южный мост мат. платы). Interrupt-ы net-карты вот не знаю где реализованы, но скорее всего это тоже делается через контроллер прерываний, только скорее всего эти обработчики и всё тому подобное настраивается программно, а не аппаратно. И да, так как эти прерывания имеют больший приоритет, нежели программные прерывания, они относятся к отдельной категории - NMI (non-maskable interrupts; немаскируемые прерывания) и отключаются не одной инструкцией ассемблера cli, а требуют работы собственно с контроллером прерываний.
Вот ссылка на хороший сайт, где я смотрю информацию о прерываниях IBM/PC.