[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
И соответственно, можно блокировать доступ к флагу на время операции чтение-модификация-запись (запретить прерывания или делать это одной командой, если процессор позволяет). В принципе, блокировать доступ к общему ОЗУ тоже можно, но это - усложнение аппаратуры.
Если же блокировки доступа нет, то основными являются два принципа:
1.При любом текущем значении флага должно быть известно, какой (единственный!) из процессоров имеет право его изменить. Остальные при данном значении могут его только читать.
2.Длина флага должна быть меньше или равна ширине шины данных, т.е. запись флага должна производиться за один цикл обращения к памяти (пример - если шина 8-битная, то 16-битный счетчик использовать нельзя, даже если проц типа 8088).
E-mail: info@telesys.ru