Управление памятью. Настройка адресов и защита. Подкачка. Управление памятью с помощью битовых массивов. Управление памятью с помощью связных списков. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Управление памятью. Настройка адресов и защита. Подкачка. Управление памятью с помощью битовых массивов. Управление памятью с помощью связных списков.



Настройка адресов и защита.

Многозадачность вносит две существенные проблемы, требующие решения, — это настройка адресов для перемещения программы в памяти и защита. Разные задачи будут запущены по раз­личным адресам. Когда программа компонуется (то есть в едином адресном про­странстве объединяются основной модуль, написанные пользователем процедуры и библиотечные процедуры), компоновщик должен знать, с какого адреса будет начинаться программа в памяти.Настройка адресов во время загрузки не решает проблемы защиты. Вредонос­ные программы всегда могут создать новую команду и перескочить на нее. По­скольку при такой системе программы предпочитают использовать абсолютную адресацию памяти, а не адреса относительно какого-либо регистра, не существует способа, который позволил бы запретить программе построение команды, обра­щающейся к любому слову в памяти для его чтения или записи.Альтернативное решение сразу обеих проблем (защиты и перераспределения) заключается в оснащении машины двумя специальными аппаратными регистра­ми, называемыми базовым и предельным регистрами. При планировании процесса в базовый регистр загружается адрес начала раздела памяти, а в предельный регистр помещается длина раздела. К каждому автоматически формируемому ад­ресу перед его передачей в память прибавляется содержимое базового регистра. Неудобство этой схемы заключается в том, что требуется выполнять операции сложения и сравнения при каждом обращении к памяти. Операция сравнения мо­жет быть выполнена быстро, но сложение — это медленная операция, что обуслов­лено временем распространения сигнала переноса, за исключением тех случаев, когда употребляется специальная микросхема сложения.

Подкачка.

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

Но совершенно другая ситуация сложилась с системами разделения време­ни или персональными компьютерами, ориентированными на работу с графикой. Оперативной памяти иногда оказывается недостаточно для того, чтобы вместить все текущие активные процессы, и тогда избыток процессов приходится хранить на диске, а для обработки динамически переносить их в память.Существуют два основных подхода к управлению памятью. Самая простая стратегия, называемая свопингом (swapping) или обычной подкачкой, заключается в том, что каждый процесс полностью переносится в память, работает некоторое время и затем це­ликом возвращается на диск. Другая стратегия, носящая название виртуальной па­мяти, позволяет программам работать даже тогда, когда они только частично на­ходятся в оперативной памяти.Работа системы свопинга: На начальной стадии в памяти находится только процесс А. Затем создаются или загружаются с диска процессы В и С. процесс Л выгружается на диск. Затем появляет­ся процесс D, а процесс В завершается. Наконец, процесс А снова возвращается в память. Так как теперь процесс А имеет другое размещение в памяти, его адреса должны быть перенастроены или программно во время загрузки в память, или (более заманчивый вариант) аппаратно во время выполнения программы.Основная разница между фиксированными разделами и непосто­янными разделами заключается в том, что во втором случае количе­ство, размещение и размер разделов изменяются динамически по мере поступ­ления и завершения процессов, тогда как в первом варианте они фиксированы. Гибкость схемы, в которой нет ограничений, связанных с определенным коли­чеством разделов, и каждый из разделов может быть очень большим или совсем маленьким, улучшает использование памяти, но, кроме того, усложняет опера­ции размещения процессов и освобождения памяти, а также отслеживание проис­ходящих изменений. Когда в результате подкачки процессов с диска в памяти появляется множе­ство неиспользованных фрагментов, их можно объединить в один большой учас­ток, передвинув все процессы в сторону младших адресов настолько, насколько это возможно. Такая операция называется уплотнением или сжатием памяти.Если процесс имеет фиксированный никогда не изменяющийся размер, размещение происходит просто: операционная система предоставляет точно необходимое ко­личество памяти, ни больше, ни меньше, чем нужно.

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

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

Управление памятью с помощью битовых массивов.

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

Размер единичного блока представляет собой важный вопрос стадии разработ­ки системы. Чем меньше единичный блок, тем больше потребуется битовый мас­сив. Однако даже при маленьком единичном блоке, равном четырем байтам, для 32 битов памяти потребуется 1 бит в карте. Тогда память размером в 32*n будет ис­пользовать n битов в карте, таким образом, битовая карта займет всего лишь 1/33 часть памяти. Если выбираются большие единичные блоки, битовая карта стано­вится меньше, но при этом может теряться существенная часть памяти в послед­нем блоке каждого процесса (если размер процесса не кратен размеру единичного блока).

Управление памятью с помощью связных списков.Другой способ отслеживания состояния памяти предоставляет поддержка связных списков занятых и свободных фрагментов памяти, где сегментом является или процесс, или участок между двумя процессами. Каждая запись в спис­ке указывает, является ли область памяти свободной (Н, от hole — дыра) или за­нятой процессом (Р, process); адрес, с которого начинается эта область; ее длину; содержит указатель на следующую запись.

 



Поделиться:


Последнее изменение этой страницы: 2016-09-19; просмотров: 680; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.235.139.122 (0.022 с.)