Память - устройство хранения, обработки компьютером.
Состав памяти:
- ВЗУ (винчестер, жесткий диск, флешки и т.д.)
- ОЗУ (оперативная память)
- Кэш (буфер)
- Регистры процессора
При этом расположении объем памяти увеличивается снизу вверх, а скорость реагирования уменьшается.
Каждый вид памяти принципиально отличается от другого, по этому, управление существенно различается.
Способ организации памяти:
Организация памяти задает структуризацию на разных уровнях, способ размещения данных и способ доступа. Организация классифицируется на:
- Связные (данные первой программы располагаются едино)
- Не связные (данные произвольно распределены на носителе)
- Статические (для Кэш, данные программы размещаются в память вначале работы и до окончания не изменяют размер и место расположения)
- Динамические (для Кэш, данные по ходу программы могут перемещаться)
Управлением памятью занимается набор стратегий, определяющих способ использования конкретной организацией.
Стратегии управления:
- Стратегии выборки (в какой момент времени данные программы должны быть размещены в памяти)
- по запросу (после обращения к данным)
- с упреждением (размещение перед тем, как они понадобятся)
- Стратегии размещения (в какой участок памяти разместить очередные данный)
- Стратегии замещения (какие данные из памяти нужно вытеснить для размещения новых)
Стратегий размещения и замещения существует огромное количество видов и различаются для различных организаций.
Основная память - устройство для хранения информации, работающей в данный момент программы.
Оперативная память - набор модулей, каждый из которых является набором ячеек.
К различным модулям обращение может выполняться параллельно.
Раcслоение - программно-аппаратный метод, помогающий увеличить быстродействие. Специальный способ адресации ячеек памяти. За счет этого обращение к данным распараллеливается.
При последовательной адресацции, адреса назначаются каждому модулю поочередно. Метод разслоения изпользует адресацию по кругу. Поскольку обращение к данным происходит последовательно, то при использовании разслоения скорость обращения возрастает за счет распараллеливания запросов памяти.
Однозадачная организация.
Некоторая часть памяти всегда отводится под системные требования. Вся оперативная память, не занятая операционной системой, отводится под текущие прикладные программы.
Стратегия управления для данной организации тривиальна (по завпросу - стратегия выборки, стратегия размещения - по направлению возрастания адресов, следом з аядром и по направлению убывания адресов с конца пространства; стратегия замещения - прикладные задачи не вытесняются, по скольку, новая программа загружается по завершению предыдущей). С целью устранения недостатков применялись попытки усовершенствования организации без ее принципиального изменения:
- Оверлейная организация программ (наложение слоев) - разбиение прикладной программы на несколько независимых частей и загрузку их в память поочередно.
- Свопинг - как только прикладная программа вызывает операцию ввода/вывода, операционаая система вытисняет программу из оперативной памяти во внешнюю, на ее место загружается другая программа, ожидающая вызова.
Оlнозадачная организация в чистом виде относится к классу связных статических. С overlay - не связные статично-динамические. Со swap - связно-динамические.
Многозадачная организация.
Когда-то многозадачная организация была придумана, чтобы устранить простои ЦП во время выполнения операций ввода/вывода.
При передачи управления, для достижения разумной эффективности, программа приема управления должна уже находиться в оперативной памяти, следовательно, в каждый момент времени в оперативной памяти должно находиться несколько программ.
Первоначальная идея - принцип невытесняющий многозадачности (передавать управление во время ввода/вывода). Однако, этот принцип пораждает ограничение - непредсказуемость времени отклика программы. Время работы каждой запущенной задачи прямо зависит от поведения предыдущей. Если одна делает операции вывода, значит переход к другой программе, иначе программа будет работать до завершения, только после этого программа передаст управление. Дляч устранения дискриминации был предложен принцип вытесняемой многозадачности: программа может в любой момент времени прервать прикладжную программу и передать управление другой, а выполнявшаяся программа ожидает квант следующего выполнения. Квант не обязательно используется полностью, в случае ввода/вывода, завершения программы так же осуществляются передачи управления. ПРинцип вытеснения/невытеснения является общим.
Таким образом, организации, основанные на концепции виртуальной памяти являются несвязными и динамическими по типу органицазий.
Типы организаций памяти:
- Страничная (все блоки-страницы одинакового размера)
- Сегментная (размер блока-сегмента выбирается индивидуально)
- Странично-сегментная (блоки разного размера, но состоят из множества блоков фиксированной величины)
Страничная:
Программа при запуске разбивается на множество страниц-блоков одинакового размера. Виртуальный адрес состоит из номера страницы и смещения (V=(p,d)). Оперативная память, свободная от операционной системы разбивается на разделы-кадры равной длины. Для учета текущего размещения страниц водется таблица страниц, в которой для каждой страницы хранится:
- бит - признак присутствия страницы в оперативной памяти.
- Если бит = 1, то присутствует номер страницы-кадра.
- Если бит = 0, то задействован адрес во внешней памяти.
Номер строки равен номеру страницы. Таблица страниц для повышения эффективности обращения к ней может размещаться в основной памяти.
Механизм динамического преобразования адресов:
- Из регистра начального адреса таблицы отобраэжений извлекается размещение таблицы страниц текущей программы.
- Адрес смещается на номер страницы из виртуального адреса "*" на размер строки таблицы. Получаем адрес нужной строки в таблице отображений.
- Анализируется первый бит строки (на этом этапе алгоритм разветвляется):
- если бит=1, то считывается следующее в строке число - номер страничного кадра. Производится 4 действие
- если бит=0, то операционная система гененрирует исключение (pagefloult) и подкачивает страницу из внешней памяти с указанием адреса.
- Вычисляется физический номер страничного кадра (номер кадра умножить на размер страницы и прибавить базу)
- Полученный адрес складываем со смещением. Получаем физический адрес для требуемого данного.
Во втором случае, текущая выполняемая программа приостанавливается в ожидании завершения операции ввода/вывода. Операцинная система передает управление другой программе.
Отметим, что таблица отображения относится к системной информации и управление осуществляет только операционная система. Механизм преобразования адресов реализуется тоже операционной системой. Прикладная программа не имеет доступа к своим таблицам и не может прямо влиять на физическое размещение своих данных.
Стратегия управления является тривиальной, по скольку страничные кадры мжду собой ничем не отличаются. Стратегия: "Первый попавшийся свободный кадр". Для реализации должен вестись список свободных кадров, который структуры не имеет.
При реализации памяти появляется, возможно, выборка с упреждением, т.к. загрузка программы в память отдельными блоками. Тратегия выборки с упреждением базируется на анализе текущего выполнения программы и предсказании, какой блок понадобиться в следующий момент.
Защита памяти страничной организации:
Защита памяти организуется естественным образом: сама программа о физическом адресном пространстве не имеет никакой информации и оперирует только виртуальными адресами. Преобразование виртуальных адресов в реальные выполняет операционная система, при этом перехватывает все некорректные обращения (т.е. либо указание большей страницы,ч ем может быть, илбо указание смещения больше, чем может быть). Оба случая легко перехватываются. Таблице страниц операционной системы легко известен номер последней страницы процесса, с ним сравнивается начало виртуального адреса и при выходе за перделы приклодная программа прерывается с ошибкой обращения по некорректному адресу. Во втором случае: вторую половину виртуального адреса операционная система сравнивает с размером страницы и при привышении рождается тоже исключение. Таким образом, за счет опосредованного обращения к памяти, процессы изолированы друг от друга. ТАк же бессмыслены передачи виртуального адреса из одной программы в другую. Один и тот же виртуальный адрес разной программы будет преобразовываться в различные физические адреса.
В организации виртуальной памяти появляется возмождность коллективного использования данных. Что позволяет существенно экономить ресурсы за счет того, что не нужно создавать копий жэтих данных для каждой прикладной программы, желающей ими воспользоваться.
Сегментная:
При сегментной организации программа разбивается на блоки не унифицированным образом, а индивидуально для каждого блока, исходя из логики организации информации в данном участке. Размер сегмента первоначально выбирается как стандартная величина, затем производится анализ границы разбиения. Если она приходится на адрес внутри некоторого набора данных, то она сдвигается до границы этого набора. Если граница приходится на ком и вблизи имеются инструкции перехода за нее, то граница сдвигается, кроме того не порождается внутри сегментная фрагментация: выделяется ровно столько памяти, сколько необходимо данному участку. За счет соблюдения этих принципов, свойство локальности в данной организации соблюдается с большей вероятностью, следовательно проще формировать рбочее множество.
Для каждой программы операционная система ведет таблицу отображения сегмента: бит признака наличия, адрес начала размещения в операционной системе, длина сегмента, адрес внешней памяти. Процесс преобразования виртуального адреса в рельный аналогичен, так как базируется на табличном отображении.
Сегментно-страничная:
В этом виде организации инструкция работающей программы разбывается на блоки нескольких уровней. Превоначально, на нижнем уровне, используются блоки одинакового размера, т.е страницы. Затем все множетсво страниц разбивается на блоки-сегменты, которые, в свою очередь, могут включать разное количество страниц. Набор сегментов так же разбивается еще на блоки и т.д. Количество уровней не фиксируется.