4.4.5. Методы защиты памяти

К оглавлению1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 
34 35 36 37 38 39 40 41 42 43 44 45 

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

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

Реализация идеи защиты памяти в любом случае не должна сопровож­даться заметным снижением производительности машины и не требовать больших аппаратных затрат.

Различают три способа защиты памяти: по граничным адресам, по мас­кам и по уровням привилегий (ключам).

Защита памяти по граничным адресам

Защита памяти по граничным адресам осуществляется с помощью регистров и узлов сравнения кодов, размещаемых в блоке защиты памяти (БЗП). Реализация этого способа защиты предусматривает выделение для ка­ждой программы определенной области ОП, составленной из ячеек с после­довательными адресами. Границы области отмечаются фиксированием адре­сов её начальной и конечной ячеек. Граничные адреса вводятся в регистры БЗП управляющей программой операционной системы перед началом вы­полнения каждой рабочей программы. При выполнении данной рабочей про­граммы каждый поступающий в ОП исполнительный адрес с помощью узлов сравнения кодов сравнивается с граничными адресами. По результатам срав­нения устанавливается возможность обращения к ОП по поступившему адре­су: если он находится в пределах граничных адресов, то разрешается доступ к соответствующей ячейке памяти, в противном случае вырабатывается сиг­нал запроса на прерывание выполняемой программы.

Преимущество данного способа защиты памяти состоит в том, что он позволяет защищать области памяти произвольной длины. Кроме того, блок защиты достаточно прост, а его функционирование не приводит к значитель­ным временным затратам. Однако необходимость размещения программ в областях памяти с последовательными номерами ячеек и ограниченных дву­мя граничными адресами существенно снижает возможности программиро­вания и даже эффективность работы ЭВМ. Поэтому способ защиты памяти по граничным адресам в настоящее время применяется редко, при статиче­ском распределении памяти, когда для каждой из параллельно выполняемых рабочих программ заранее (до начала их выполнения) отводится определен­ная область памяти.

Защита памяти по маскам

Защита памяти по маскам используется при страничной организации ОП. Для каждой программы перед её выполнением указываются номера страниц, отведенные для размещения её команд и всех необходимых данных. Указание о номерах отведенных страниц для данной программы задается управляющей программой операционной системы в виде кода маски или ко­да признаков страниц. Код маски формируется для каждой рабочей програм­мы. Под маской программы понимается n-разрядный двоичный код, разряд­ность которого определяется количеством страниц ОП. Каждый i-й разряд маски указывает о принадлежности i-й страницы ОП данной программе: если в i-м разряде задано значение 1, то при обращении к ОП разрешен доступ к любой ячейке i-ой страницы, если же i-й разряд маски содержит ноль, то вы­полняемой программе доступ к i-й странице запрещен.

Перед выполнением программы её код маски по специальной команде засылается в регистр маски РМ (рис. 4.21) блока защиты. При каждом обра­щении к ОП код номера страницы из исполнительного адреса загружается в регистр номера страницы PC и затем расшифровывается дешифратором но­мера страницы ДШС. На одном из выходов этого дешифратора, номер кото­рого равен номеру страницы, появляется единичный сигнал. Если в соответ­ствующем этой странице двоичном разряде кода маски программы задана единица, то схема сравнения выдает сигнал разрешения передачи адреса ячейки в ОП, в противном случае схема сравнения вырабатывает сигнал пре­рывания программы.

Рис.4.21. Защита памяти по маскам

По сравнению с защитой по граничным адресам защита памяти по мас­кам отличается большей гибкостью при организации распределения ОП. Для своей реализации данный метод не требует сложного оборудования.

Однако при большой емкости ОП, состоящей из значительного количе­ства страниц, она становится неэффективной. Это связано с многоразрядно-стью кода маски, возрастанием сложности дешифратора номера страниц и всего БЗП, а также заметным увеличением времени работы БЗП по формиро­ванию управляющих сигналов.

Защита памяти по ключам

Защита памяти по ключам (уровням привилегий) используется в большинстве современных многопрограммных ЭВМ со страничной органи­зацией памяти и динамическим её распределением между параллельно вы­полняемыми программами. В её основе лежит применение специальных ко­дов (уровней) для проверки соответствия используемых массивов ячеек па­мяти номеру выполняемой программы.

Каждой рабочей программе ОС придает специальный ключ — ключ программы. Все выделенные для данной рабочей программы страницы от­мечаются одним и тем же ключом страницы или ключом защиты. В качест­ве ключа защиты обычно указывается двоичный код номера программы. В процессе обращения к ОП производится сравнение ключа выполняемой про граммы с ключами защиты соответствующих страниц памяти. Обращение разрешается только при совпадении сравниваемых кодов ключей. Защита па­мяти по ключам применяется не только при работе ОП с процессором, но и в ходе обмена информацией с ВЗУ через каналы ввода-вывода. Тогда вместо ключей программ используются ключи каналов. Разрядность кодов ключей определяется максимальным количеством параллельно выполняемых про­грамм.

Структура БЗП по ключам приведена на рис. 4.22. Его основу составляет память ключей защиты ПКЗ адресного типа. Емкость ПКЗ строго соответст­вует количеству страниц. Разрядность ячеек ПКЗ равна разрядности кодов ключей (k) с добавлением одного или нескольких разрядов для задания ре­жима защиты (j). Ввод кодов защиты в ПКЗ осуществляется под управлением ОС при каждом распределении поля ОП между параллельно выполняемыми программами и каналами ввода-вывода, а также при любом перераспределе­нии поля ОП. Выборка информации из ПКЗ производится по номерам стра­ниц, представляемых старшими разрядами кода адреса ячейки ОП, по кото­рому идет обращение к ОП.

Рис.4.22. Защита памяти по ключам

Кроме ПКЗ в состав блока защиты памяти входят: дешифратор номера страниц ДШС для расшифровки кодов номеров страниц; регистр ключей защиты РКЗ для фиксации выбираемых из ПКЗ кодов; регистр ключей про­грамм РКП для приема и хранения кодов ключей программ, поступающих из регистра слова состояния программы (системного регистра) процессора, или кодов ключей каналов; узел сравнения ключей УСК для сравнения ключей защиты с ключами программ (или каналов).

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

Функционирование БЗП начинается с ввода в ДШС кода номера страни­цы ОП, к которой производится обращение. По номеру страницы из ПКЗ вы­бирается соответствующий ключ защиты, код которого помещается в РКЗ. В УСК код ключа защиты сравнивается с кодом ключа программы (канала) и формируются управляющие сигналы разрешения или прерывания.

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

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

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

Реализация идеи защиты памяти в любом случае не должна сопровож­даться заметным снижением производительности машины и не требовать больших аппаратных затрат.

Различают три способа защиты памяти: по граничным адресам, по мас­кам и по уровням привилегий (ключам).

Защита памяти по граничным адресам

Защита памяти по граничным адресам осуществляется с помощью регистров и узлов сравнения кодов, размещаемых в блоке защиты памяти (БЗП). Реализация этого способа защиты предусматривает выделение для ка­ждой программы определенной области ОП, составленной из ячеек с после­довательными адресами. Границы области отмечаются фиксированием адре­сов её начальной и конечной ячеек. Граничные адреса вводятся в регистры БЗП управляющей программой операционной системы перед началом вы­полнения каждой рабочей программы. При выполнении данной рабочей про­граммы каждый поступающий в ОП исполнительный адрес с помощью узлов сравнения кодов сравнивается с граничными адресами. По результатам срав­нения устанавливается возможность обращения к ОП по поступившему адре­су: если он находится в пределах граничных адресов, то разрешается доступ к соответствующей ячейке памяти, в противном случае вырабатывается сиг­нал запроса на прерывание выполняемой программы.

Преимущество данного способа защиты памяти состоит в том, что он позволяет защищать области памяти произвольной длины. Кроме того, блок защиты достаточно прост, а его функционирование не приводит к значитель­ным временным затратам. Однако необходимость размещения программ в областях памяти с последовательными номерами ячеек и ограниченных дву­мя граничными адресами существенно снижает возможности программиро­вания и даже эффективность работы ЭВМ. Поэтому способ защиты памяти по граничным адресам в настоящее время применяется редко, при статиче­ском распределении памяти, когда для каждой из параллельно выполняемых рабочих программ заранее (до начала их выполнения) отводится определен­ная область памяти.

Защита памяти по маскам

Защита памяти по маскам используется при страничной организации ОП. Для каждой программы перед её выполнением указываются номера страниц, отведенные для размещения её команд и всех необходимых данных. Указание о номерах отведенных страниц для данной программы задается управляющей программой операционной системы в виде кода маски или ко­да признаков страниц. Код маски формируется для каждой рабочей програм­мы. Под маской программы понимается n-разрядный двоичный код, разряд­ность которого определяется количеством страниц ОП. Каждый i-й разряд маски указывает о принадлежности i-й страницы ОП данной программе: если в i-м разряде задано значение 1, то при обращении к ОП разрешен доступ к любой ячейке i-ой страницы, если же i-й разряд маски содержит ноль, то вы­полняемой программе доступ к i-й странице запрещен.

Перед выполнением программы её код маски по специальной команде засылается в регистр маски РМ (рис. 4.21) блока защиты. При каждом обра­щении к ОП код номера страницы из исполнительного адреса загружается в регистр номера страницы PC и затем расшифровывается дешифратором но­мера страницы ДШС. На одном из выходов этого дешифратора, номер кото­рого равен номеру страницы, появляется единичный сигнал. Если в соответ­ствующем этой странице двоичном разряде кода маски программы задана единица, то схема сравнения выдает сигнал разрешения передачи адреса ячейки в ОП, в противном случае схема сравнения вырабатывает сигнал пре­рывания программы.

Рис.4.21. Защита памяти по маскам

По сравнению с защитой по граничным адресам защита памяти по мас­кам отличается большей гибкостью при организации распределения ОП. Для своей реализации данный метод не требует сложного оборудования.

Однако при большой емкости ОП, состоящей из значительного количе­ства страниц, она становится неэффективной. Это связано с многоразрядно-стью кода маски, возрастанием сложности дешифратора номера страниц и всего БЗП, а также заметным увеличением времени работы БЗП по формиро­ванию управляющих сигналов.

Защита памяти по ключам

Защита памяти по ключам (уровням привилегий) используется в большинстве современных многопрограммных ЭВМ со страничной органи­зацией памяти и динамическим её распределением между параллельно вы­полняемыми программами. В её основе лежит применение специальных ко­дов (уровней) для проверки соответствия используемых массивов ячеек па­мяти номеру выполняемой программы.

Каждой рабочей программе ОС придает специальный ключ — ключ программы. Все выделенные для данной рабочей программы страницы от­мечаются одним и тем же ключом страницы или ключом защиты. В качест­ве ключа защиты обычно указывается двоичный код номера программы. В процессе обращения к ОП производится сравнение ключа выполняемой про граммы с ключами защиты соответствующих страниц памяти. Обращение разрешается только при совпадении сравниваемых кодов ключей. Защита па­мяти по ключам применяется не только при работе ОП с процессором, но и в ходе обмена информацией с ВЗУ через каналы ввода-вывода. Тогда вместо ключей программ используются ключи каналов. Разрядность кодов ключей определяется максимальным количеством параллельно выполняемых про­грамм.

Структура БЗП по ключам приведена на рис. 4.22. Его основу составляет память ключей защиты ПКЗ адресного типа. Емкость ПКЗ строго соответст­вует количеству страниц. Разрядность ячеек ПКЗ равна разрядности кодов ключей (k) с добавлением одного или нескольких разрядов для задания ре­жима защиты (j). Ввод кодов защиты в ПКЗ осуществляется под управлением ОС при каждом распределении поля ОП между параллельно выполняемыми программами и каналами ввода-вывода, а также при любом перераспределе­нии поля ОП. Выборка информации из ПКЗ производится по номерам стра­ниц, представляемых старшими разрядами кода адреса ячейки ОП, по кото­рому идет обращение к ОП.

Рис.4.22. Защита памяти по ключам

Кроме ПКЗ в состав блока защиты памяти входят: дешифратор номера страниц ДШС для расшифровки кодов номеров страниц; регистр ключей защиты РКЗ для фиксации выбираемых из ПКЗ кодов; регистр ключей про­грамм РКП для приема и хранения кодов ключей программ, поступающих из регистра слова состояния программы (системного регистра) процессора, или кодов ключей каналов; узел сравнения ключей УСК для сравнения ключей защиты с ключами программ (или каналов).

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

Функционирование БЗП начинается с ввода в ДШС кода номера страни­цы ОП, к которой производится обращение. По номеру страницы из ПКЗ вы­бирается соответствующий ключ защиты, код которого помещается в РКЗ. В УСК код ключа защиты сравнивается с кодом ключа программы (канала) и формируются управляющие сигналы разрешения или прерывания.

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