Cтраница 3
Если адрес строки таблицы сегментов или адрес строки таблицы страниц указывает ячейку за пределами основной памяти, имеющейся на данной вычислительной установке, то распознается особый случай адресации. Если биты 8 - 12 управляющего регистра 0 содержат недействительный код либо имеет место неправильный формат строки таблицы сегментов или же строки таблицы страниц, то распознается особый случай спецификации переадресации. Во всех этих случаях операция подавляется. [31]
Если неактивная, выделенная и недействительная строка таблицы становится действительной, это изменение сказывается мгновенно. Аналогично, если неактивная, невыделенная и действительная строка таблицы страниц становится выделенной, вследствие того что неактивная, выделенная, но недействительная строка таблицы сегментов становится действительной, то это изменение также сказывается мгновенно. [32]
Следует отметить, что если недействительная строка таблицы страниц делается действительной без введения промежуточных действительных значений строки, то TLB процессора, в котором эта строка раньше была неактивной, не нуждается в очистке. Аналогично, если недействительная строка таблицы сегментов становится действительной без введения промежуточных действительных значений строки, то TLB процессора, в котором данная строка таблицы сегментов и все выделенные строки таблицы страниц были до этого неактивными, не нуждается в очистке. [33]
Когда неактивная присоединенная и недоступная строка таблицы становится доступной, это изменение состояния сказывается немедленно. Точно так же изменение состояния сказывается немедленно, когда неактивная неприсоединенная и доступная строка таблицы страниц становится присоединенной вследствие того, что неактивная присоединенная и доступная строка таблицы сегментов становится доступной. [34]
Особый случай по адресации имеет место тогда, когда адрес строки таблицы сегментов или таблицы страниц указывает ячейку, находящуюся вне пределов доступной основной памяти рассматриваемой установки. Особый случай по спецификации переадресации имеет место в тех случаях, когда биты 8 - 12 управляющего регистра 0 содержат недействительный код или когда строка таблицы сегментов или таблицы страниц имеет неправильный формат. Для всех этих случаев операция подавляется. [35]
Начало расположения таблицы сегментов в оперативной памяти находится также в некотором управляющем регистре. Этот адрес можно задавать программно и, следовательно, таблицу сегментов можно поместить на любое физическое место оперативной памяти. Каждая строка таблицы сегментов занимает 4 байта ( 32 разряда) и содержит информацию о длине и начальном адресе таблицы страниц, входящих в состав данного сегмента. Каждая строка таблицы страниц состоит из двух байт ( 16 разрядов) и содержит информацию о старших разрядах физического адреса соответствующего логическому адресу. Сами таблицы страниц могут быть довольно произвольным образом размещены в оперативной памяти. [36]
Когда бит I строки в таблице сегментов является единицей, признак результата устанавливается в 1, а истинный адрес строки таблицы сегментов помещается в регистр, заданный полем RI. Когда бит I строки таблицы страниц является единицей, код признака результата устанавливается равным 2, а истинный адрес строки таблицы страниц помещается в регистр, заданный полем Ri. Если строка таблицы сегментов или таблицы страниц находится вне таблицы, то устанавливается признак результата 3, а регистр, заданный полем Ri, в этом случае содержит истинный адрес строки, к которой произошло бы обращение, если не имело-бы места нарушение длины. Во всех этих случаях 24-битовый адрес помещается на позиции 8 - 31 этого регистра, а левые 8 битов этого регистра устанавливаются в нуль. [37]
Поля регистра используются следующим образом: Длина таблицы сегментов: содержимое битов 0 - 7 управляющего регистра 1 определяет длину таблицы сегментов в блоках по 64 байта каждый. Следовательно, размер таблицы сегментов может изменяться на целое число, кратное суммарной длине 16 строк такой таблицы. Индекс сегмента служит для выбора строки таблицы сегментов, а содержимое поля длины позволяет проверить, указывает ли индекс сегмента на строку, находящуюся в пределах заданной таблицы сегментов. [38]
Тем самым разработчикам операционных систем предоставляется возможность управлять выбором объема страницы. Как мы уже знаем, индекс сегмента есть относительный адрес строки в таблице сегментов, которая в свою очередь содержит ссылку на начало таблицы страниц. Кроме указания длины таблицы страниц, связанной с данной строкой таблицы сегментов, в строке таблицы сегментов существует признак доступности - допустимости обращения к данному сегменту. Этот признак осуществляет функции защиты. Такой же признак доступности существует и в строках таблицы страниц. Таким образом защита памяти в Системе 370 осуществляется как по сегментам, так и по страницам. [39]
Тем самым разработчикам операционных систем предоставляется возможность управлять выбором объема страницы. Как мы уже знаем, индекс сегмента есть относительный адрес строки в таблице сегментов, которая в свою очередь содержит ссылку на начало таблицы страниц. Кроме указания длины таблицы страниц, связанной с данной строкой таблицы сегментов, в строке таблицы сегментов существует признак доступности - допустимости обращения к данному сегменту. Этот признак осуществляет функции защиты. Такой же признак доступности существует и в строках таблицы страниц. Таким образом защита памяти в Системе 370 осуществляется как по сегментам, так и по страницам. [40]
В TLB может храниться более одной копии строки таблицы. Например, в некоторых реализациях TLB в него заносится копия доступной строки таблицы для каждого адреса таблицы сегментов, по которому эта строка становится присоединенной. В то же время в других реализациях TLB доступная строка таблицы страниц попадает в TLB для каждой присоединенной и доступной строки таблицы сегментов, которая указывает на данную строку таблицы страниц. [41]
В TLB может находиться более одной копии строки таблицы. Например, в некоторых реализациях TLB может производиться занесение в TLB копии действительной строки таблицы для каждого адреса таблицы сегментов, в результате чего строка делается выделенной для использования. В то же время в других реализациях 1LB может производиться занесение в TLB действительной строки таблицы страниц для каждой действительной и выделенной строки таблицы сегментов, с помощью которой определяется данная строка таблицы страниц. [42]