Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Управление памятью




О памяти компьютерной системы

Память — важнейший ресурс вычислительной системы, требующий эффективного управления. Несмотря на то, что в наши дни память среднего домашнего компьютера в тысячи раз превышает память больших ЭВМ 70-х годов, программы увеличиваются в размере быстрее, чем память. Достаточно сказать, что только операционная система занимает сотни Мбайт, не говоря о прикладных программах и базах данных, которые могут занимать в вычислительных системах десятки и сотни Гбайт.

Со времен создания ЭВМ фон Неймана основная память в компьютерной системе организована как линейное (одномерное) адресное пространство, состоящее из последовательности слов, а позже байтов. Ячейки памяти занумерованы, начиная с нуля. Номер ячейки называется её физическим адресом.

В идеале программист хотел бы иметь неограниченную в размере и скорости память, которая была бы энергонезависимой, т.е. сохраняла бы своё содержимое при выключении питания, при этом недорого стоила.

В реальности пока такой памяти нет. В то же время на любом этапе развития технологии производства запоминающих устройств действуют следующие достаточно устойчивые соотношения:

  • чем меньше время доступа, тем дороже бит;
  • чем выше емкость, тем ниже стоимость бита;
  • чем выше емкость, тем больше время доступа.

Чтобы найти выход из сложившейся ситуации, необходимо опираться не на отдельно взятые компоненты или технологию, а выстроить иерархию запоминающих устройств, показанную на рис. 3.1. При перемещении слева направо происходит следующее:

  • снижается стоимость бита;
  • возрастает емкость;
  • возрастает время доступа;
  • снижается частота обращений процессора к памяти.

Рисунок 6. Иерархия запоминающих устройств

Такие закономерности организации и характеристики памяти накладывают свой отпечаток на протекающие вычислительные процессы. Некоторые вида специально введены как промежуточные (кэширующие) между различными видами памяти, сильно отличающимися по времени доступа. Самым наглядным примером в этом случае может служить кэш жесткого диска (обычный объём её 8-16Мб по данным на 2006г.). Доступ к информации на жестком диске происходит существенно медленнее, чем работа с оперативной памятью. Если пользователь посылает запрос на чтение части файла с жесткого диска, в кэш диска читается весь файл, а передаётся в оперативную память лишь запрошенная часть. При следующем запросе на оставшуюся часть файла, данные будут взяты из кэша. При этом доступ к кэш-памяти диска происходит быстрее, чем чтение с диска.

Виртуализация памяти

Объём оперативной памяти существенно сказывается на вычислительном процессе, так как ограничивает количество одновременно протекающих в системе процессов. Большое количество задач требует большого объёма оперативной памяти. В условиях недостатка памяти был предложен метод организации вычислительного процесса, при котором образы некоторых процессов целиком или частично временно выгружаются на диск.

Очевидно, что имеет смысл временно выгружать неактивные процессы, находящиеся в ожидании каких-либо ресурсов, в том числе очередного кванта времени центрального процессора. К моменту, когда пройдет очередь выполнения выгруженного проце­са, его образ возвращается с диска в оперативную память. Если при этом обнаруживается, что свободного места в оперативной памяти не хватает, то на диск выгружается другой процесс.

Такая подмена (виртуализация) оперативной памяти дисковой памятью позволяет повысить уровень мультипрограммирования, поскольку объем оперативной памяти те­перь не столь жестко ограничивает число одновременно выполняемых процессов. При этом суммарный объем оперативной памяти, занимаемой образами процессов, может существенно превосходить имеющийся объем оперативной памяти.

В данном случае в распоряжение прикладного программиста предоставляется виртуальная оперативная память, размер которой намного превосходит реальную память системы и ограничивается только возможностями адресации используемого процесса (в ПК на базе Pentium 232 можно адресовать 4 Гбайт памяти). Вообще виртуальным (кажущимся) называется ресурс, обладающий свойствами (в данном случае большой объем ОП), которых в действительности у него нет.

Виртуализация оперативной памяти осуществляется совокупностью аппаратных и программных средств вычислительной системы (схемами процессора и операционной системой) автоматически без участия программиста и не сказывается на логике работы приложения.

Виртуализация памяти возможна на основе двух возможных подходов:

  1. свопинг (swapping) — образы процессов выгружаются на диск и возвращаются в оперативную память целиком;
  2. виртуальная память (virtual memory) — между оперативной памятью и диском перемещаются части образов (сегменты, страницы, блоки и т. п.) процессов.

Недостатки свопинга:

    • избыточность перемещаемых данных и отсюда замедление работы системы и неэффективное использование памяти;
    • невозможность загрузить процесс, виртуальное пространство которого превышает имеющуюся в наличие свободную память.

Достоинство свопинга по сравнению с виртуальной памятью — меньшие затраты времени на преобразование адресов в кодах программ, поскольку оно делается один раз при загрузке с диска в память (однако это преимущество может быть незначительным, т.к. выполняется при очередной загрузке только часть кода и полностью преобразовывать код может быть и не надо).

Виртуальная память не имеет указанных недостатков, но ее ключевой проблемой является преобразование виртуальных адресов в физические. На это преобразование существенно затрачивается время, если не принять специальных мер.

Функции ОС по управлению памятью

Под памятью в данном случае подразумевается оперативная (основная) память компьютера. В ранних операционных системах функции по управлению памятью сводились к решению простых задачам: загрузить программу в память, выгрузить из памяти и т.п. С появлением многозадачных, многопоточных операционных систем, задачи качественно усложнились и число существенно возрасло.

Функциями ОС по управлению памятью в многозадачных и многопоточных системах являются:

  1. Отслеживание (учет) свободной и занятой памяти.

С этой целью используют так называемые карты памяти, указывающие какие области памяти свободны, а какие заняты. Для отслеживания свободной и занятой памяти могут использоваться различные механизмы. Наиболее распространены битовые массивы и списки свободных участков.

При учёте с помощью механизма битового массива, память разделяется на области определённой длины, например 64Кб. Каждому блоку в массиве соответствует 1 бит. Если этот бит равен 0, это означает что блок свободен, если 1, то соответствующий блок занят.

В случае учёта списком свободных участков, операционная система организует связный список, каждым элементом которого является структура, состоящая из двух чисел (Adr, Len), первое из которых указывает адрес начала свободного участка памяти, а второе — его длину в байтах.

  1. Первоначальное и динамическое выделение памяти процессам приложений и самой операционной системе и освобождение памяти по завершении процессов.

При запуске процесса операционная система выделяет свободную область памяти, куда будет загружен процесс, загружает в неё данные этого процесса. При завершении процесса, операционная система должна выгрузить его из памяти и пометить что область памяти, которую процесс занимал, теперь свободна.

Набор действий кажется не столь сложным, но это ложная простота. Например, действие по выбору свободной области памяти, куда будет загружен процесс, на самом деле может происходить согласно различным стратегиям ("выделить любой участок нужной длины", "выделить участок, имеющий минимальный достаточный размер", "выделить участок, имеющий максимальный достаточный").

  1. Настройка адресов программы на конкретную область физической памяти.

Для идентификации переменных и команд на разных этапах жизненного цикла программы используются символьные имена, виртуальные (математические, условные, логические — все это синонимы) и физические адреса.

Символьные имена присваивает пользователь при написании программ на алгоритмическом языке или ассемблере. Виртуальные адреса вырабатывают транслятор, переводящий программу на машинный язык. Поскольку во время трансляции не известно, в какое место оперативной памяти будет загружена программа, то транслятор присваивает переменным и командам виртуальные (условные) адреса, считая по умолчанию, что начальным адресом программы будет нулевой адрес.

Физические адреса соответствуют номерам ячеек оперативной памяти, где в действительности будут расположены переменные и команды.

Совокупность виртуальных адресов процесса называется виртуальным адресным пространством. Диапазон адресов виртуального пространства у всех процессов один и тот же и определяется разрядностью адреса процессора (для Pentium адресное пространство составляет объем, равный 232 байт, с диапазоном адресов от 0000000016 до FFFFFFFF16).

Существует два принципиально отличающихся подхода к преобразованию виртуальных адресов в физические.

В первом случае такое преобразование выполняется один раз для каждого процесса во время начальной загрузки программы в память. Преобразование осуществляет перемещающий загрузчик на основании имеющихся у него данных о начальном адресе физической памяти, в которую предстоит загружать программу, а также информации, предоставляемой транслятором об адресно-зависимых элементах программы.

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

  1. Виртуализация памяти.

В случае, когда не хватает объёма реальной памяти для загрузки процесса, диспетчер памяти частично или полностью вытесняет из памяти одни из приостановленных процессов на диск. Затем, при возобновлении вытесненного процесса, диспетчер должен восстановить его образ в памяти, причём если памяти не хватает, вытеснить другой процесс.

Такой механизм виртуализации памяти уже был описан ранее. Задачи по отслеживанию выгруженных образов памяти и корректному их восстановлению при возобновлении процесса — решаются диспетчером виртуальной памяти.

  1. Защита памяти, выделенной процессу от возможных вмешательств со стороны других процессов.

Каждый процесс должен работать в своём адресном пространстве, не вмешиваясь в адресное пространство других процессов. За этим следит операционная система. В случае обращения процесса по адресу за пределами его адресного пространства, операционная система не позволит выполнить обращение и остановит процесс, сообщив о произошедшей ошибке адресации.

Замечание 3.1. Иногда процессам требуется производить чтение из областей памяти других процессов (например, при антивирусной проверке), или передавать данные другим процессам. Такие ситуации относятся к особому случаю межпроцессного взаимодействия и выполняются специальными системными вызовами.

 

  1. Дефрагментация памяти.

В процессе работы операционной системы множество программ загружаются в память и выгружаются из неё. Часто возникает ситуация, когда между диапазонами памяти занятыми процессами расположены свободные диапазоны. При это возникает негативный эффект: по сумме свободные диапазоны могут составлять достаточный для загрузки запускаемого вновь процесса объём памяти, но среди этих свободных диапазонов, может не найтись ни одного непрерывного диапазона памяти, куда этот загружаемый процесс полностью поместился бы. Операционная система для устранения этого эффекта перемещает процессы в памяти, при этом, перенастраивая адресно-зависимые части кода этих процессов на новые адреса, куда перемещён процесс.


Поделиться:

Дата добавления: 2015-09-13; просмотров: 194; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты