русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Текст лекции


Дата добавления: 2013-12-23; просмотров: 567; Нарушение авторских прав


Ключевые вопросы

Лекция № 8. Управление оперативной памятью. Часть 2

Продолжительность:2 часа (90 мин.)

 

· Алгоритмы распределения.

· Распределение памяти динамическими разделами

· Перемещаемые разделы

 

 

17.2.1 Алгоритмы распределения — до 15 мин.

Следует ли назначать каждому процессу одну непрерывную область физической памяти или можно выделять память «кусками»? Должны ли сегменты програм­мы, загруженные в намять, находиться на одном месте d течение всего периода выполнения процесса или можно ее время от времени сдвигать? Что делать, если сегменты программы не помещаются в имеющуюся память? Разные ОС по-разному отвечают на эти и другие базовые вопросы управления памятью. Далее будут рассмотрены наиболее общие подходы к распределению памяти, которые были характерны для разных периодов развития операционных систем. Некото­рые из них сохранили актуальность и широко используются в современных ОС, другие же представляют в основном только познавательный интерес, хотя их и сегодня можно встретить в специализированных системах.

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

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

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



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

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

 

17.2.2 Распределение памяти динамическими разделами — до 30 мин.

В этом случае память машины не делится заранее на разделы. Сначала вся па­мять, отводимая для приложений, свободна. Каждому вновь поступающему на выполнение приложению на этапе создания процесса выделяется вся необходи­мая ему память (если достаточный объем памяти отсутствует, то приложение не принимается на выполнение и процесс для него не создается). После завершения процесса память освобождается, и на это место может быть загружен другой про­цесс. Таким образом, в произвольный момент времени оперативная память пред­ставляет собой случайную последовательность занятых и свободных участков (разделов) произвольного размера. Состояние памяти в раз­личные моменты времени при использовании динамического распределения. Так, в момент Го в памяти находится только ОС, а к моменту tx память разделена между 5 процессами, причем процесс П4, завершаясь, покидает память. На осво­бодившееся от процесса П4 место загружается процесс П6, поступивший в мо­мент t3.

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

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

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

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

□ После завершения процесса корректировка таблиц свободных и занятых об­ластей.

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

Распределение памяти динамическими разделами лежит в основе подсистем управ­ления памятью многих мультипрограммных операционных системах 60-70-х го­дов, в частности такой популярной операционной системы, как OS/360.

17.2.3 Перемещаемые разделы — до 30 мин.

Одним из методов борьбы с фрагментацией является перемещение всех занятых участков в сторону старших или младших адресов, так, чтобы вся свободная память образовала единую свободную область. В дополнение к функциям, кото­рые выполняет ОС при распределении памяти динамическими разделами, в данном случае она должна еще время от времени копировать содержимое разделов из одно­го места памяти в другое, корректируя таблицы свободных и занятых областей. Эта процедура называется сжатием. Сжатие может выполняться либо при каждом за­вершении процесса, либо только тогда, когда для вновь создаваемого процесса нет свободного раздела достаточного размера. В первом случае требуется меньше вы­числительной работы при корректировке таблиц свободных и занятых областей, а во втором — реже выполняется процедура сжатия. Так как программы перемещаются по оперативной памяти в ходе своего выполне­ния, то в данном случае невозможно выполнить настройку адресов с помощью пе­ремещающего загрузчика. Здесь более подходящим оказывается динамическое пре­образование адресов. Хотя процедура сжатия и приводит к более эффективному использованию памя­ти, она может потребовать значительного времени, что часто перевешивает пре­имущества данного метода. Концепция сжатия применяется и при использовании других методов распреде­ления памяти, когда отдельному процессу выделяется не одна сплошная область памяти, а несколько несмежных участков памяти произвольного размера (сег­ментов). Такой подход был использован в ранних версиях OS/2, в которых па­мять распределялась сегментами, а возникавшая при этом фрагментация устра­нялась путем периодического перемещения сегментов.



<== предыдущая лекция | следующая лекция ==>
Текст лекции | Текст лекции


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.