7

Цитируется с http://en.wikipedia.org/wiki/Interrupt:

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

Мне было интересно, что означает "асинхронный" и "синхронный"?

3 ответа3

8

Когда в этой статье в Википедии упоминается асинхронное прерывание, они используют классическое синхронное и не синхронизированное определение (а) синхронного, которое применяется к цифровой схеме.

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

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

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


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

3

Из словаря этимологии для Synchronous,

1660-е годы, "существующие или происходящие одновременно"
из LL синхронно "одновременный"
из Гк. Синхронизация "происходит одновременно"
от син - "вместе" + хронос "время".
Значение "повторяющиеся в те же последовательные моменты времени" засвидетельствовано с 1670 г.

asynchronous означает "не синхронный".

Теперь вы снова все прочитали в контексте interrupts .

Асинхронное прерывание не было бы напрямую связано с текущей деятельностью - думайте об этом, как будто вы читаете это, и вдруг вы слышите шум позади себя; Вы оборачиваетесь - это потому, что вас прервали асинхронно :-)

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

1

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

Пример: допустим, у меня есть программа, загружающая файл. Я хочу, чтобы моя программа по-прежнему реагировала на загрузку файла, и мне нужно сообщить моей программе, что я закончил. Тем временем, однако, моя программа должна продолжать делать все, что захочет, до тех пор, пока она не будет ** прервана ** завершением загруженного файла. Затем он делает все, что нужно. Это в асинхронном режиме, потому что это не произойдет в предопределенное время или в предопределенном порядке.

Синхронизация означает, что вы ожидали, что это произойдет дальше. Async означает, что вы не знали, когда или если это произойдет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .