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