|
Действием называется изменение контекста потока или, другими словами, действием можно назвать любую последовательность команд, которая изменяет контекст потока. Под контекстом действия понимается только та часть контекста потока, которая используется этим действием. В простейшем случае можно считать, что контекст действия определяется только переменными, которые используются этим действием. Действие называется непрерывным, если оно удовлетворяет следующим двум требованиям:
- не прерывается во время своего исполнения;
- контекст действия изменяется только самим действием.
Если непрерывное действие представляется одной командой микропроцессора, то оно называется непрерывной инструкцией или командой.
В англоязычной литературе для обозначения непрерывного действия используется термин atomic action. Поэтому в русскоязычной литературе можно встретить также термины атомарное действие и неделимое действие, используемые для обозначения непрерывных действий.
Теперь поговорим подробнее о тех требованиях, которым должны удовлетворять непрерывные действия.
Сначала рассмотрим первое требование, которое касается непрерывности действия. Действие может быть прервано только сигналом прерывания, который устанавливает соответствующий флаг микропроцессора. Этот сигнал может генерироваться как внешним устройством, требующим обслуживания, так и самим микропроцессором для обработки исключительных ситуаций, возникающих при выполнении программы. Будем считать, что обработка исключительных ситуаций неизбежна для нормального продолжения работы программы или ее завершения. Поэтому для того, чтобы обеспечить непрерывность действия, необходимо запретить обработку сигнала прерывания от внешних устройств во время выполнения этого действия. Однако отметим, что такой подход работает только в однопроцессорных системах, т. к. в мультипроцессорных системах действия могут выполняться параллельно разными процессорами. Причем возможна такая ситуация, в которой контексты параллельных действий пересекаются. В этом случае даже запрещение обработки прерываний на каждом микропроцессоре не обеспечивает непрерывности действий, т. к. может быть нарушено второе условие непрерывности действия.
То есть, собственно говоря, второе требование к непрерывности действия и обеспечивает непрерывность действия на мультипроцессорных системах или, другими словами, запрещает действию, исполняемому одним процессором, изменять контекст действия, исполняемого другим процессором. |
|