
- •Регистры процессоров 8086/8088
- •Сегментация памяти
- •Сегментная организация памяти в микропроцессорах i8086/88 и в реальном режиме работы микропроцессоров x86.
- •Особенности сегментации памяти в микропроцессоре i8086 (итоги).
- •Кэширование оперативной памяти
- •Кэш прямого отображения
- •Память с расслоением
- •Распределение памяти
- •Постоянное запоминающее устройство.
- •Флэш-память.
- •Cmos-память.
- •Недостатки перезаписываемой памяти.
- •Потеря данных в cmos.
- •Потеря данных в flash-памяти.
- •Содержание.
- •Регистры процессоров 8086/8088--------------------------------------------------10
- •Сегментация памяти-------------------------------------------------------------------28
Память ЭВМ.
Память компьютера предназначена для кратковременного и долговременного хранения информации — кодов команд и данных. Информация в памяти хранится в двоичных кодах, каждый бит — элементарная ячейка памяти — может принимать значение «О» или «I». Каждая ячейка памяти имеет свой адрес, однозначно ее идентифицирующий в определенной системе координат. Минимальной адресуемой единицей хранения информации в памяти обычно является байт, состоящий, как правило, из 8 бит.
Существуют процессоры и компьютеры с разрядностью обрабатываемого слова не кратной 8 (например, 5, 7, 9...), и их байты не восьмибитные, но в мире PC столкновение с ними маловероятно. Также в некоторых системах (обычно коммуникационных) совокупность восьми соседних бит данных называют октетом. Название «октет» обычно подразумевает, что эти 8 бит не имеют явного адреса, а характеризуются только своим местоположением в длинной цепочке бит.
Со времени появления больших (по размерам) компьютеров сложилось деление памяти на внутреннюю и внешнюю. Под внутренней подразумевалась память, расположенная внутри процессорного «шкафа» (или плотно к нему примыкающая). Сюда входила и электронная и магнитная память (на магнитных сердечниках). Внешняя память представляла собой отдельные устройства с подвижными носителями — накопители на магнитных дисках (а сначала — на барабанах) и ленте. Со временем все устройства компьютера удалось поселить в один небольшой корпус, и прежнюю классификацию памяти применительно к PC можно переформулировать так:
* внутренняя память — электронная (полупроводниковая) память, устанавливаемая на системной плате или на платах расширения;
* внешняя память — память, реализованная в виде устройств с различными принципами хранения информации и обычно с подвижными носителями. В настоящее время сюда входят устройства магнитной (дисковой и ленточной) памяти, оптической и магнитооптической памяти. Устройства внешней памяти могут размещаться как в системном блоке компьютера, так и в отдельных корпусах, достигающих иногда и размеров небольшого шкафа.
Для процессора непосредственно доступной является внутренняя память, доступ к которой осуществляется по адресу, заданному программой. Для внутренней памяти характерен одномерный (линейный) адрес, который представляет собой одно двоичное число определенной разрядности. Внутренняя память подразделяется на оперативную, информация в которой может изменяться процессором в любой момент времени, и постоянную, информацию которой процессор может только считывать. Обращение к ячейкам оперативной памяти может происходить в любом порядке, причем как по чтению, так и по записи, и оперативную память называют памятью с произвольным доступом — Random Access Memory (RAM) — в отличие от постоянной памяти (Read Only Memory, ROM). Внешняя память адресуется более сложным образом — каждая ее ячейка имеет свой адрес внутри некоторого блока, который, в свою очередь, имеет многомерный адрес. Во время физических операций обмена данными блок может быть считан или записан только целиком. В случае одиночного дискового накопителя адрес блока будет трехмерным: номер поверхности (головки), номер цилиндра и номер сектора. В современных накопителях этот трехмерный адрес часто заменяют линейным номером — логическим адресом блока, а его преобразованием в физический адрес занимается внутренний контроллер накопителя. Поскольку дисковых накопителей в компьютере может быть множество, в адресации дисковой памяти участвует и номер накопителя, а также номер канала интерфейса. С такой сложной системой адресации процессор справляется только с помощью программного драйвера, в задачу которого в общем случае входит копирование некоторого блока данных из оперативной памяти в дисковую и обратно. Дисковая память является внешней памятью с прямым доступом, что подразумевает возможность обращения к блокам (но не ячейкам) в произвольном порядке. Память на ленточных носителях имеет самый неудобный метод доступа — последовательный. В ней информация хранится также в виде блоков фиксированной или переменной длины, и в пределах одного носителя эти блоки имеют последовательные адреса. Для доступа к какому-либо блоку устройство должно найти некоторый маркер начала ленты (тома), после чего последовательным холостым чтением блока за блоком дойти до требуемого места и только тогда производить сами операции обмена данными. С такими неудобствами мирятся только потому, что ленточные носители являются самым дешевым хранилищем для больших объемов информации, к которой не требуется оперативного доступа.
Для подсистемы памяти важными параметрами являются следующие:
* объем хранимой информации. Нет необходимости объяснять, что чем он больше, тем лучше. Максимальный (в принципе неограниченный) объем хранят ленточные и дисковые устройства со сменными носителями, за ними идут дисковые накопители, и завершает этот ряд оперативная память',
* время доступа — усредненная задержка начала обмена полезной информацией относительно появления запроса на данные. Минимальное время доступа имеет оперативная память, за ней идет дисковая и после нее — ленточная;
* скорость обмена при передаче потока данных (после задержки на время доступа). Максимальную скорость обмена имеет оперативная память, за ней идет дисковая и после нее — ленточная;
* удельная стоимость хранения единицы данных — цена накопителя (с носителями), отнесенная к единице хранения (байту или мегабайту). Минимальную стоимость хранения имеют ленточные устройства со сменными носителями, их догоняют дисковые накопители, а самая дорогая — оперативная память.
Кроме этих параметров имеется и ряд других характеристик — энергонезависимость (способность сохранения информации при отключении внешнего питания), устойчивость к внешним воздействиям, время хранения, конструктивные особенности (размер, вес) и т. п. У каждого типа памяти имеются различные реализации со своими достоинствами и недостатками.
Внутренняя и внешняя память используются существенно различными способами. Внутренняя (оперативная и постоянная) память является хранилищем программного кода, который непосредственно может быть исполнен процессором. В ней же хранятся и данные, также непосредственно доступные процессору (а следовательно, и исполняемой программе). Внешняя память обычно используется для хранения файлов, содержимое которых может быть произвольным. Процессор (программа) имеет доступ к содержимому файлов только опосредованно через отображение их (полное или частичное) в некоторой области оперативной памяти. Исполнить программный код или обратиться к данным непосредственно на диске процессор не может в принципе. То же относится, естественно, и к ленточной памяти.
Однако реальная жизнь многообразнее этой упрощенной схемы, и на практике дисковая и оперативная память переплетаются сложным образом. Главный недостаток дисковой памяти — большое время доступа и низкая скорость обмена — устраняется при использовании виртуального диска, представляющего собой своеобразно используемую область оперативной памяти. В этой области хранятся файлы, и с точки зрения операционной системы (и, тем более, прикладной программы) она выглядит как обычный, но очень быстрый диск. Конечно же, его объем ограничен, и этот объем вычитается из объема физически установленной памяти, доступной процессору в качестве обычной оперативной. Кроме того, виртуальный диск в отличие от реального не является энергонезависимым. Более того, информация на нем не переживет даже перезагрузки операционной системы. Но несмотря на эти ограничения, виртуальный диск во многих случаях может повысить эффективность работы компьютера при интенсивном дисковом обмене. В операционной системе MS-DOS (и Windows 95) виртуальный диск реализуется загрузкой программного драйвера RAMDRIVE.SYS (в некоторых версиях — VDISK.SYS), похожие средства имеются и в других операционных системах. Другим способом решения проблем быстродействия дисковой памяти за счет оперативной: является кэширование дисков — хранение образов последних из использованных блоков дисковой памяти в оперативной в надежде на то, что к ним вскоре будет следующий запрос, который удастся удовлетворить из памяти. В MS-DOS кэшированием дисков занимается загружаемый драйвер SMARTDRV.EXE, в Windows 95 кэширование встроено в операционную систему. Даже и без этого драйвера «неглубокое» кэширование выполняет операционная система, и этим процессом можно управлять с помощью строки «BUFFERS=xxx» файла CONFIG.SYS. Если затребованный блок с диска уже находится в одном из буферов, ОС не будет «беспокоить» диск, а удовлетворит запрос из буфера. Чем больше параметр ххх, тем больше блоков может держать ОС в оперативной памяти, но область памяти для буферов, естественно, уменьшает объем памяти, доступной программам.
Основной недостаток оперативной памяти заключается в том, что конструктивно достижимый ее объем во много раз меньше, чем у дисковой (пока что это было справедливо на всех ступенях технического прогресса). Решить проблему увеличения объема оперативной памяти за счет дисковой позволяет виртуальная память, которую можно считать кэшированием оперативной памяти на диске. Суть ее заключается в том, что программам предоставляется виртуальное пространство оперативной памяти, по размерам превышающее объем физически установленной оперативной памяти. Это виртуальное пространство разбито на страницы фиксированного размера, а в физической оперативной памяти в каждый момент времени присутствует только часть из них. Остальные страницы хранятся на диске, откуда операционная система может их «подкачать» в физическую на место предварительно выгруженных на диск страниц. Для прикладной программы этот процесс прозрачен (если только она не критична ко времени обращения к памяти). Для пользователя этот процесс заметен по работе диска даже в тот момент, когда не требуется обращение к файлам. Расплатой за почти безмерное увеличение объема доступной оперативной памяти является снижение средней производительности памяти и некоторый расход дисковой памяти на так называемый файл подкачки (Swap File). Естественно, размер виртуальной памяти не может превышать размера диска (файл подкачки на нескольких дисках обычно не размещают). Виртуальная память реализуется операционными системами (и оболочками) защищенного режима (например, OS/2, MS Windows) на основе аппаратных средств процессоров класса не ниже 286, а наиболее эффективно — 32-разрядных процессоров 386 и старше.
Память как модель процесса.
Фундаментальным для понятия организации вычислительных машин является понятие процесса. Процесс – это выполнение программы. Он по своей сути активен, т.е. способен производить действия. Процесс от программы отличает то, что последняя по своей сути пассивна, т.е. расположенная на некотором носителе данных она не способна сама по себе производить никаких действий.
В каждый момент времени процесс находится в определенном состоянии. Состояние процесса характеризует его степень выполнения. Оно включает всю информацию необходимую для прекращения процесса и его последующего возобновления. Состояние процесса содержит по меньшей мере следующую информацию: 1) программу; 2) индикацию команды которая должна выполняться следующей; 3) величины всех программных переменных и данных; 4) состояние всех используемых устройств ввода-вывода.
По мере протекания процесса его состояние меняется. Например, изменяется индикация команды, которая должна выполняться следующей, переменные принимают последовательные значения. Хотя вполне возможно, чтобы процесс модифицировал программу во время ее выполнения, это считается плохим приемом программирования. Будем предполагать, что процесс не изменяет программу. Часто оказывается удобным сгруппировать вместе все изменяемые части состояния процесса и рассматривать их как вектор состояния. Тогда процесс можно считать состоящим из двух частей: программы (неизменяемой части) и вектора состояний (изменяемой части). Программы включает в себя команды для изменения вектора состояний.
Процесс проходит упорядоченную во времени последовательность состояний. Для выполнения программы (или для получения процесса)
необходима работа вычислительной машины или процессора. Функция такого процессора состоит в переводе процесса из одного состояния в другое. Другими словами работа процессора заключается в изменении состояния процесса.
Процесс имеет два важных свойства: 1) результат процесса не зависит от скорости его протекания; 2) при повторном выполнении процесса с теми же данными он проходит ту же последовательность состояний и дает тот же результат. Эти свойства отражают последовательную природу процесса.
Процесс – последовательная смена состояний множества.
Состояние – текущее значение множества.
Процессор – совокупность средств реализующих процесс.
Процесс характеризуется состоянием и последовательностью смены состояний.
Самая обобщенная схема процессора:
Процессор должен иметь память состояния и средства изменения состояния.
Организация простейших накопителей.
Как же хранятся данные в памяти. Простейшие – РЗУ.
С точки зрения пользователя – память это некоторое множество ячеек которые нумеруются от 0 до 2n-1.Выбор ячейки определяется дешифратором адреса.
Классическая, самая первая схема.
Такая схема построения ЗУ – схема памяти с линейной выборкой.
Для памяти большого объема такая схема не годится т.к. дешифратор будет очень «страшным».
Решили, что дешифратор нужно делать многоступенчатым, где последняя ступень будет совмещена с ячейками хранения данных. Так пришли к схеме с координатной выборкой.
Чтобы избавиться от «ниточки» памяти сворачиваем в квадрат отдельные разряды и храним вместе все разряды с одинаковым номером. Если в линейной выборке на выходе ДШ 2n, то здесь2n/2.
Память большого объема в микроэлектронном исполнении также построить тяжело.
Память большого объема – это память на конденсаторах, а транзисторы определяют только чтение и запись, но у конденсаторов большие токи утечки, поэтому информацию нужно постоянно перезаписывать. Появляется фаза регенерации данных. – ЗУ динамического типа. ЗУ статического типа на триггерах – нет фазы регенерации, но есть восстановление при чтении. Если время выборки из ЗУ динамического типа 100 нсек, то 1 раз в 100 мксек нужно регенерировать память (по сути регенерация – это либо чтение, либо запись). Сейчас система регенерации встроена в устройство управления и если никто не обращается к памяти, то в это время происходит регенерация. Так как на сегодняшний день редко происходит обращение за одним словом, чтение идет по несколько слов (пакетом), оказывается, что обращение к памяти часто полностью регенерирует память.
Внутренняя память процессора.
Для уменьшения затрат времени на обработку информации стремятся уменьшить количество обращений к основной памяти. Этого можно достичь следующим образом. В процессе вычислений результат операции целесообразно сохранять в процессоре и не записывать в основную память, если полученный результат будет использоваться в качестве операнда в следующей операции. Так, при вычислении значения выражения a/b+c-d частное a/b, а затем сумму a/b+c можно сохранить в процессоре, что позволит исключить четыре обращения к основной памяти. Чтобы обеспечить хранение промежуточных результатов, необходимо в процессор ввести память, обеспечивающую хранение, по крайней мере, одного слова информации – результата операции. Еще большего эффекта можно достичь, если процессор снабдить памятью большой емкости, достаточной для хранения например 16 или 32 слов. Память являющаяся частью процессора и используемая для хранения промежуточных результатов и вспомогательных величин, называется внутренней (регистровой ) памятью процессора.
Назначение внутренней памяти – уменьшить количество обращений к основной памяти. С увеличением емкости внутренней памяти, увеличивается доля обращений, обслуживаемых внутренней, но не основной памятью. Обычно емкость внутренней памяти не превосходит 32 слов. При столь незначительной емкости затраты времени на обращение к внутренней памяти оказывается значительно меньше затрат времени на обращение к основной памяти.
Регистры процессоров 8086/8088
Структура регистров процессора приведена на рисунке. 16-битные регистры общего назначения AX, BX, СХ, DX состоят из двух 8-битных половин, к которым можно независимо обращаться по символическим именам АН, ВН, СН, DH (старшие байты — High) и АЦ BL, CL, DL (младшие байты — Low). Регистры-указатели SP (Stack Pointer — указатель стека), ВР (Base Pointer — базовый регистр) и индексные регистры SI (Source Index — индекс источника), DI (Destination Index — индекс назначения) допускают только 16-битное обращение. Адрес текущей инструкции хранится в 16-битном указателе команд IP (Instruction Pointer). Регистры в командах могут адресоваться явно, но использование ряда регистров в некоторых командах подразумевается неявно.
Многоуровневые модели системы памяти.
Память – сложная многоуровневая система.
Классическое представление памяти – 4 уровня.
Процессорный уровень.
Регистры центрального процессора. Память маленькая, обычно десятки слов. Быстродействие на уровне центрального процессора – единицы наносекунд.
СОЗУ.
Быстрый уровень между ОЗУ и регистрами. Объем памяти – десятки, сотни килобайт. Быстродействие на уровне десятков наносекунд. Разделяется на КЭШ-1 иКЭШ-2
ОЗУ.
Это главная память с которой работает центральный процессор. Объем памяти – сотни МБ, приближается к ГБ. Быстродействие – десятки наносекунд.
Внешняя память.
Объем большой. Быстродействие на уровне миллисекунд. Разделяется на
2 типа.
1). основной. Накопители на магнитных дисках – винчестер. Это то, что входит в систему памяти.
2). архивная память. CD, магнитная лента, т.е. по сути устройства ввода-вывода.
ОП – это то, что нужно для решения задачи, это быстрый буфер между ВЗУ и ЦП. НО нам нужны еще большие скорости – появляются СОЗУ – быстрый буфер между ОП и ЦП. КЭШ-1 – эта память оказалась уже на кристалле, память в 2 раза медленнее памяти на регистрах.
Трех (6) уровневая модель памяти.
Верхний уровень памяти образуют КЭШ-1 и регистры центрального процессора. КЭШ-2 дополнительная буферная память для диска. В ОП выделен кусок памяти - оперативный буфер дисковой памяти, т.е. буфер для ВУ. КЭШ-2+ОП=ВП. ВП - внешняя память. ВЗУ+ОП(часть)=ГП. ГП – главная память машины. Получили всего три уровня, но каждый состоит из 2-х частей.
Верхний уровень всегда сначала обращается в буфер более нижнего уровня. ЦП обращается в КЭШ-2.
Как собрать память большого объема.
Классическая схема построения ЗУ большого объема, если есть модули памяти малого объема.
cs – chip select – выбор кристалла, разрешение работы.
Данные, чтение либо запись параллельно разводятся на все модули. Выбор кристалла осуществляется старшими разрядами адреса, через дешифратор подаются сигналы на входы cs.
Активное значение сигнала на входе cs не только разрешает работу модулю, но и одновременно открывает и выходные ключи.
oe (output enable) – сигнал на выходе поставляемый на трехстабильный ключ. cs является одновременно сигналом oe.
Организация ОП (основной памяти).
Памяти всегда мало. 2 ситуации.
короткий адрес ( 16-ти разрядная машина)
длинный адрес (32-х разрядная машина).
Логический адрес –это тот адрес, который определяется командой при логической адресации. Если логический адрес 16-ти разрядный, то объем
ОЗУ =216=64 Кб.
Физическая память – это память с которой мы реально работаем.
Если адрес физический = 20..24 разряда, получается адрес физический больше адреса логического.
Если адрес логический 32 разряда, то обратная ситуация адрес логический больше адреса физического.
Метод банков.
Физический адрес = номер банка + логический адрес.
V банка = 64Кб. Номер банка записывается в отдельный регистр по отдельной команде. Этот регистр находится не в РЗУ.
Гипотетическое распределение адресного пространства. Есть один банк памяти.
но места не хватает, т.к. 64 Кб. Заведем 2 банка
Для того, чтобы обратиться к data2 мы должны во второй банк поместить помимо data2 все старое из предыдущего банка.
Оказалось, что эта схема плохая, сделали новую. Для каждого типа данных (информации) заводится свое адресное пространство. При этом в какое пространство процессор должен обращаться определяется алгоритмом выполнения команды. Отсюда возникает вопрос, можем ли мы включить счетчик команд в список регистров? Нельзя! => счетчик команд и указатель стека мы исключаем из РОН. Обращение к ВУ выполняется по отдельным командам.
Имеем 5 банков.
по алгоритму выполнения команды мы знаем в какой банк обращаться => мы можем указывать адрес и тип банка. Уже с 64 Кб мы получили суммарный V 64*4=256 Кб.
По каждому типу информации заводим несколько банков, следовательно, для каждого типа заведем сой регистр N банка.
Идея базового адреса.
16-ти разрядный базовый адрес в 20-ти разрядах.
Был регистр номер банка, а теперь регистр сегмента .
Сегментный регистр кодовый –cs, данных - ds, стека – ss. Логический адрес становится смещением в сегменте. Базовый адрес хранится в сегментном регистре.
Длинный физический адрес, короткий логический.
Агр. – адрес гранцы постоянной части.
Эта схема расширенной памяти не связана с логикой работы процессора, поэтому она может находиться где угодно.
Абаз. – базовый адрес окна.
РгАбаз. – рассм. как ВУ.
Мы сделали окно только для расширения данных, а если еще каждую секцию памяти определить как окно. Разбиваем логическую память на секции. Каждая секция характеризуется граничными адресами. Будем каждую секцию транслировать в свою область физической памяти.
Схема
для трансляции адреса одной секции.
Схема диспетчера памяти.
k
секций 2k-1
регистров.
Зона ВУ не транслируется, ее положение неизменно, это всегда последние адреса как логической, так и физической памяти.
Диспетчер памяти имеет много регистров, их неудобно держать в центральном процессоре. Трансляция адресов ВУ всегда однозначна.
В чистом виде ни метод сегментных регистров ни метод диспетчера памяти не позволяет работать с Памятью большого объема.
В Intel используется подход, который использовался при страничной организации памяти.
чтобы увеличить адрес физический надо увеличить разрядность Абаз, т.е. выйти за пределы слова.
Занести слово двойной длины Абаз в сегментный регистр при дальнем переходе невозможно. А если хранить Абаз в другом месте, а в регистр Абаз хранить косвенный адрес.
Длинные адреса начала секций хранятся в специальном месте памяти, а в сегментном регистре хранятся не прямые значения адреса, а указатель на таблицу базовых адресов.
Регистры, связанные с формированием длинного физического адреса.
Рг сегм=Рг селектор (селектор сегмента).
Он программно доступен, 16-ти разрядный. Он не хранит адрес базы в нем смещение для некоторой таблицы. В таблице находятся дескрипторы включающие в себя в том числе и базовые адреса. Строка из таблицы дескрипторов читается в специальный регистр дескриптора и уже Абаз, который хранится в регистре дескриптора используется.
А физический адрес : длинный Абаз
+короткий логический адрес
= длинный физический адрес.
Регистр
дескр.
Таблица дескрипторов
24 разряда
Абаз может быть любой длины. Для 16-ти разрядной машины Абаз уже 24 разряда. Мы можем иметь практически нулевой шаг между сегментами.
Как правило пользователь не замечает таблицы. При смене содержимого регистра селектора центральный процессор сам, по собственной микропрограмме залезает в таблицу дескрипторов, выбирает требуемый дескриптор и заносит его в требуемый рг. дескриптор. Так как смена регистра дескриптора делается автоматически на уровне микропроцессора этот регистр оказывается программно недоступен. Следовательно, вся работа дескриптора для пользователя не видна, не нужно тратить ни одной команды, хотя смена сегмента требует большего времени.
Процессор имеет два режима: реальный и защищенный. Реальный – это классический режим с сегментными регистрами. Можно работать с памятью объемом 1Мб. В реальном режиме схема с дескрипторами не работает. В защищенном режиме работает схема с дескрипторами.
При включении процессора – реальный режим, идет формирование таблицы, а затем, по специальной команде идет переход в защищенный режим.
Подробнее:
4 регистра, а к ним добавлены регистры дескрипторы.
сел. дескрипт.
селектор:
содержимое селектора: старшие разряды – это номер строки в таблице дескриптора, Т – признак таблицы дескриптора, машина использует 2-е таблицы дескрипторов, Пр – кодовое слово, называют уровень привилегий.
2 таблицы дескрипторов:
глобальная;
локальная.
Глобальная таблица – это системная таблица дескрипторов (общая для всех программ + системная информация).
Локальная таблица – собственная таблица программы.
Полный размер таблицы дескрипторов = 216=64Кб, т.е. ровно одно логическое пространство. Таблица может быть определена как один полный сегмент.
Что хранится в дескрипторе.
В центральном процессоре есть специальный регистр, где хранится начальный адрес глобальной таблицы дескрипторов.
GDT – глобальная таблица дескрипторов.
GDT
24 разряда
В этой таблице определено все, в том числе и сегмент локальной таблицы дескрипторов. Поэтому для задачи делается короткий 16-ти разрядный регистр, где хранится селектор сегмента локальной таблицы дескрипторов – LDT.
Регистры GDT и LDT программно доступны.
LDT
Регистр дескриптора сегмента локальной таблицы дескрипторов.
Как правило обе таблицы находятся в первом мегабайте. -> 16-ти разрядная машина позволяет работать с виртуальной памятью объемом до 1 Гб.
Идея с дескрипторами восходит к идее табличной организации памяти.
Страничная организация памяти.
Алог> Афиз.
Алог=32разряда
Афиз=22разряда
Многоуровневая система памяти:
Длинная программа требующая 4Гб находится вся во внешней памяти. Память и логическую и физическую делят на части, которые называют страницами. Размер страницы фиксирован и один и тот же, что в логической, что в физической памяти. Объем страницы колеблется от 0.5 до 4 Кб.
В физической памяти помещаются отдельные страницы из логической памяти. Такая организация памяти получила название виртуальной организации памяти.
Заводится таблица страниц.
Таблица страниц может быть разбита на страницы и извлекаться из внешней памяти в ОП страницами. Но тогда нужна таблица страниц для таблицы страниц. Теперь в памяти должен находится каталог таблицы страниц и те страницы, которые нужны. Структура каталога имеет все те же самые характеристики, что и таблица страниц.
Каталог
должен иметь объем равный одной странице.
Число записи в каталоге и в таблице
страниц равны. => VNстр.кат=VNстр.=k
разрядов. Vстраницы=2m.
Длина строки в каталоге и в таблице
страниц L
байтов.
2k=2m/l l=2p 2k=2m/2p=2m-p k=m-p
2k+m=длинна машинного слова=L
L – общее число разрядов.
L=32, k=m-p, 2m-2p+m=32, 3m-2p=32
p=2
m=12
k=10
Когда L=32 - это решение единственно
Страница = 212=4Кб
Строка = 22=4Б
каталог содержит 210=1024 записи
Схема плоха, т.к. слишком медленна.
Необходимо запомнить номера физических страниц к которым обращались за некоторый период времени во внутренней памяти процессора. Запомнили номер физической страницы. Как узнать нужна та же физическая страница или другая. Следовательно вместе с Nфиз страницы записывать N соответствующей логической страницы.
В случае страничного сбоя переходим на большую схему в специализированный процессор, находим номер физической страницы. Центральный процессор дает только логические адреса. Т.к. работаем с несколькими страницами, данную схему необходимо размножить.
В случае страничного сбоя переходим на большую схему в специализированный процессор, находим номер физической страницы. Центральный процессор дает только логические адреса. Т.к. работаем с несколькими страницами, данную схему необходимо размножить.
В системах со страничной организацией основная и внешняя память (главным образом дисковое пространство) делятся на блоки или страницы фиксированной длины. Каждому пользователю предоставляется некоторая часть адресного пространства, которая может превышать основную память компьютера и которая ограничена только возможностями адресации, заложенными в системе команд. Эта часть адресного пространства называется виртуальной памятью пользователя. Каждое слово в виртуальной памяти пользователя определяется виртуальным адресом, состоящим из двух частей: старшие разряды адреса рассматриваются как номер страницы, а младшие - как номер слова (или байта) внутри страницы.
Управление различными уровнями памяти осуществляется программами ядра операционной системы, которые следят за распределением страниц и оптимизируют обмены между этими уровнями. При страничной организации памяти смежные виртуальные страницы не обязательно должны размещаться на смежных страницах основной физической памяти. Для указания соответствия между виртуальными страницами и страницами основной памяти операционная система должна сформировать таблицу страниц для каждой программы и разместить ее в основной памяти машины. При этом каждой странице программы, независимо от того находится ли она в основной памяти или нет, ставится в соответствие некоторый элемент таблицы страниц. Каждый элемент таблицы страниц содержит номер физической страницы основной памяти и специальный индикатор. Единичное состояние этого индикатора свидетельствует о наличии этой страницы в основной памяти. Нулевое состояние индикатора означает отсутствие страницы в оперативной памяти.
Для увеличения эффективности такого типа схем в процессорах используется специальная полностью ассоциативная кэш-память, которая также называется буфером преобразования адресов (TLB traнсlation-lookaside buffer). Хотя наличие TLB не меняет принципа построения схемы страничной организации, с точки зрения защиты памяти, необходимо предусмотреть возможность очистки его при переключении с одной программы на другую.
Поиск в таблицах страниц, расположенных в основной памяти, и загрузка TLB может осуществляться либо программным способом, либо специальными аппаратными средствами. В последнем случае для того, чтобы предотвратить возможность обращения пользовательской программы к таблицам страниц, с которыми она не связана, предусмотрены специальные меры. С этой целью в процессоре предусматривается дополнительный регистр защиты, содержащий описатель (дескриптор) таблицы страниц или базово-граничную пару. База определяет адрес начала таблицы страниц в основной памяти, а граница - длину таблицы страниц соответствующей программы. Загрузка этого регистра защиты разрешена только в привилегированном режиме. Для каждой программы операционная система хранит дескриптор таблицы страниц и устанавливает его в регистр защиты процессора перед запуском соответствующей программы.
Отметим некоторые особенности, присущие простым схемам со страничной организацией памяти. Наиболее важной из них является то, что все программы, которые должны непосредственно связываться друг с другом без вмешательства операционной системы, должны использовать общее пространство виртуальных адресов. Это относится и к самой операционной системе, которая, вообще говоря, должна работать в режиме динамического распределения памяти. Поэтому в некоторых системах пространство виртуальных адресов пользователя укорачивается на размер общих процедур, к которым программы пользователей желают иметь доступ. Общим процедурам должен быть отведен определенный объем пространства виртуальных адресов всех пользователей, чтобы они имели постоянное место в таблицах страниц всех пользователей. В этом случае для обеспечения целостности, секретности и взаимной изоляции выполняющихся программ должны быть предусмотрены различные режимы доступа к страницам, которые реализуются с помощью специальных индикаторов доступа в элементах таблиц страниц.
Следствием такого использования является значительный рост таблиц страниц каждого пользователя. Одно из решений проблемы сокращения длины таблиц основано на введении многоуровневой организации таблиц. Частным случаем многоуровневой организации таблиц является сегментация при страничной организации памяти. Необходимость увеличения адресного пространства пользователя объясняется желанием избежать необходимости перемещения частей программ и данных в пределах адресного пространства, которые обычно приводят к проблемам переименования и серьезным затруднениям в разделении общей информации между многими задачами.
Стратегии замещения.
FIFO – типа очередь. Последовательное использование информации в странице, т.е. страница, которая была загружена первая больше использоваться не будет.
«Стратегия стека» - древовидная структура программы и данных, соответственно в первую очередь сначала сбрасываем листья, а затем корень. Нужен счетчик времени и запоминать время загрузки страницы в память.
«На кого бог пошлет». Случайным образом.
Частотная стратегия. В первую очередь удаляется та страница к которой дольше всего не обращались. Недостатки: можем удалить важные страницы ОС. Выход: каждой странице присваиваем свой приоритет. К системе приоритетов добавляем временные метки по которым приоритеты страниц уменьшаются на 1, а при обращении к странице приоритет увеличивается на 1.