Управление доступом в системах с сегментной организацией памяти
При выполнении процессов в системах с сегментной организацией памяти, каждому процессу назначаются определенные права доступа к его сегментам, и соответственно, ограничивается или даже запрещается доступ к сегментам других процессов или сегментам ОС.
Основными видами прав доступа являются следующие:
1. Read (R). Процессу разрешается чтение информации из сегмента, то есть он может выбирать любой элемент информации, содержащийся в сегменте. При необходимости, процесс может сделать полную копию этого сегмента (в своей области памяти).
2. Write (W). Процессу разрешается запись данных в сегмент. Он может изменить любой элемент информации, содержащийся в сегменте, и поместить в него новую информацию. При необходимости, процесс может полностью уничтожить всю информацию сегмента.
3. eXecute (X). Процесс получает разрешение для выполнения сегмента, то есть он может работать с ним, как с программой, в частности, запускать эту программу на выполнение.
4. Append (A). Дополнение. Процессу разрешается дополнение сегмента новой информацией, которая записывается в конец сегмента. Нельзя изменять существующую информацию.
Информация о видах доступа к сегменту хранится в дескрипторе сегмента, который имеет следующий общий формат:
· P – бит-признак присутствия сегмента в ОП.
· M – адрес внешней памяти, по которому сегмент следует прочитать из внешней памяти, чтобы процесс мог продолжать свое выполнение.
· L – длина сегмента. Значение длины используется для контроля возможного выхода смещения dv за границу сегмента. Если в ходе преобразования происходит пересечение границы, то вырабатывается исключение по выходу за границу сегмента. ОС в этом случае принимает управление на себя и прекращает выполнение процесса.
· Признаки доступа к сегменту. Называются признаками защиты. Значение этих признаков проверяется для каждого процесса для того чтобы контролировать возможность выполнения соответствующей операции доступа к сегменту. Если оказывается, что операция не разрешена, то генерируется прерывание, в результате обработки которого выполнение процесса прекращается .
· Начальный адрес сегмента.
При использовании четырех битов доступа в системе может быть образовано всего 16 различных режимов управления доступом путем разрешения или запрета некоторых из них. Часть из этих режимов используется, некоторые не имеют практического смысла. В качестве примера можно рассмотреть 8 режимов управления доступом для R, W, X.
Режим | R | W | X |
0. Любые виды доступа в этом режиме блокируются. Режим необходим для защиты от несанкционированного доступа со стороны какого-либо другого процесса.
1. Разрешается доступ только на выполнение записанной в сегменте программы. Режим необходим, когда процессу нужно разрешить использовать программу, но нельзя её изменять или копировать.
2. Не используется. Не имеет смысла предоставлять процессу право изменять содержимое, не позволяя его читать.
3. --//--.
4. Разрешает доступ к сегменту только для чтения. Используется в том случае, когда процесс должен получать доступ к информации, но не может её изменять.
5. Разрешаются операции чтения и выполнения. Это необходимо в том случае, когда процессу разрешается исполнять программу, содержащуюся в сегменте, но нельзя изменять её исходную копию. В этом режиме допускается копирование содержимого сегмента в область памяти процесса с дальнейшей модификацией этой копии (если требуется).
6. Разрешаются операции чтения и записи данных в сегмент. Это необходимо в случаях, когда в сегменте располагаются данные, которые процесс может читать и модифицировать, но которые должны быть защищены от попытки выполнения, так как данные не являются программными.
7. Предоставляет неограниченный доступ к сегменту. Необходим для того, чтобы позволить процессу полностью распоряжаться информацией в сегменте и выполнять обработку любого вида.