20.01.2017, 18:36
|
#19
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Статика
Сообщение от Phantom
Синхронизация осуществляется при помощи манипуляции битов в различных регистрах. Есть бит, которым можно разрешить или запретить все прерывания одним махом, но кроме того есть биты в разных регистрах для манипуляции каждым прерыванием по отдельности. По умолчанию в компиляторах Си предлагается к использованию макрос при объявлении функции-прерывания, который блокирует все прерывания при входе в прерывание и разрешает при выходе. Таким образом все прерывания будут выполняться последовательно (прерывание непрерывно, лол). Но при желании можно добиться поведения, когда прерывания будут вклиниваться в другие прерывания, но говорят, что это может привести к проблемам. Я с ассемблером знаком мало, но вроде бы для компилятора вызов каждого прерывания - это довольно напряжная ситуация, потому что это происходит в непредсказуемый момент времени и нужно правильно эти ситуации разруливать. А при нескольких вложенных прерываниях, то ли регистров общего назначения на всё может не хватить, то ли ещё чо-то там. Может кто-то из булочников разъяснит подробнее.
|
Ok. Кажись, в универе кодили такое.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|