Принципы управления и распределения оперативной памяти




Содержание

 

Введение

1. Аналитический раздел

1.1 Определение

1.2 Принципы управления и распределения оперативной памяти

2. Разработка алгоритма управления оперативной памятью

Вывод

Список используемой литературы


Введение

 

В настоящее время существуют множество операционных программ, которые в достаточной степени эффективности и надежности, управляют оперативной памятью. К таким системам можно отнести Windows, Unix и т.д. Прогресс электроники привел к значительному улучшению элементов памяти. А именно таких параметров, модулей памяти, как объем, надежность, оперативность и компактность. Память применяется везде, где есть элемент, обрабатывающий информацию (процессор, контроллер). В следствии этого, появились новые, более мощные системы управления способные использовать ресурсы оперативной памяти. Это привело к увеличению скорости обработки информации и к увеличению мощности программных средств и следовательно самой мощи, всего компьютера в целом. Например, подсистема управления оперативной памятью MS-DOS базировалась на использовании блоков управления памятью MCB. Такое "управление" памятью полностью основано на джентльменском соглашении между программами о сохранении целостности операционной системы, так как любая программа может выполнить запись данных по любому адресу. Программа может легко разрушить системные области MS-DOS или векторную таблицу прерываний. На сегодняшний день существует приложение Windows, которое выполняется в защищенном режиме, поэтому оно не может адресоваться к любым областям памяти. Это сильно повышает надежность операционной системы.

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


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

Определение

 

Оперативная (или рабочая) память компьютера - ОЗУ (Оперативное Запоминающее Устройство) - собрана на полупроводниковых кристаллах (чипах - chip) и хранит информацию, только пока компьютер включен. При выключении питания ее содержимое теряется. Иногда, эту память называют еще памятью с произвольным доступом.(Random Access Memory – RAM).

Всю память с произвольным доступом (RAM) можно разделить на два типа:

1. DRAM (динамическая RAM)

2. SRAM (статическая RAM).

Память типа DRAM

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

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

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

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

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

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

К первому поколению высокоскоростных DRAM главным образом относят EDO DRAM, SDRAM и RDRAM, а к следующему - DDR SDRAM, Direct RDRAM, SLDRAM и т. д.

SDRAM

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

DDR SDRAM (SDRAM II)

DDR SDRAM (Double Data Rate SDRAM) является синхронной памятью, реализующей удвоенную скорость передачи данных по сравнению с обычной SDRAM.

DDR SDRAM не имеет полной совместимости с SDRAM, хотя использует метод управления, как у SDRAM, и стандартный 168-контактный разъем DIMM. DDR SDRAM достигает удвоенной пропускной способности за счет работы на обеих границах тактового сигнала (на подъеме и спаде), а SDRAM работает только на одной.

Direct Rambus DRAM - это высокоскоростная динамическая память с произвольным доступом, разработанная Rambus, Inc. Она обеспечивает высокую пропускную способность по сравнению с большинством других DRAM. Direct Rambus DRAMs представляет интегрированную на системном уровне технологию.

Память типа SRAM

Существует тип памяти, совершенно отличный от других, - статическая оперативная память (Static RAM – SRAM). Она названа так потому, что, в отличии от динамической оперативной памяти, для сохранения ее содержимого не требуется периодической регенерации. Но это не единственное ее преимущество. SRAM имеет более высокое быстродействие чем динамическая оперативная память, и может работать на той же частоте, что и современные процессоры.

Время доступа SRAM не более 2 нс, это означает, что такая память может работать синхронно с процессорами на частоте 500 МГц или выше. Однако для хранения каждого бита в конструкции SRAM используется кластер из 6 транзисторов. Использование транзисторов без каких либо конденсаторов означает, что нет необходимости в регенерации. Пока подается питание, SRAM будет помнить то, что сохранено.

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

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

- обычная или базовая память;

- дополнительная память;

- расширенная память;

- верхняя память.

Базовая память

Операционная система MS DOS, а, следовательно, и уподобляющее большинство работающих под ее управлением программ могут использовать лишь первый мегабайт памяти, который часто называют базовой памятью. Эта память в рамках ДОС поделена на две неравные части: первые 640 К (1К = 1024 байт) отводятся для программ пользователя и отдельных частей самой ДОС и называются стандартной памятью (conventional memory). Для использования стандартной памяти не нужны никакие дополнительные драйверы, поскольку операционная система MS-DOS изначально создана для работы в адресах 0-640 Кбайт. Оставшиеся 384 К зарезерервированы для памяти видеоадаптеров и ПЗУ и называются верхним блоком памяти (UMB - Uper Memory Block). В то же время в компьютерах IBM AT имеется возможность адресовать память объемом до 16 Mb, если в них используется микропроцессор 80286, или до 4 Gb, если используется микропроцессор 80386 или 80486. Объем непосредственно адресуемой оперативной памяти определяется разрядностью адресной шины микропроцессора. Микропроцессоры 8088 и 8086 имеют 20-разрядную шину, поэтому адресуют 2 в степени 20 = 1048576 байт = 1 Мb. Микропроцессор 80286 оснащен 24-разрядной шиной и адресует 2 в степени 24 = 16 777 216 байт = 16 Mb. 32-разрядная шина 80386 и 80486 микропроцессоров адресует 2 в степени 32 = 4294967296 байт = 4Gb.

Дополнительная память

Память ПК, остающаяся за вычетом первого мегабайта (т.е. за вычетом базовой памяти), называется дополнительной (Extended Memory). Дополнительная память является естественным дополнением к обычной (базовой) памяти компьютера, на что и указывает само её название. Однако единственный (но, к сожалению, определяющий) факт, в котором нет никакой естественности, заключается в том, что подавляющему большинству программ MS DOS она не доступна! Чтобы использовать дополнительную память, процессор компьютера должен работать в специальном режиме, называемом защищённым. А операционнная система MS DOS не поддерживает этого режима процессора. Таким образом, владелец современного компьютера IBM AT, оснащенного памятью, скажем, в 8 Mb, часто либо вообще не использует дополнительные 7 Mb, либо размещает в них электронный диск или буферную кэш-память для дисков. В версии Турбо Паскаля 7.0 (точнее, в пакете Borland Pascal with Objects 7.0) введена поддержка защищенного режима микропроцессоров 80286/ 80386/80486, в котором используется дополнительная память. Однако эта поддержка не касается стандартных средств работы с дополнительной памятью. Тем не менее отдельные программы MS DOS применяют технологию "расширения MS DOS", которая позволяет им воспользоваться преимуществами дополнительной памяти. Примером таких программ служат Lotus 1-2-3 (Lotus Development Corporation) и Paradox 386 (Borland International). Компьютеры же на базе микропроцессоров Intel 8086 и 8088 не могут иметь дополнительную память, т.к. не имеют защищённого режима. Эти микропроцессоры функционируют исключительно в реальном режиме и поэтому не годятся для работы с программами, использующими дополнительную память. Дополнительную память иногда называют XMS-памятью; XMS - сокращение от eXtended Memory Specification (спецификация дополнительной памяти). Не путайте эту аббревиатуру с другой - EMS (Expanded Memory

Расширенная память

Ранние IBM-совместимые ПК типа IBM PC/XT оснащались микропроцессорами 8088 или 8086, способными работать с оперативной памятью емкостью не более 1 Мбайт. Несмотря на значительные размеры этой памяти, в ряде прикладных программ ее оказывается недостаточио. Такие программы вынуждены интенсивно использовать диск для размезщения больших объемов данных, что сильно снижает их производительность. Поэтому почти одновременно с появлением компьютеров IBM PC/XT начались поиски путей повышения производительности крупных прикладных пропоим (табличных процессоров, систем управления базами данных и т.п.) за счет использования оперативной памяти большего чем 1 Мбайт размера. Эти поиски привели к выработке соглашения между ведущими фирмами-разработчиками программно-аппаратных средств, которое известно как EMS LIM (от Expanded Memory Specification - спецификация расширенной памяти, удовлетворяющая стандарту фирм Lotus-Intel-Microsoft). В соответствии с этим стандартом ПК оснащаются специальными EMS-платами, содержащими собственно расширенную память микросхемы, обеспечивающие доступ к ней. Память, организованная по принципам спецификации EMS, называется расширенной памятью. На компьютерах с микропроцессорами 80386 и 80486 расширенная память может эмулироваться программно. Начиная с версии 4.0 операционная система MS DOS поставляется с драйверами расширенной памяти XMAEM.SYS и XMA2EMS.SYS. В DOS 5.0 их функции выполняет драйвер EMM386.SYS. Последний на ПК с микропроцессорами 80386/80486 обеспечивает эмуляцию расширенной памяти, т.е. программно реализует функции EMS-платы и преобразует дополнительную память в расширенную. Кроме того, драйвер EMM386.SYS создает блоки верхней памяти (UMB).

Для функционирования драйвера EMM386.SYS требуется обеспечить поддержку расширенной памяти, которую осуществляет драйвер HIMEM.SYS. При этом драйвер HIMEM.SYS должен быть загружен до драйвера EMM386.SYS, поэтому строка DEVICE=HIMEM.SYS в файле CONFIG.SYS должна предшествовать строке DEVICE=EMM386.SYS. Таким образом, дополнительная память - это просто добавочная память. Расширенная память - это специальная добавочная память, удовлетворяющая требованиям спецификации EMS. Следует отметить, что термины "дополнительная" и "расширенная" память применяются только в операционной системе DOS. В других операционных системах, например, в OS/2, Unix или Windows NT можно использовать всю память компьютера. В этих операционных системах память называется просто "памятью".

Верхняя память

Помимо базовой, расширенной и дополнительной памяти, в ПК существует еще так называемая верхняя память (не путайте с верхним блоком памяти!). Как известно, 20-разрядный адрес при работе ПК в реальном режиме образуется путем сложения двух 16-разрядных слов - сегмента и смещения. Перед сложением сегмент смещается на 4 разряда влево (умножается на 16), что и обеспечивает 20-разрядный результат сложения - адрес конкретного байта. Формальное сложение сегмента и смещения может привести к переполнению 20-разрядной адресной сетки. Действительно, если, например, сегмент S=$FFFF, а смещение O=$0010, то сложение $FFFF*16 + $0010 дает значение $100000, для представления которого требуется уже 21 разряд. Поскольку в ПК применяется 20-разрядная шина, переполнение результата не может использоваться, и "лишний" 21-й разряд просто теряется, т.е, адресация с сегментом S= $FFFF и смещением O> $000F эквивалентна адресации с сегментом S= $0000 и смещением O= O - $0010. В адресной шине IBM AT имеется 21-й разряд, но его использование обычно запрещено. Однако в таких компьютерах предусмотрена возможность программного управления 21-м разрядом. Если этот разряд разблокировать, программе, работающей в реальном режиме процессора, станут доступны еще почти 64 К (без 16 байт). Эта часть памяти и называется верхней (High Memory Area). MS DOS версии 5.0 и некоторые совместимые с ней операционные системы других фирм (например, DR-DOS фирмы Digital Research версии 4.0 и выше) могут размещать в верхней памяти свои резидентные части, тем самым освобождая драгоценную стандартную память для программ пользователя. Таким образом, существуют 4 вида оперативной памяти: • базовая - с адресами от $00000 до $FFFFF; • верхняя - с адресами от $100000 до $10FFEF; • дополнипельная - с адресами от $100000 до $FFFFFFFF; • расширенная - организуется специальными аппаратными средствами на компьютерах с микропроцессорами 8088, 8086, 80286 и может программно эмулироваться на процессорах 80386 и 80486.

 

Принципы управления и распределения оперативной памяти

 

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

Используемые в операционных системах алгоритмы распределения ОП многообразны. Причинами этого многообразия являются:

· многоуровневая структура памяти (регистровая, оперативная, внешняя)

· стремление обеспечить пользователя характеристиками, отличными от реальных (виртуальная память)

· необходимость согласования распределения ОП с распределением центрального процессора

Самый простой случай управления памятью - ситуация, когда диспетчер памяти отсутствует, и в системе может быть загружена только одна программа. Именно в таком режиме работают CP/M и RT-11 SJ (Single-Job, однозадачная).

В этих системах программы загружаются с фиксированного адреса PROG_START. В CP/M это 0x100; в RT-11 - 01000. В адресах от 0 до начала программы находятся вектора прерываний, а в RT-11 - также и стек программы. В этом случае управление памятью со стороны системы состоит в том, что загрузчик проверяет, поместится ли загружаемый модуль в пространство от PROG_START до SYS_START. Если объем памяти, который использует программа, не будет меняться во время ее исполнения, то на этом все управление и заканчивается.

Однако программа может использовать динамическое управление памятью, например функцию malloc(). В этом случае уже код malloc() должен следить за тем, чтобы не залезть в системные адреса. Как правило, динамическая память начинает размещаться с адреса PROG_END = PROG_START + PROG_SIZE. PROG_SIZE в данном случае обозначает полный размер программы, то есть размер ее кода, статических данных и области, выделенной под стек.

Функция malloc() поддерживает некоторую структуру данных, следящую за тем, какие блоки памяти из уже выделенных были освобождены. При каждом новом запросе она сначала ищет блок подходящего размера в своей структуре данных и, только когда этот поиск завершится неудачей, откусывает новый блок памяти у системы. Для этого используется переменная, которая в библиотеке языка C называется brklevel. Изначально эта переменная равна PROG_END, ее значение увеличивается при выделении новых блоков, но в некоторых случаях может и уменьшаться. Это происходит, когда программа освобождает блок, который заканчивается на текущем значении brklevel.

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



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2020-04-01 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: