Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Программные модули: не­привилегированные, привилегированные и реентерабельные, повторно входимые



Повторно используемые программные модули, в свою очередь, могут быть не­привилегированными, привилегированными и реентерабельными.

Привилегированные программные модули работают в так называемом привилеги­рованном режиме, то есть при отключенной системе прерываний (часто говорят, что прерывания закрыты), так, что никакие внешние события не могут нарушить естественный порядок вычислений. В результате программный модуль выполня­ется до своего конца, после чего он может быть вновь вызван на исполнение из другой задачи (другого вычислительного процесса). С позиций стороннего на­блюдателя по отношению к вычислительным процессам, которые попеременно (причём, возможно, неоднократно) в течение срока своей «жизни» вызывают не­который привилегированный программный модуль, такой модуль будет высту­пать как попеременно разделяемый ресурс. Структура привилегированных про­граммных модулей изображена на рис. 9. Здесь в первой секции программного модуля выключается система прерываний. В последней секции, напротив, вклю­чается система прерываний.

Рис. 9. Структура привилегированного программного модуля

Непривилегированные программные модули – это обычные программные модули, которые могут быть прерваны во время своей работы. Следовательно, в общем случае их нельзя считать разделяемыми, потому что если после прерывания вы­полнения такого модуля, исполняемого в рамках одного вычислительного про­цесса, запустить его ещё раз по требованию другого вычислительного процесса, то промежуточные результаты для прерванных вычислений могут быть потеря­ны. В противоположность этому, реентерабельные программные модули (от англ. Reente­rable – допускающий повторные обращения) допускают повторное многократное прерывание своего исполнения и по­вторный их запуск по обращению из других задач (вычислительных процессов). Для этого реентерабельные программные модули должны быть созданы таким образом, чтобы было обеспечено сохранение промежуточных вычислений для прерываемых вычислений и возврат к ним, когда вычислительный процесс во­зобновляется с прерванной ранее точки. Это может быть реализовано двумя спо­собами: с помощью статических и динамических методов выделения памяти под сохраняемые значения. Основной, наиболее часто используемый динамический способ выделения памяти для сохранения всех промежуточных результатов вы­числения, относящихся к реентерабельному программному модулю, может быть проиллюстрирован с помощью рис. 10.

Рис. 10. Реентерабельный программный модуль

Основная идея построения и работы реентерабельного программного модуля, структура которого представлена на рис. 10, заключается в том, что в первой (головной) своей части с помощью обращения из системной привилегированной секции осуществляется запрос на получение в системной области памяти блока ячеек, необходимого для размещения всех текущих (промежуточных) данных. При этом на вершину стека помещается указатель на начало области данных и её объем. Все текущие переменные реентерабельного программного модуля в этом случае располагаются в системной области памяти. Поскольку в конце привиле­гированной секции система прерываний включается, то во время работы цен­тральной (основной) части реентерабельного модуля возможно её прерывание. Если прерывание не возникает, то в третьей (заключительной) секции осуществ­ляется запрос на освобождение использованного блока системной области памя­ти. Если же во время работы центральной секции возникает прерывание и дру­гой вычислительный процесс обращается к тому же самому реентерабельному программному модулю, то для этого нового процесса вновь заказывается новый блок памяти в системной области памяти и на вершину стека записывается новый указатель. Очевидно, что возможно многократное повторное вхождение в реентерабельный программный модуль до тех пор, пока в области системной памяти, выделяемой специально для реентерабельной обработки, есть свободные ячейки, число которых достаточно для выделения нового блока.

Что касается статического способа выделения памяти, то здесь речь может идти, например, о том, что заранее для фиксированного числа вычислительных про­цессов резервируются области памяти, в которых будут располагаться перемен­ные реентерабельных программных модулей: для каждого процесса – своя область памяти. Чаще всего в качестве таких процессов выступают процессы ввода/вы­вода и речь идет о реентерабельных драйверах (реентерабельный драйвер мо­жет управлять параллельно несколькими однотипными устройствами).

Кроме реентерабельных программных модулей существуют еще повторно входимые (от англ. Re-entrance). Этим термином называют программные модули, которые тоже допускают свое многократное параллельное использование, но в отличие от реентерабельных их нельзя прерывать. Повторно входимые программные мо­дули состоят из привилегированных секций и повторное обращение к ним воз­можно только после завершения какой-нибудь из таких секций. После выпол­нения очередной привилегированной секции управление может быть передано супервизору, и если он предоставит возможность выполняться другому процес­су, то возможно повторное вхождение в рассматриваемый программный модуль. Другими словами, в повторно входимых программных модулях четко предопре­делены все допустимые (возможные) точки входа. Следует отметить, что по­вторно входимые программные модули встречаются гораздо чаще реентерабель­ных (повторно прерываемых).

Наконец, имеются и информационные ресурсы, то есть в качестве ресурсов мо­гут выступать данные. Информационные ресурсы могут существовать как в виде переменных, находящихся в оперативной памяти, так и в виде файлов. Если про­цессы используют данные только для чтения, то такие информационные ресурсы можно разделять. Если же процессы могут изменять информационные ресурсы, то необходимо специальным образом организовывать работу с такими данными.





Дата публикования: 2015-01-26; Прочитано: 5931 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...