Системное программное обеспечение. Особенности программирования 32-разрядных процессоров. Рощин А.В. - 25 стр.

UptoLike

Составители: 

25
включения требуются определенные программные усилия) и действует
независимо от сегментной организации программы. Поэтому во всех
программных структурах защищенного режима фигурируют не
физические, а линейные адреса. Если страничная адресация выключена,
эти линейные адреса совпадают с физическими, если включенамогут и
не совпадать.
Страничная организация повышает эффективность использования
памяти программами, однако практически она имеет смысл лишь при
выполнении больших по размеру задач, когда объем адресного
пространства задачи (виртуального адресного пространства) превышает
наличный объем памяти. В рассмотренном примере используется чисто
сегментная адресация без деления на страницы, и линейные адреса
совпадают с физическими.
Поскольку в дескриптор записывается 32-битовый линейный
базовый адрес (номер байта), сегмент в защищенном режиме может
начинаться на любом байте, а не только на границе параграфа, и
располагаться в любом месте адресного пространства 4 Гбайт.
Поле базы, как и поле границы, разбито на 2 части: биты 0...23
занимают байты 2, 3 и 4 дескриптора, а биты 24...31 – байт 7. Для удобства
программного обращения в структуре descr база описывается тремя
полями: младшим словом (base_l – строка 10 листинга) и двумя байтами:
средним (base_m – строка 11 листинга) и старшим (base_h – строка 15
листинга).
В байте атрибутов 1 задается ряд характеристик сегмента. Не
вдаваясь пока в подробности этих характеристик, укажем, что в
рассмотренном примере используются сегменты двух типов: сегмент
команд, для которого байт attr_1 (строка 12 листинга) должен иметь значе-
ние 98h, и сегмент данных (или стека) с кодом 92h.
Некоторые дополнительные характеристики сегмента указываются в
включения требуются определенные программные усилия) и действует
независимо от сегментной организации программы. Поэтому во всех
программных      структурах    защищенного         режима   фигурируют    не
физические, а линейные адреса. Если страничная адресация выключена,
эти линейные адреса совпадают с физическими, если включена – могут и
не совпадать.
     Страничная организация повышает эффективность использования
памяти программами, однако практически она имеет смысл лишь при
выполнении      больших   по   размеру    задач,    когда   объем   адресного
пространства задачи (виртуального адресного пространства) превышает
наличный объем памяти. В рассмотренном примере используется чисто
сегментная адресация без деления на страницы, и линейные адреса
совпадают с физическими.
     Поскольку в дескриптор записывается 32-битовый линейный
базовый адрес (номер байта), сегмент в защищенном режиме может
начинаться на любом байте, а не только на границе параграфа, и
располагаться в любом месте адресного пространства 4 Гбайт.
     Поле базы, как и поле границы, разбито на 2 части: биты 0...23
занимают байты 2, 3 и 4 дескриптора, а биты 24...31 – байт 7. Для удобства
программного обращения в структуре descr база описывается тремя
полями: младшим словом (base_l – строка 10 листинга) и двумя байтами:
средним (base_m – строка 11 листинга) и старшим (base_h – строка 15
листинга).
     В байте атрибутов 1 задается ряд характеристик сегмента. Не
вдаваясь пока в подробности этих характеристик, укажем, что в
рассмотренном примере используются сегменты двух типов: сегмент
команд, для которого байт attr_1 (строка 12 листинга) должен иметь значе-
ние 98h, и сегмент данных (или стека) с кодом 92h.
     Некоторые дополнительные характеристики сегмента указываются в


                                         25