Как техника прерывания помогает реализовать многопоточность? - PullRequest
2 голосов
/ 29 февраля 2012

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

Большое спасибо!

Ответы [ 4 ]

3 голосов
/ 29 февраля 2012

Наиболее распространенная реализация планирования потоков по времени и событиям основана на прерываниях. Например, аппаратный таймер генерирует периодические прерывания. ISR, который их обрабатывает, может сохранить состояние текущего выполняющегося потока в структуру состояний потока и затем загрузить состояние другого потока из другой структуры и при выполнении последней инструкции ISR (своего рода «возврат из прерывания» / IRET) заставляет ЦП выполнять этот другой поток.

2 голосов
/ 29 февраля 2012

'Или какова взаимосвязь между многопоточностью и прерыванием?'

В большинстве современных упреждающих ОС прерывание - это то, как вводится ОС - если нет прерывания, ОС ничего не делает. Прерывания бывают двух видов - аппаратные прерывания от устройств / драйверов (т. Е. Диск, клавиатура, сетевая карта, мышь, USB, оборудование для управления памятью, аппаратное обеспечение таймера) и «программные прерывания», т. Е. системные вызовы. Любой тип прерывания может изменить набор готовых / запущенных потоков. По сути, ОС - это большой обработчик прерываний, который может изменить набор потоков, которые будут выполняться после возврата прерывания.

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

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

Без прерываний и вытеснения производительность дисков, сетей, USB, дисплеев, почти все в наших настольных системах будет настолько ужасно плохой, что приложения, такие как потоковое видео, просто не будут работать. Когда микросхема NIC имеет хороший большой буфер видео, она может вызвать аппаратное прерывание, запустить драйвер и загрузить пользовательский буфер с данными и создать поток в приложении потокового видео, которое ожидало на I / О, готов / работает, чтобы он мог отображать данные.

1 голос
/ 29 февраля 2012

Это в точности аналогично тому, как умение работать с разным временем помогает.Если поток может быть прерван для запуска другого потока, вам не нужно беспокоиться о том, что поток перегружает процессор и не позволяет другим потокам продвигаться вперед.

0 голосов
/ 29 февраля 2012

Многопоточность

thread1 ______          _____ 
thread2       _____          _____
thread3            _____          _____

потоки делят процессорное время

прерывание

isr              ________
threadn _________        _________

прерывание всегда вызывает переключение контекста на обработчик прерываний / процедуру обработки прерывания и вынуждает процессор отнимать время.

...