Самостоятельная работа
Проработка конспектов лекций.
Подготовка к защите практической работы.
Составление рефератов и докладов.
Тема 5. Оперативная и виртуальная память.-6
1.Системы памяти, понятие о виртуальной памяти.
Виртуа́льная па́мять (англ. Virtual memory) — технология управления памятью ЭВМ, разработанная для многозадачных операционных систем. При использовании данной технологии для каждой программы используются независимые схемы адресации памяти, отображающиеся тем или иным способом на физические адреса в памяти ЭВМ. Позволяет увеличить эффективность использования памяти несколькими одновременно работающими программами, организовав множество независимых адресных пространств (англ.), и обеспечить защиту памяти между различными приложениями. Также позволяет программисту использовать больше памяти, чем установлено в компьютере, за счет откачки неиспользуемых страниц на вторичное хранилище (см. Подкачка страниц).
При использовании виртуальной памяти упрощается программирование, так как программисту больше не нужно учитывать ограниченность памяти, или согласовывать использование памяти с другими приложениями. Для программы выглядит доступным и непрерывным все допустимое адресное пространство, вне зависимости от наличия в ЭВМ соответствующего объёма ОЗУ.
Применение механизма виртуальной памяти позволяет:
упростить адресацию памяти клиентским программным обеспечением;
рационально управлять оперативной памятью компьютера (хранить в ней только активно используемые области памяти);
изолировать процессы друг от друга (процесс полагает, что монопольно владеет всей памятью).
В настоящее время эта технология имеет аппаратную поддержку на всех современных бытовых процессорах. В то же время во встраиваемых системах и в системах специального назначения, где требуется либо очень быстрая работа, либо есть ограничения на длительность отклика (системы реального времени) виртуальная память используется относительно редко. Также в таких системах реже встречается многозадачность и сложные иерархии памяти.
История
В 1940-е и 1950-е годы, все программы, размер которых превышал объём оперативной памяти, должны были содержать логику управления оперативной и внешней памятью, такую как оверлей. В связи с этим, виртуальная память была введена не только для увеличения объёма оперативной памяти, но и для того, чтобы сделать такое увеличение наиболее простым в использовании для программистов.[1] Для поддержки мультипрограммирования и многозадачности во многих ранних компьютерных системах разделение памяти между несколькими программами осуществлялось без виртуальной памяти, с помощью сегментации (например, в компьютерах PDP-10).
Понятие виртуальной памяти было впервые введено в 1956 году немецким физиком Фрицем-Рудольфом Гюнтшем (нем. Fritz-Rudolf Güntsch) из Берлинского технического университета в его докторской диссертации «Логическое проектирование цифровой вычислительной машины с несколькими асинхронными вращающимися барабанами и автоматическим высокоскоростным управлением памятью». В ней описывается машина с 6 блоками памяти на магнитных сердечникахёмкостью 100 слов каждый, и адресным пространством в 1000 блоков по 100 слов. Аппаратное обеспечение машины автоматически перемещает блоки между основной и внешней памятью на магнитных барабанах.[2][3] Подкачка страниц впервые была реализована в Манчестерском университете как способ расширения памяти компьютера Atlas путём объединения его основной памяти на магнитных сердечниках объёмом 16000 слов с памятью на магнитных барабанах ёмкостью 96000 слов. Первая поставка машины Atlas состоялась в 1962 году, но работающие прототипы подкачки страниц были разработаны уже в 1959 году.[1][4][5] В 1961 годуBurroughs Corporation независимо выпустила первый промышленно производившийся компьютер с виртуальной памятью B5000, использующий сегментацию вместо подкачки страниц.[6][7] В 1965 году виртуальная память была реализована в отечественной машине БЭСМ-6, хотя реализованный механизм не позволял расширить 15-разрядное адресное пространство процесса и ограничивал удобство программирования.[8]
Прежде чем виртуальная память смогла быть использована в распространённых операционных системах, должен был быть решен ряд проблем. Динамическая трансляция адресов требовала дорогого и сложного в изготовлении специального оборудования. Первые реализации замедляли доступ к памяти.[1] Существовали опасения, что новые общесистемные алгоритмы, использующие внешнюю память, будут менее эффективны, чем ранее использовавшиеся алгоритмы конкретных приложений. К 1969 году дебаты вокруг виртуальной памяти для промышленно выпускаемых компьютеров были завершены: команда исследователей из IBM под руководством Дэвида Сейра (англ. David Sayre) показала, что созданная ими система виртуальной памяти во всех отношениях превосходит самые лучшие системы, управляемые вручную.[1][9] Первым миникомпьютером, в котором была использована виртуальная память, был норвежский NORD-1. В 1970-е годы реализации виртуальной памяти появились в других миникомпьютерах, наиболее известным является VAX, работающий под управлением операционной системы VMS.
Виртуальная память в архитектуре x86 была реализована с появлением защищенного режима процессора 80286, однако она использовала сегментацию памяти, и метод подкачки сегментов плохо масштабировался для больших размеров сегментов. В процессоре 80386 была введена поддержка подкачки страниц, не приводящая к возникновению двойной ошибки, если во время обработки другого исключения возникло исключение ошибки страницы. Поверх системы подкачки страниц работал существующий механизм сегментации памяти. Однако загрузка дескрипторов сегментов являлась дорогостоящей операцией, заставляя разработчиков операционных систем полагаться только на механизм подкачки страниц, а не на комбинацию подкачки страниц и сегментации.
Страничная организация виртуальной памяти
В большинстве современных операционных систем виртуальная память организуется с помощью страничной адресации. Оперативная память делится на страницы: области памяти фиксированной длины (например, 4096 байт), которые являются минимальной единицей выделяемой памяти (то есть даже запрос на 1 байт от приложения приведёт к выделению ему страницы памяти). Процесс обращается к памяти с помощью адреса виртуальной памяти, который содержит в себе номер страницы и смещение внутри страницы. Процессор преобразует номер виртуальной страницы в адрес соответствующей ей физической страницы при помощи буфераассоциативной трансляции. Если ему не удалось это сделать, то требуется обращение к таблице страниц (так называемый Page Walk), что может сделать либо сам процессор, либо операционная система (в зависимости от архитектуры)[10]. Если страница выгружена из оперативной памяти, то операционная система подкачивает страницу с жёсткого диска (см. свопинг). При запросе на выделение памяти операционная система может «сбросить» на жёсткий диск страницы, к которым давно не было обращений. Критические данные (например, код запущенных и работающих программ, код и память ядра системы) обычно находятся в оперативной памяти (исключения существуют, однако они не касаются тех частей, которые отвечают за обработку аппаратных прерываний, работу с таблицей страниц и использование файла подкачки).
Сегментная организация виртуальной памяти
Механизм организации виртуальной памяти, при котором виртуальное пространство делится на части произвольного размера — сегменты. Этот механизм позволяет, к примеру, разбить данные процесса на логические блоки.[11] Для каждого сегмента, как и для страницы, могут быть назначены права доступа к нему пользователя и его процессов. При загрузке процесса часть сегментов помещается в оперативную память (при этом для каждого из этих сегментов операционная система подыскивает подходящий участок свободной памяти), а часть сегментов размещается в дисковой памяти. Сегменты одной программы могут занимать в оперативной памяти несмежные участки. Во время загрузки система создает таблицу сегментов процесса (аналогичную таблице страниц), в которой для каждого сегмента указывается начальный физический адрес сегмента в оперативной памяти, размер сегмента, правила доступа, признак модификации, признак обращения к данному сегменту за последний интервал времени и некоторая другая информация. Если виртуальные адресные пространства нескольких процессов включают один и тот же сегмент, то в таблицах сегментов этих процессов делаются ссылки на один и тот же участок оперативной памяти, в который данный сегмент загружается в единственном экземпляре. Система с сегментной организацией функционирует аналогично системе со страничной организацией: время от времени происходят прерывания, связанные с отсутствием нужных сегментов в памяти, при необходимости освобождения памяти некоторые сегменты выгружаются, при каждом обращении к оперативной памяти выполняется преобразование виртуального адреса в физический. Кроме того, при обращении к памяти проверяется, разрешен ли доступ требуемого типа к данному сегменту.
Виртуальный адрес при сегментной организации памяти может быть представлен парой (g, s), где g — номер сегмента, а s — смещение в сегменте. Физический адрес получается путем сложения начального физического адреса сегмента, найденного в таблице сегментов по номеру g, и смещения s.
Недостатком данного метода распределения памяти является фрагментация на уровне сегментов и более медленное по сравнению со страничной организацией преобразование адреса.
2.Организация оперативной памяти.
Внутренняя память ПК обладает двумя основными свойствами:дискретностью и адресуемостью.
Дискретность – память состоит из битов (бит — элемент памяти, частица информации, хранит двоичный код 0 или 1. Слово бит произошло от англ. «binary digit» — двоичная цифра).
Бит – наименьшая частица памяти компьютера.
Следовательно, у слова «бит» есть два смысла: это единица измерения количества информации и частица памяти компьютера. Оба эти понятия связаны между собой следующим образом:
В одном бите памяти хранится один битинформации.
Память – это упорядоченная последовательность двоичных разрядов(бит). Эта последовательность делится на группы по 8 разрядов. Каждая такая группа образует байт памяти.
Следовательно «бит» и «байт» обозначают не только названия единиц измерения количества информации, но и структурные единицы памяти ЭВМ.
1Кб = 210 байт =1024б
1Мб = 210 Кбайт =1024Кб
1Гб = 1024Мб
Ячейка памяти– группа последовательных байтов внутренней памяти, вмещающая в себе информацию, доступную для обработки отдельной командой процессора.
Содержимое ячейки памяти называется машинным словом. Байты внутренней памяти пронумерованы. Нумерация начинается с 0.
Порядковый № байта называется адресом байта. Принцип адресуемости памяти заключается в том, что любая информация заносится в память и извлекается из нее по адресам, т.е. чтобы взять информацию из ячейки памяти или поместить ее туда, необходимо указать адрес этой ячейки. Адрес ячейки память равен адресу младшего байта, входящим в ячейку.
Адресация памяти начинается с 0. Адреса ячеек кратны количеству байтов в машинном слове.
Структура оперативной памяти
Оперативная память(ОП) (ОЗУ)
Из ОП ЦП берет исходные данные для обработки, в нее записываются полученные результаты. Название «оперативная» память получила потому что работает быстро.
Является энергозависимой, данные и программы сохраняются в ней только до тех пор, пока ПК включен, при выключении ПК содержимое ОП стирается.
ОЗУ предназначена для хранения текущей, быстроменяющейся информации и допускает изменение своего содержимого в ходе выполнения процессором вычислений.
Используется два основных типа оперативной памяти: статическая память (SRAM-Static RAM — КЭШ) и динамическая память (DRAM-Dynamic RAM — ОЗУ).
Эти две разновидности памяти различаются быстродействием и удельной плотностью (емкостью) хранимой информации.
Быстродействие памяти характеризуется двумя параметрами: временем доступа(access time) и длительностью цикла памяти (cycle time).
Эти величины, как правило, измеряются в наносекундах. Чем больше эти величины, тем больше быстродействие памяти.
Время доступа представляет собой промежуток времени между формированием запроса на чтение информации из памяти и моментом поступления из памяти запрошенного машинного слова (операнда).
Длительность циклаопределяется минимальным допустимым временим между двумя последовательными обращениями к памяти.
В статической памятиэлементы построены на триггерах — схемах с двумя устойчивыми состояниями. Для построения одного триггера требуется 4-6 транзисторов. После
записи информации в статический элемент памяти он может хранить информацию сколь угодно долго (пока подается электрическое питание).
Статическая память имеет высокое быстродействие и низкую плотность размещения хранящихся данных. Этот вид памяти дорог и энергоемок, следовательно, может происходить перегрев,
что снижает надежность система, поэтому вся ОП не может быть построена по статическому принципу.
В динамической памятиэлементы памяти построены на основе полупроводниковых конденсаторов, занимающих гораздо более меньшую площадь, чем триггеры в статической памяти.
Для построения динамического элемента памяти требуется 1-2 транзистора. Каждый бит ОП представляется в виде наличия или отсутствия заряда на конденсаторе, образованном в структуре
полупроводникового кристалла. Ячейки динамической памяти очень компактны, но со временем конденсатор испытывает утечку заряда, поэтому периодически (приблизительно 1000 раз в сек.)
выполняется автоматическое восстановление информации в каждой ячейке. Это снижает скорость работы динамической памяти и является основным ее недостатком.
ОП часто обозначают RAM (Random Access memory) – память с произвольным доступом (тип доступа к памяти при котором ячейки памяти пронумерованы, т.е. адресуемы и, следовательно, обращение к ним может производиться в произвольном порядке).
Термин «произвольный доступ» означает, что можно считать (записать) информацию в любой момент времени из любой ячейки.
Заметим, что существует и другая организация памяти, при которой прежде чем считать нужную информацию нужно «вытолкнуть» ранее поступившие операнды.
От объема ОП, установленным на ПК напрямую зависит с каким ПО Вы сможете на нем работать. При недостатке ОП программы не запускаются, выдается сообщение: “Out of memory”, либо работают крайне медленно.
Чем больше ОП в ПК, тем лучше. При необходимости объем ОП можно нарастить (ограничивается параметрами ОП, поддерживаемой конкретной материнской платы, внимательно см.спецификацию к системной плате).
Распределение памяти в ПК (Разделы ОЗУ)
RAM устроена довольно сложно, она иерархична (многоэтажна). ОП разделяют на несколько типов. Деление это обусловлено историческими причинами.
Первые компьютеры были выполнены так, что они могли работать максимально с 640Кб памяти. Выделяют 4 вида памяти:
Стандартная (conventional memory area)
Верхняя (upper memory blocks(area))
Дополнительная (expanded memory specification)
Расширенная (extended memory specification)
Стандартная (conventional memory area)– базовая, первые 640 Кб, также его часто называют lower.
В мл. адреса этой памяти загружается ОС и драйверы устройств. Оставшуюся свободную часть памяти занимают пользовательские программы.
Резидентные программы так же остаются в этой памяти.
Верхняя (upper memory аrea)– 640Кб — 1Мб используется для хранения служебной информации: памяти видеоадаптера,BIOS.
Спец. драйвер Himem.sys позволяют загружать в свободные участки этой области резидентные программы и драйвера устройств.
High memory – первые 64 Кб после 1Мб. ОС MS DOS позволяет загрузить часть резидентной DOS в эту область, освобождая при этом существенную часть
базовой памяти для работы прикладных программ. Особенно это полезно для программ, использующих всю ОП. Используя спец. утилиты (для DOS emm386.exe)
в верхние разделы памяти можно загружать также и резидентные программы (команды LH для autoexec.bat и DEVICEHIGT для config.sys).
Вся память свыше 1 Мб может быть рассмотрена как дополнительная(expanded) или какрасширенная (extended). В ОС менеджер памяти позволяет использовать память и как расширенную и как дополнительную, автоматически обеспечивая тот тип взаимодействия с данными, который нужен прикладным программам. Т.е. пользователю новых современных ПК (от Pentium) нет необходимости распределять память «в ручную», менеджер выделить память таким образом, как это требует прикладная программа.
Дополнительная(expanded) память – постраничная, т.е. ОП разбивается на страницы, каждой странице ставится в соответствие определенный адрес в основной памяти. При обращении к такому адресу EMM(expanded memory manager) драйвер расширенной памяти(менеджер памяти) позволяет компьютеру считать информацию с соответствующей страницы памяти.
Расширенная (extended) память построчной организации (Smartdrv — драйвер расширенной памяти) используется для создания временного логического диска (виртуального диска), как буфер обмена с жестким диском.
Дата добавления: 2015-11-26; просмотров: 1703;