Сегментная адресация памяти

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

Сегментная адресация памяти — схема логической адресации памяти компьютера в архитектуре x86. Линейный адрес конкретной ячейки памяти, который в некоторых режимах работы процессора будет совпадать с физическим адресом, делится на две части: сегмент и смещение. Сегментом называется условно выделенная область адресного пространства определённого размера, а смещением — адрес ячейки памяти относительно начала сегмента. Базой сегмента называется линейный адрес (адрес относительно всего объёма памяти), который указывает на начало сегмента в адресном пространстве. В результате получается сегментный (логический) адрес, который соответствует линейному адресу база сегмента+смещение и который выставляется процессором на шину адреса.

Селектором называется число (в x86 — 16-битное), однозначно определяющее сегмент. Селектор загружается в сегментные регистры.

В реальном и защищённом режимах x86-процессора функционирование сегментной адресации отличается.





Сегментная адресация в реальном режиме

В реальном режиме процессора всё адресное пространство делится на одинаковые сегменты размером от 16 байт до 65536 байт. Начало каждого последующего сегмента (так называемая База сегмента) смещена относительно базы предыдущего на минимальный размер сегмента, то есть на 16 байт (т. н. параграф). Таким образом, сегменты могут частично перекрывать друг друга. (Например, байт 17 сегмента 2 — это также и байт <math>1=17-16</math> сегмента 3, и байт <math>33=17+16</math> сегмента 1.)

Селектор 16-разрядный и задаёт номер сегмента. Учитывая, что сегменты следуют друг за другом с постоянным интервалом в 24=16 байт, очень легко выяснить линейный адрес сегмента, умножая его на 16.

Сегментная адресация в защищённом режиме (селекторная адресация)

В защищённом режиме процессора адресное пространство задачи делится на сегменты различных размеров с различными базами. Для определения базы и размера сегментов служат дескрипторы сегментов, хранящиеся в дескрипторных таблицах (GDT и LDT).

Здесь сегменты № 3 и № 11 указывают на одну и ту же область и являются псевдонимами (алиасными от англ. Alias). Сегмент № 7 охватывает сегменты № 1, № 2, № 3 и № 11. Сегмент № 5 указывает на GDT, позволяя её изменять (это никак не относится к GDT — её настоящий дескриптор хранится в регистре GDTR (показан жёлтым)). Адресация через локальную таблицу дескрипторов (LDT) происходит аналогично.

Селектор также 16-разрядный, но делится на три части: RPL (биты 0-1), TI (бит 2) и номер дескриптора ([биты 3-15).

  • RPL — см.: Сегментная защита памяти;
  • TI определяет дескрипторную таблицу (GDT или LDT при 0 или 1 соответственно), из которой выбирается дескриптор;
  • номер дескриптора — порядковый номер в дескрипторной таблице. Так как размер дескриптора равен восьми байтам, а номер дескриптора начинается с третьего бита, то можно адресовать дескриптор (если надо), просто обнулив RPL и TI.

См. также

Напишите отзыв о статье "Сегментная адресация памяти"

Примечания

Ссылки

  • [www.intel.com/products/processor/manuals/ Intel 64 and IA-32 Architectures Software Developer's Manuals] / Intel  (англ.)
  • [citforum.ru/hardware/memory/mem_0501.shtml E.0. Сегментная организация памяти в микропроцессорах i8086/88 и в реальном режиме работы микропоцессоров x86.], [citforum.ru/hardware/memory/mem_0502.shtml E.1. Сегментация памяти в защищенном режиме.] / Серия: "Основы информационных систем" Выпуск 2 (VII). Память. Юрий А. Денисов
  • [www.intuit.ru/studies/courses/2192/31/lecture/982?page=3 Лекция 8: Организация памяти компьютера. Простейшие схемы управления памятью.] / Основы операционных систем, 2004, ISBN 978-5-9556-0044-4

Отрывок, характеризующий Сегментная адресация памяти

Он взял депешу, которая была на его имя, и стал читать ее с грустным выражением.
– Ах, Боже мой! Боже мой! Шмит! – сказал он по немецки. – Какое несчастие, какое несчастие!
Пробежав депешу, он положил ее на стол и взглянул на князя Андрея, видимо, что то соображая.
– Ах, какое несчастие! Дело, вы говорите, решительное? Мортье не взят, однако. (Он подумал.) Очень рад, что вы привезли хорошие вести, хотя смерть Шмита есть дорогая плата за победу. Его величество, верно, пожелает вас видеть, но не нынче. Благодарю вас, отдохните. Завтра будьте на выходе после парада. Впрочем, я вам дам знать.
Исчезнувшая во время разговора глупая улыбка опять явилась на лице военного министра.
– До свидания, очень благодарю вас. Государь император, вероятно, пожелает вас видеть, – повторил он и наклонил голову.
Когда князь Андрей вышел из дворца, он почувствовал, что весь интерес и счастие, доставленные ему победой, оставлены им теперь и переданы в равнодушные руки военного министра и учтивого адъютанта. Весь склад мыслей его мгновенно изменился: сражение представилось ему давнишним, далеким воспоминанием.


Князь Андрей остановился в Брюнне у своего знакомого, русского дипломата .Билибина.
– А, милый князь, нет приятнее гостя, – сказал Билибин, выходя навстречу князю Андрею. – Франц, в мою спальню вещи князя! – обратился он к слуге, провожавшему Болконского. – Что, вестником победы? Прекрасно. А я сижу больной, как видите.
Князь Андрей, умывшись и одевшись, вышел в роскошный кабинет дипломата и сел за приготовленный обед. Билибин покойно уселся у камина.
Князь Андрей не только после своего путешествия, но и после всего похода, во время которого он был лишен всех удобств чистоты и изящества жизни, испытывал приятное чувство отдыха среди тех роскошных условий жизни, к которым он привык с детства. Кроме того ему было приятно после австрийского приема поговорить хоть не по русски (они говорили по французски), но с русским человеком, который, он предполагал, разделял общее русское отвращение (теперь особенно живо испытываемое) к австрийцам.
Билибин был человек лет тридцати пяти, холостой, одного общества с князем Андреем. Они были знакомы еще в Петербурге, но еще ближе познакомились в последний приезд князя Андрея в Вену вместе с Кутузовым. Как князь Андрей был молодой человек, обещающий пойти далеко на военном поприще, так, и еще более, обещал Билибин на дипломатическом. Он был еще молодой человек, но уже немолодой дипломат, так как он начал служить с шестнадцати лет, был в Париже, в Копенгагене и теперь в Вене занимал довольно значительное место. И канцлер и наш посланник в Вене знали его и дорожили им. Он был не из того большого количества дипломатов, которые обязаны иметь только отрицательные достоинства, не делать известных вещей и говорить по французски для того, чтобы быть очень хорошими дипломатами; он был один из тех дипломатов, которые любят и умеют работать, и, несмотря на свою лень, он иногда проводил ночи за письменным столом. Он работал одинаково хорошо, в чем бы ни состояла сущность работы. Его интересовал не вопрос «зачем?», а вопрос «как?». В чем состояло дипломатическое дело, ему было всё равно; но составить искусно, метко и изящно циркуляр, меморандум или донесение – в этом он находил большое удовольствие. Заслуги Билибина ценились, кроме письменных работ, еще и по его искусству обращаться и говорить в высших сферах.
Билибин любил разговор так же, как он любил работу, только тогда, когда разговор мог быть изящно остроумен. В обществе он постоянно выжидал случая сказать что нибудь замечательное и вступал в разговор не иначе, как при этих условиях. Разговор Билибина постоянно пересыпался оригинально остроумными, законченными фразами, имеющими общий интерес.