|
|||||
Структура реентерабельного программного модуля ⇐ ПредыдущаяСтр 2 из 2 Структура реентерабельного программного модуля
С помощью статических или динамических методов выделяется память под сохраняемые значения. В 1-ой секции, которая работает в привилегированном режиме, заказывается в системной области памяти блок для хранения текущих данных. В конце ее прерывания включается 2-ая секция (непривилегированный режим), которая является собственно телом реентерабельного модуля, который может быть прерван в любой момент. 3-ья секция служит секцией, освобождающей в системной области памяти блок ячеек для хранения текущих данных Основная идея построения и работы модуля заключается в том, чтобы получить в системной области блок ячеек для текущих данных, при этом на вершину стека помещается указатель на начало области данных. Если во время работы центральной секции возник прерывание и другой вычислительный процесс обращается к тому же реентерабельному модулю, то для этого нового процесса вновь заказывается новый блок памяти, и на вершину стека записывается новый указатель. Многократное повторное возможно до тех пор, пока в области системной памяти, выделенной специально для реентерабельной обработки, есть свободные ячейки, число которых достаточно для выделения нового блока. Это динамический способ выделения памяти. При статическом способе выделения памяти заранее для фиксированного числа вычисляемых процессов резервируется область памяти (для каждого процесса своя область), в которой будут располагаться переменные реентерабельного модуля. В качестве таких процессов выступают процессы ввода/вывода (реентерабельный драйвер может управляться параллельно несколькими однотипными устройствами). Кроме реентерабельных модулей существует повторно-входимые, программные модули которые допускают свое многообразное параллельное использование, но в отличие от реентерабельных их нельзя прерывать, они состоят из привилегированных секций. После выполнения очередной привилегированной секции управление может быть передано супервизору, и если он предоставит возможность выполняться другому процессу, то возможно повторное вхождение в этот модуль. Эти модули встречаются чаще реентерабельных и следует подчеркнуть, что у них четко предопределены все допустимые точки входа.
|
|||||
|