Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
История. В 1940-е и 1950-е годы, все программы, размер которых превышал объём оперативной памяти, должны были содержать логику управления оперативной и внешней
В 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 разрядов. Каждая такая группа образует байт памяти. Следовательно «бит» и «байт» обозначают не только названия единиц измерения количества информации, но и структурные единицы памяти ЭВМ.
Ячейка памяти – группа последовательных байтов внутренней памяти, вмещающая в себе информацию, доступную для обработки отдельной командой процессора.
Структура оперативной памяти
Из ОП ЦП берет исходные данные для обработки, в нее записываются полученные результаты. Название «оперативная» память получила потому что работает быстро. Быстродействие памяти характеризуется двумя параметрами: временем доступа(access time) и длительностью цикла памяти (cycle time). В статической памяти элементы построены на триггерах — схемах с двумя устойчивыми состояниями. Для построения одного триггера требуется 4-6 транзисторов. После В динамической памяти элементы памяти построены на основе полупроводниковых конденсаторов, занимающих гораздо более меньшую площадь, чем триггеры в статической памяти. ОП часто обозначают RAM (Random Access memory) – память с произвольным доступом (тип доступа к памяти при котором ячейки памяти пронумерованы, т.е. адресуемы и, следовательно, обращение к ним может производиться в произвольном порядке). Термин «произвольный доступ» означает, что можно считать (записать) информацию в любой момент времени из любой ячейки. Заметим, что существует и другая организация памяти, при которой прежде чем считать нужную информацию нужно «вытолкнуть» ранее поступившие операнды. От объема ОП, установленным на ПК напрямую зависит с каким ПО Вы сможете на нем работать. При недостатке ОП программы не запускаются, выдается сообщение: “Out of memory”, либо работают крайне медленно. Чем больше ОП в ПК, тем лучше. При необходимости объем ОП можно нарастить (ограничивается параметрами ОП, поддерживаемой конкретной материнской платы, внимательно см.спецификацию к системной плате).
RAM устроена довольно сложно, она иерархична (многоэтажна). ОП разделяют на несколько типов. Деление это обусловлено историческими причинами. Стандартная (conventional memory area) Верхняя (upper memory blocks(area)) Дополнительная (expanded memory specification) Расширенная (extended memory specification) Стандартная (conventional memory area) – базовая, первые 640 Кб, также его часто называют lower. Верхняя (upper memory аrea) – 640Кб — 1Мб используется для хранения служебной информации: памяти видеоадаптера, BIOS. High memory – первые 64 Кб после 1Мб. ОС MS DOS позволяет загрузить часть резидентной DOS в эту область, освобождая при этом существенную часть Вся память свыше 1 Мб может быть рассмотрена как дополнительная(expanded) или как расширенная (extended). В ОС менеджер памяти позволяет использовать память и как расширенную и как дополнительную, автоматически обеспечивая тот тип взаимодействия с данными, который нужен прикладным программам. Т.е. пользователю новых современных ПК (от Pentium) нет необходимости распределять память «в ручную», менеджер выделить память таким образом, как это требует прикладная программа. Дополнительная(expanded) память – постраничная, т.е. ОП разбивается на страницы, каждой странице ставится в соответствие определенный адрес в основной памяти. При обращении к такому адресу EMM(expanded memory manager) драйвер расширенной памяти(менеджер памяти) позволяет компьютеру считать информацию с соответствующей страницы памяти. Расширенная (extended) память построчной организации (Smartdrv — драйвер расширенной памяти) используется для создания временного логического диска (виртуального диска), как буфер обмена с жестким диском.
|