Управление оперативной памятью доклад

Обновлено: 07.07.2024

  • Для учеников 1-11 классов и дошкольников
  • Бесплатные сертификаты учителям и участникам

Система оперативной памяти. DRAM

Оперативная память компьютера - это часть системы памяти ЭВМ, в которую процессор может обратиться за одну операцию (jump, move и т. п.). Предназначена для временного хранения данных и команд, необходимых процессору для выполнения им операций. Оперативная память передаёт процессору команды и данные непосредственно, либо через кэш-память. Каждая ячейка оперативной памяти имеет свой индивидуальный адрес. В современных вычислительных устройствах, оперативная память выполнена по технологии динамической памяти с произвольным доступом. Понятие памяти с произвольным доступом предполагает, что текущее обращение к памяти не учитывает порядок предыдущих операций и расположения данных в ней. ОЗУ может изготавливаться как отдельный блок, или входить в конструкцию однокристальной ЭВМ или микроконтроллера.

Содержащиеся в оперативной памяти данные доступны только тогда, когда на модули памяти подаётся напряжение, то есть, компьютер включен. Пропадание на модулях памяти питания, даже кратковременное, приводит к искажении либо полному пропаданию содержимого ОЗУ. В общем случае, оперативная память содержит данные операционной системы и запущенных на выполнение программ, поэтому от объёма оперативной памяти зависит количество задач, которые одновременно может выполнять компьютер. Самые распространенные объемы оперативной памяти сейчас на компьютерах: 1, 2, 3, 4 ГБ. Этот объем может состоять как из одной линейки (платы) оперативной памяти, так и из нескольких, установленных в разные слоты. Самыми популярными производителями являются: Hynix (HYUNDAI), Samsung, Corsair, Kingmax, Transcend, Kingston, OCZ.

Динамическая оперативная память

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

Ячейки памяти в микросхеме DRAM – это конденсаторы, удерживающие заряды. Проблемы, связанные с памятью этого типа, вызваны тем, что она динамическая, т.е. должна постоянно регенерироваться, так как в противном случае электрические заряды в конденсаторах памяти будут “стекать”, и данные будут потеряны. Регенерация происходит, когда контроллер памяти системы берет крошечный перерыв и обращается ко всем строкам данных в микросхемах памяти. Большинство систем имеет контроллер памяти, который настроен на соответствующую промышленным стандартам частоту регенерации, равную 15 мкс.

Регенерация памяти, нагружает процессор, так как каждый цикл регенерации по длительности занимает несколько циклов центрального процессора. В старых компьютерах циклы регенерации могли занимать до 10% процессорного времени, но в современных системах, расходы на регенерацию составляют менее 1% процессорного времени. Некоторые системы позволяют изменить параметры регенерации с помощью программы установки параметров CMOS, но увеличение времени между циклами регенерации может привести к тому, что в некоторых ячейках памяти заряд “стечет”, а это вызовет сбой памяти.

В устройствах DRAM для хранения одного бита используется только один транзистор и пара конденсаторов, поэтому они более вместительны, чем микросхемы других типов памяти. Транзистор для каждого однозарядного регистра DRAM использует для чтения состояния смежного конденсатора. Если конденсатор заряжен, в ячейке записана 1; если заряда нет – записан 0. Заряды в конденсаторах все время стекают, вот почему память должна постоянно регенерироваться. Даже мгновенное прерывание подачи питания или какой-нибудь сбой в циклах регенерации приведет к потере заряда в ячейке DRAM и к потере данных.

Запоминающее устройство с произвольным доступом

Это - один из видов памяти, позволяющий в любой момент времени получить доступ к любой ячейке по её адресу на чтение или запись. Предназначены для записи, хранения и считывания информации в процессе её обработки. Подразделяются на статические и динамические. В статических ОЗУ запоминающий элемент представляет собой триггер, изготовленные по той или иной технологии (ТТЛ, ЭСЛ, КМОП и др.), что позволяет считывание информации без её потери. В динамических ОЗУ элементом памяти является ёмкость (входная ёмкость полевого транзистора), что требует восстановления записанной информации в процессе её хранения и использования. Это усложняет применение ОЗУ динамического типа, но позволяет реализовать больший объём памяти. В современных динамических ОЗУ имеются встроенные системы синхронизации и регенерации, поэтому по внешним сигналам управления они не отличаются от статических.

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

Содержание

Введение________________________________________________3
1. Оперативная память. Её свойства и функции___________________4
2. Система памяти персонального компьютера___________________6
3. КЭШ-память______________________________________________7
4. Оперативное запоминающее устройство______________________10
5. Физические виды ОЗУ_____________________________________11
5.1. Статическая память__________________________________11
5.2. Динамическая память________________________________12
6. Перспективы развития оперативной памяти
6.1. MRAM_____________________________________________13
6.2. Память на основе графеновой наноленты________________16
6.3. Оперативная память на нанотрубках____________________17
Заключение______________________________________________19
Список использованной литературы_________________________20

Прикрепленные файлы: 1 файл

Корней реферат.docx

  1. Оперативная память. Её свойства и функции___________________4
  2. Система памяти персонального компьютера___________________6
  3. КЭШ-память____________________ __________________________7
  4. Оперативное запоминающее устройство____________________ __10
  5. Физические виды ОЗУ___________________________ __________11
    1. Статическая память________________________ __________11
    2. Динамическая память________________________ ________12
    1. MRAM__________________________ ___________________13
    2. Память на основе графеновой наноленты________________16
    3. Оперативная память на нанотрубках___________________ _17

    Список использованной литературы____________________ _____20

    Часто для оперативной памяти используют обозначение RAM (Random Access Memory, то есть память с произвольным доступом). Это означает, что обращение к данным, хранящимся в оперативной памяти, не зависит от порядка их расположения в памяти. Когда говорят о памяти компьютера, обычно подразумевают оперативную память, прежде всего микросхемы памяти или модули, в которых хранятся активные программы и данные, используемые процессором.

    Операти́вная па́мять (англ. Random Access Memory, память с произвольным доступом; комп. жарг. Память) — энергозависимая часть системы компьютерной памяти, в которой, исходя из названия, временно хранятся данные и команды, необходимые процессору для выполнения им операции. Обязательным условием является адресуемость (каждое машинное слово имеет индивидуальный адрес) памяти. 1

    Обмен данными между процессором и оперативной памятью производится:

    • непосредственно,
    • либо через сверхбыструю память, 0-го уровня — регистры в АЛУ, либо при наличии кэша — через него.

    Содержащиеся в оперативной памяти данные доступны только тогда, когда на модули памяти подаётся напряжение, то есть, компьютер включен. Пропадание на модулях памяти питания, даже кратковременное, приводит к искажении либо полному пропаданию содержимого ОЗУ.

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

    Оперативное запоминающее устройство, ОЗУ — техническое устройство, реализующее функции оперативной памяти.

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

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

    • регистры центрального микропроцессора (используются в процессе выполнения инструкций исполнительными блоками микропроцессора);
    • кэш-память 1-го уровня (L1, компонент центрального микропроцессора, в который параллельно с выполнением текущей инструкции считываются следующие инструкции и данные для их исполнения);
    • кэш-память 2-го уровня (L2, память, выполняющая роль буфера между центральным микропроцессором и оперативным запоминающим устройством; реализуется в одном конструктиве с микропроцессором);
    • оперативное запоминающее устройство (ОЗУ, основная память, в которой размещаются исполняемые программы и необходимые для них данные);
    • постоянное запоминающее устройство (ПЗУ, хранящее базовую систему ввода-вывода и стартовые программы, запускаемые при включении компьютера);
    • энергонезависимое ОЗУ (устройство памяти, хранящее значение системного времени и данные о конфигурации компьютера);
    • видеопамять (устройство памяти видеоподсистемы персонального компьютера);
    • накопители информации (массовая долговременная память персонального компьютера, реализованная в виде устройств хранения данных на гибких и жестких магнитных дисках, магнитной ленте, оптических дисках, флэш-памяти и т.п.).
    • Оперативное запоминающее устройство
            1. Кэш-память

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

          Кэширование применяется ЦПУ, жёсткими дисками, браузерами, веб-серверами, службами DNS и WINS.

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

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

          При модификации элементов данных в кэше выполняется их обновление в основной памяти. Задержка во времени между модификацией данных в кэше и обновлением основной памяти управляется так называемой политикой записи.

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

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

          Самой быстрой памятью является кэш первого уровня — L1-cache. По сути, она является неотъемлемой частью процессора, поскольку расположена на одном с ним кристалле и входит в состав функциональных блоков. В современных процессорах обычно кэш L1 разделен на два кэша, кэш команд (инструкций) и кэш данных (Гарвардская архитектура). Большинство процессоров без L1 кэша не могут функционировать. L1 кэш работает на частоте процессора, и, в общем случае, обращение к нему может производиться каждый такт. Зачастую является возможным выполнять несколько операций чтения/записи одновременно. Латентность доступа обычно равна 2−4 тактам ядра. Объём обычно невелик — не более 384 Кбайт.

          Вторым по быстродействию является L2-cache — кэш второго уровня, обычно он расположен на кристалле, как и L1. В старых процессорах — набор микросхем на системной плате. Объём L2 кэша от 128 Кбайт до 1−12 Мбайт. В современных многоядерных процессорах кэш второго уровня, находясь на том же кристалле, является памятью раздельного пользования — при общем объёме кэша в nM Мбайт на каждое ядро приходится по nM/nC Мбайта, где nC количество ядер процессора. Обычно латентность L2 кэша, расположенного на кристалле ядра, составляет от 8 до 20 тактов ядра.

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

          Иногда существует и 4 уровень кэша, обыкновенно он расположен в отдельной микросхеме. Применение кэша 4 уровня оправдано только для высокопроизводительных серверов 2 .

          Оперативное запоминающее устройство (Random Access Memory, RAM) является основной памятью персонального компьютера, в которой размещаются исполняемые программы и необходимые для них данные.

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

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

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

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

          Достоинством статической памяти является ее быстродействие, а недостатками – высокое энергопотребление и низкая удельная плотность данных, поскольку одна триггерная ячейка состоит из нескольких транзисторов и, следовательно, занимает немало места на кристалле. К примеру, микросхема емкостью 4 Мбит состояла бы более чем из 24 млн транзисторов, потребляя соответствующую мощность.

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

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

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

          Для компенсации утечки заряда применяется регенерация (Memory Refresh), основанная на периодическом циклическом обращении к ячейкам памяти, так как каждое такое обращение восстанавливает прежний заряд конденсатора.

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

          1. Перспективы развития оперативной памяти
            1. MRAM

            Под памятью ( memory ) в данном случае подразумевается оперативная (основная) память компьютера. В однопрограммных операционных системах основная память разделяется на две части. Одна часть для операционной системы (резидентный монитор , ядро ), а вторая – для выполняющейся в текущий момент времени программы. В многопрограммных ОС "пользовательская" часть памяти – важнейший ресурс вычислительной системы – должна быть распределена для размещения нескольких процессов, в том числе процессов ОС. Эта задача распределения выполняется операционной системой динамически специальной подсистемой управления памятью ( memory management ). Эффективное управление памятью жизненно важно для многозадачных систем. Если в памяти будет находиться небольшое число процессов, то значительную часть времени процессы будут находиться в состоянии ожидания ввода-вывода и загрузка процессора будет низкой.

            В ранних ОС управление памятью сводилось просто к загрузке программы и ее данных из некоторого внешнего накопителя (перфоленты, магнитной ленты или магнитного диска) в ОЗУ . При этом память разделялась между программой и ОС. На рис. 6.3 показаны три варианта такой схемы. Первая модель раньше применялась на мэйнфреймах и мини-компьютерах. Вторая схема сейчас используется на некоторых карманных компьютерах и встроенных системах, третья модель была характерна для ранних персональных компьютеров с MS-DOS .

             Варианты распределения памяти

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

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

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

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

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

            Типы адресов

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

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

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

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

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

            6.3. Распределение памяти

            Существует ряд базовых вопросов управления памятью, которые в различных ОС решаются по -разному. Например, следует ли назначать каждому процессу одну непрерывную область физической памяти или можно выделять память участками? Должны ли сегменты программы, загруженные в память , находиться на одном месте в течение всего периода выполнения процесса или их можно время от времени сдвигать? Что делать, если сегменты программы не помещаются в имеющуюся память ? Как сократить затраты ресурсов системы на управление памятью ? Имеется и ряд других не менее интересных проблем управления памятью [5, 10, 13, 17].

            Ниже приводится классификация методов распределения памяти, в которой выделено два класса методов – с перемещением сегментов процессов между ОП и ВП (диском) и без перемещения, т.е. без привлечения внешней памяти (рис. 6.5). Данная классификация учитывает только основные признаки методов. Для каждого метода может быть использовано несколько различных алгоритмов его реализации.

            Классификация методов распределения памяти

            На рис. 6.6 показаны два примера фиксированного распределения. Одна возможность состоит в использовании разделов одинакового размера. В этом случае любой процесс, размер которого не превышает размера раздела, может быть загружен в любой доступный раздел. Если все разделы заняты и нет ни одного процесса в состоянии готовности или работы, ОС может выгрузить процесс из любого раздела и загрузить другой процесс, обеспечивая тем самым процессор работой.

            Варианты фиксированного распределения памяти

            При использовании разделов с одинаковым размером имеются две проблемы.

            1. Программа может быть слишком велика для размещения в разделе. В этом случае программист должен разрабатывать программу, использующую оверлеи, чтобы в любой момент времени требовался только один раздел памяти. Когда требуется модуль, отсутствующий в данный момент в ОП, пользовательская программа должна сама его загрузить в раздел памяти программы. Таким образом, в данном случае управление памятью во многом возлагается на программиста.
            2. Использование ОП крайне неэффективно. Любая программа, независимо от ее размера, занимает раздел целиком. При этом могут оставаться неиспользованные участки памяти большого размера. Этот феномен появления неиспользованной памяти называется внутренней фрагментацией (internal fragmentation).

            Бороться с этими трудностями (хотя и не устранить полностью) можно посредством использования разделов разных размеров. В этом случае программа размером до 8 Мбайт может обойтись без оверлеев, а разделы малого размера позволяют уменьшить внутреннюю фрагментацию при загрузке небольших программ.

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

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

            Недостаток заключается в том, что отдельные очереди для разделов могут привести к неоптимальному распределению памяти системы в целом. Например, если в некоторый момент времени нет ни одного процесса размером от 7 до 12 Мбайт, то раздел размером 12 Мбайт будет пустовать, в то время как он мог бы использоваться меньшими процессами. Поэтому более предпочтительным является использование одной очереди для всех процессов. В момент, когда требуется загрузить процесс в ОП, выбирается наименьший доступный раздел, способный вместить данный процесс.

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

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

            Для преодоления сложностей, связанных с фиксированным распределением, был разработан альтернативный подход, известный как динамическое распределение. В свое время этот подход был применен фирмой IBM в операционной системе для мэйнфреймов в OS/MVT ( мультипрограммирование с переменным числом задач – Multiprogramming With a Variable number of Tasks). Позже этот же подход к распределению памяти использован в ОС ЕС ЭВМ [12] .

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

            Вариант использования памяти

            Поскольку процесс 4 меньше процесса 2, появляется еще свободный участок памяти. После того как в некоторый момент времени все процессы оказались неактивными, но стал готовым к работе процесс 2, свободного места в памяти для него не находится, а ОС вынуждена выгрузить процесс 1, чтобы освободить необходимое место и разместить процесс 2 в ОП. Как показывает данный пример, этот метод хорошо начинает работу, но плохо продолжает. В конечном счете, он приводит к наличию множества мелких свободных участков памяти, в которых нет возможности разместить какой-либо новый процесс. Это явление называется внешней фрагментацией ( external fragmentation ), что отражает тот факт, что сильно фрагментированной становится память , внешняя по отношению ко всем разделам.

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

            Перечислим функции операционной системы по управлению памятью в этом случае.

            1. Перемещение всех занятых участков в сторону старших или младших адресов при каждом завершении процесса или для вновь создаваемого процесса в случае отсутствия раздела достаточного размера.
            2. Коррекция таблиц свободных и занятых областей.
            3. Изменение адресов команд и данных, к которым обращаются процессы при их перемещении в памяти, за счет использования относительной адресации .
            4. Аппаратная поддержка процесса динамического преобразования относительных адресов в абсолютные адреса основной памяти.
            5. Защита памяти, выделяемой процессу, от взаимного влияния других процессов.

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

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

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

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

            Применяемый обычно способ трансляции показан на рис. 6.8. Когда процесс переходит в состояние выполнения, в специальный регистр процесса, называемый базовым, загружается начальный адрес процесса в основной памяти. Кроме того, используется "граничный" (bounds) регистр , в котором содержится адрес последней ячейки программы. Эти значения заносятся в регистры при загрузке программы в основную память . При выполнении процесса относительные адреса в командах обрабатываются процессором в два этапа. Сначала к относительному адресу прибавляется значение базового регистра для получения абсолютного адреса. Затем полученный абсолютный адрес сравнивается со значением в граничном регистре. Если полученный абсолютный адрес принадлежит данному процессу, команда может быть выполнена. В противном случае генерируется соответствующее данной ошибке прерывание .

            Управление памятью в операционной системе

            Изучение

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

            Что такое основная память

            Основная память играет центральную роль в работе современного компьютера. Основная память — это большой массив слов или байтов размером от сотен тысяч до миллиардов. Основная память — это хранилище быстро доступной информации, совместно используемой ЦП и устройствами ввода-вывода. Основная память — это место, где хранятся программы и информация, когда процессор эффективно их использует. Также основная память связана с процессором, поэтому перемещение инструкций и информации в процессор и из процессора происходит очень быстро. Основная память также известна как RAM (оперативная память). Эта память является энергозависимой. ОЗУ теряет свои данные при отключении питания.

            Иерархия памяти

            Рисунок 1: Иерархия памяти

            Что такое управление памятью

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

            Почему требуется управление памятью

            • Выделять и освобождать память до и после выполнения процесса.
            • Для отслеживания используемого пространства памяти процессами.
            • Чтобы свести к минимуму проблемы фрагментации.
            • Для правильного использования основной памяти.
            • Сохранять целостность данных при выполнении процесса.

            Теперь мы обсуждаем концепцию логического адресного пространства и физического адресного пространства:

            Логическое и физическое адресное пространство

            Статическая и динамическая нагрузка

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

            • Статическая загрузка: — При статической загрузке загружает всю программу по фиксированному адресу. Это требует больше места в памяти.
            • Динамическая загрузка: — Для выполнения процесса вся программа и все данные процесса должны находиться в физической памяти. Итак, размер процесса ограничен размером физической памяти. Для правильного использования памяти используется динамическая загрузка. При динамической загрузке подпрограмма не загружается, пока не будет вызвана. Все процедуры хранятся на диске в перемещаемом формате загрузки. Одним из преимуществ динамической загрузки является то, что неиспользуемая процедура никогда не загружается. Эта загрузка полезна, когда для ее эффективной обработки требуется большой объем кода.

            Статические и динамические ссылки

            Для выполнения задачи связывания используется компоновщик. Компоновщик — это программа, которая берет один или несколько объектных файлов, созданных компилятором, и объединяет их в один исполняемый файл.

            Обмен

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

            Когда процесс выполняется, он должен находиться в памяти

            Непрерывное распределение памяти

            Основная память должна задействовать как операционную систему, так и различные клиентские процессы. Таким образом, выделение памяти становится важной задачей операционной системы. Память обычно делится на два раздела: один для резидентной операционной системы и один для пользовательских процессов. Обычно нам нужно, чтобы несколько пользовательских процессов находились в памяти одновременно. Следовательно, нам нужно подумать о том, как выделить доступную память для процессов, которые находятся во входной очереди, ожидая ввода в память. При выделении смежной памяти каждый процесс содержится в одном непрерывном сегменте памяти.

            Основная память должна задействовать как операционную систему

            Выделение памяти

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

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

            First fit:-

            При первой подгонке первое доступное свободное отверстие удовлетворяет требованиям назначенного процесса.

            Здесь, на этой диаграмме, блок памяти размером 40 КБ

            Здесь, на этой диаграмме, блок памяти размером 40 КБ является первым доступным свободным местом, в котором может храниться процесс A (размер 25 КБ), поскольку первые два блока не имели достаточного пространства памяти.

            Best fit:-

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

            Здесь, в этом примере, сначала мы просматриваем полный список и обнаруживаем, что последнее отверстие 25 КБ является наиболее подходящим отверстием для процесса A (размер 25 КБ).

            В этом методе использование памяти максимально по сравнению с другими методами распределения памяти.

            Worst fit:- В худшем случае выделите для обработки наибольшее доступное отверстие. Этот метод дает самое большое оставшееся отверстие.

            Здесь, в этом примере, процесс A (размер 25 КБ) выделяется самому большому доступному блоку памяти, который составляет 60 КБ. Неэффективное использование памяти является серьезной проблемой в худшем случае.

            Фрагментация

            Фрагментация определяется как когда процесс загружается и удаляется после выполнения из памяти, он создает небольшую свободную дыру. Эти дыры не могут быть назначены новым процессам, потому что дыры не объединяются или не удовлетворяют требованиям процесса к памяти. Чтобы достичь определенной степени мультипрограммирования, мы должны уменьшить потери памяти или проблему фрагментации. В операционной системе два типа фрагментации:

            Внутренняя фрагментация

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

            Пример: предположим, что для распределения памяти используется фиксированное разделение, а размер блока в памяти различается: 3 МБ, 6 МБ и 7 МБ. Теперь приходит новый процесс p4 размером 2 МБ и требует блока памяти. Он получает блок памяти размером 3 МБ, но 1 МБ блочной памяти является пустой тратой и не может быть выделен другим процессам. Это называется внутренней фрагментацией.

            Внешняя фрагментация

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

            Пример: Предположим (рассмотрим пример выше) три процесса p1, p2, p3 имеют размер 2 МБ, 4 МБ и 7 МБ соответственно. Теперь им выделяются блоки памяти размером 3 МБ, 6 МБ и 7 МБ соответственно. После выделения для процесса p1 и p2 осталось 1 МБ и 2 МБ. Предположим, что приходит новый процесс p4 и требует 3-мегабайтный блок памяти, который доступен, но мы не можем его назначить, потому что свободное пространство памяти не является непрерывным. Это называется внешней фрагментацией.

            И первая, и самая подходящая системы для распределения памяти, подверженной внешней фрагментации. Для преодоления проблемы внешней фрагментации используется уплотнение. В технике уплотнения все свободное пространство памяти объединяется и образует один большой блок. Таким образом, это пространство может быть эффективно использовано другими процессами.

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

            Paging:

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

            • Логический адрес или виртуальный адрес (представлен в битах): адрес, генерируемый ЦП.
            • Логическое адресное пространство или виртуальное адресное пространство (представленное словами или байтами): набор всех логических адресов, сгенерированных программой.
            • Физический адрес (представлен в битах): адрес, фактически доступный в блоке памяти.
            • Физическое адресное пространство (выраженное словами или байтами): набор всех физических адресов, соответствующих логическим адресам.
            • Если логический адрес = 31 бит, то логическое адресное пространство = 2 31слово = 2 G слов (1 G = 2 30 )
            • Если логическое адресное пространство = 128 M слов = 2 7* 2 20 слов, то логический адрес = log 2 2 27 = 27 бит
            • Если физический адрес = 22 бита, то физическое адресное пространство = 2 22слова = 4 M слов (1 M = 2 20 )
            • Если физическое адресное пространство = 16 M слов = 2 4* 2 20 слов, то физический адрес = log 2 2 24 = 24 бита.

            Преобразование виртуального адреса в физический выполняется блоком управления памятью (MMU), который является аппаратным устройством, и это преобразование известно как метод подкачки.

            • Физическое адресное пространство концептуально разделено на несколько блоков фиксированного размера, называемых кадрами.
            • Логическое адресное пространство также разделено на блоки фиксированного размера, называемые страницами.
            • Размер страницы = Размер кадра
            • Физический адрес = 12 бит, тогда физическое адресное пространство = 4 К слов
            • Логический адрес = 13 бит, затем логическое адресное пространство = 8 К слов
            • Размер страницы = размер кадра = 1 тыс. Слов (предположение)

            Адрес, генерируемый ЦП, делится на

            Адрес, генерируемый ЦП, делится на

            • Номер страницы (p):количество битов, необходимых для представления страниц в логическом адресном пространстве или номер страницы.
            • Смещение страницы (d):количество битов, необходимых для представления определенного слова на странице или размер страницы логического адресного пространства, или номер слова страницы или смещение страницы.

            Физический адрес делится на

            • Номер кадра (f):количество битов, необходимых для представления кадра физического адресного пространства или кадра номера кадра.
            • Смещение кадра (d):количество битов, необходимых для представления конкретного слова в кадре, или размер кадра в физическом адресном пространстве, или номер слова кадра, или смещение кадра.

            Аппаратная реализация таблицы страниц может быть выполнена с использованием выделенных регистров. Но использование регистра для таблицы страниц является удовлетворительным только в том случае, если таблица страниц мала. Если таблица страниц содержит большое количество записей, мы можем использовать TLB (буфер просмотра трансляции), специальный небольшой аппаратный кеш для быстрого просмотра.

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

            Время доступа к основной памяти

            Время доступа к основной памяти = м

            Если таблица страниц хранится в основной памяти,

            Эффективное время доступа = m (для таблицы страниц) + m (для конкретной страницы в таблице страниц)

            Читайте также: