Является ли синхронизация времени синхронной или асинхронной и почему? - PullRequest
0 голосов
/ 02 июля 2019

Прерывания, возникающие в результате того, что компьютерный хронометр указывает на завершение временного интервала, назначенного процессу (временной интервал), классифицируются ли они как синхронные или асинхронные прерывания?

1 Ответ

2 голосов
/ 03 июля 2019

Прерывания по времени, поскольку аппаратные прерывания рассматриваются как все аппаратные прерывания как асинхронные.Несмотря на то, что это может привести к путанице, позвольте мне объяснить:

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

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

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

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

...