Основные виды ресурсов

Одним из важнейших ресурсов является сам процессор, точнее процессорное

время. Имеется множество методов разделения этого ресурса.

Вторым важным ресурсом является оперативная память. В оперативной памяти

может располагаться одновременно несколько процессов (точнее фрагментов,

участвующих в вычислении), а может вся оперативная память предоставляться

процессам попеременно.

В конкретный момент времени процессор при выполнении вычислений обращается

к очень небольшому числу ячеек оперативной памяти, поэтому память желательно

разделить для возможно большего числа параллельно исполняемых процессов. С другой

стороны, чем больше оперативной памяти предоставлено процессу, тем условия для его

выполнения. Проблема разделения оперативной памяти между параллельно

выполняемыми процессами является наиболее актуальной.

Внешняя память, например магнитный диск, является двумя видами ресурсов:

- собственно память;

- доступ к ней.

Каждый из этих ресурсов может предоставляться независимо друг от друга, но для

работы с внешней памятью необходимы оба вида ресурсов:

- собственно память используется одновременно;

- доступ к внешней памяти попеременный.

Если обращение к внешнему устройству использует механизм прямого доступа, то

такие устройства разделяются параллельно. Если устройство работает с

последовательным доступом, то оно не относится к разделяемым ресурсам, например,

принтер или накопитель на магнитной ленте.

Важным видом ресурсов являются программные модули. Системные программные

модули рассматриваются как ресурсы, которые могут быть разделены между

параллельно выполняемыми процессами.

Программные модули могут использоваться:

- однократно;

- многократно.

Однократно исполняемые модули, как правило, могут быть выполнены только один

раз, поскольку в процессе своего исполнения они могут:

- повредить часть кода;

- повредить исходные данные, от которых зависит ход вычислений.

Однократно исполняемые программные модули вообще не распределяются как

ресурс системы, они, как правило, используются только на этапе загрузки системы.

Повторно используемые программные модули делятся на следующие виды:

- непривилегированные;

- привилегированные;

- реентерабельные.

Привилегированные программные модулиработают в привилегированном

режиме, при отключенной системе прерываний, т.е. никакие внешние события не могут

нарушить естественный порядок вычислений. Привилегированный программный модуль

всегда выполняется до конца и представляет собой попеременно разделяемый ресурс.

Структура привилегированного программного модуля включает следующие секции:

- отключение прерываний;

- собственно тело программного модуля;

- включение прерываний.

Непривилегированные программные модули– это обычные программные

модули, которые могут быть прерваны во время своей работы. В общем случае их нельзя

считать разделяемыми, потому что если его прервать в рамках одного процесса и

запустить еще раз в рамках другого процесса, то промежуточные результаты для первого

процесса могут быть потеряны.

Реентерабельные программные модулидопускают повторное многократное

прерывание своего исполнения и повторный их запуск при обращении из других задач,

т.е. реентерабельные программные модули должны сохранять промежуточные значения

для прерываемых вычислений и их восстановление, когда вычислительный процесс

возобновляется с прерванной точки. Это можно реализовать двумя способами:

- с помощью статических методов выделения памяти под сохраняемые

значения;

- с помощью динамических методов выделения памяти под сохраняемые

значения. Этот метод используется чаще.

Реентерабельный программный модуль делится на следующие секции:

- привилегированный модуль, заказывающий в системной области памяти блок

ячеек для хранения текущих (промежуточных) данных;

- основное тело реентерабельного модуля, которое и может быть прервано.

Работает в непривилегированном режиме;

- привилегированный модуль, освобождающий в системной области памяти

блок памяти, использованный для хранения промежуточных результатов.

При помещении всех промежуточных данных в системную область, на вершину

стека помещается указатель на начало области данных и ее объем. Во время исполнения

центральной секции реентерабельного программного модуля возможно ее прерывание.

Если прерывание не возникло, то в последней секции производится освобождение

использованного блока системной области памяти. Если во время исполнения

центральной части произошло прерывание и другой вычислительный процесс

обращается к тому же реентерабельному модулю, то для этого нового процесса

выделяется новый блок памяти в системной области и на вершину стека записывается

новый указатель. Повторное вхождение возможно, пока не израсходуется область

системной памяти, выделенной специально для реентерабельной обработки.

При статическом способе выделения памяти резервируется область памяти для

фиксированного числа вычислительных процессов, в которых будут располагаться

переменные реентерабельных программных модулей, для каждого процесса своя область

памяти. К таким процессам относятся драйверы ввода/вывода.

Кроме реентерабельных программных модулей еще имеются повторно входимые

модули. Повторно входимые программные модули допускают многократное

параллельное исполнение, но их нельзя прерывать. Повторно входимые программные

модули состоят из привилегированных секций и повторное обращение к ним возможно

только при завершении работы какой-либо секции. После выполнения какой-либо секции

управление передается супервизору, который определит, какой процесс будет

использовать этот модуль и с какой точки. В повторно входимых программных модулях

определены все допустимые (возможные) точки входа. Повторно входимые модули

встречают гораздо чаще, чем реентерабельные.

К ресурсам относятся также информационные ресурсы, т.е. данные.

Информационные ресурсы включают в себя:

- переменные, находящиеся в оперативной памяти;

- файлы.

Если процессы используют данные только для чтения, то такие информационные

ресурсы можно разделять.

Если процессы могут изменять данные, то работы с такими данными должна быть

организована специальным образом.