Память как основной ресурс ВС



УПРАВЛЕНИЕ ПАМЯТЬЮ

Память как основной ресурс ВС

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

Функции управления памятью являются главными функциями в группе функций управления ресурсами. Они служат основой для предоставления всех остальных услуг ОС. Непродуманный, неэффективный или ненадежный механизм управления памятью делает всю систему ненадежной, затрудняет программирование в ней (вспомните MS-DOS!).

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

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

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

Различные системы программирования предоставляют в распоряжение программиста средства управления памятью разных уровней. Некоторые системы программирования дают возможность лишь косвенно влиять на распределение памяти при выполнении программы (системы, в которых существует лишь статическое распределение памяти, например, FORTRAN). В других системах программирования в прикладных программах есть возможность прямого управления памятью через обращение непосредственно к функциям операционной системы (например, в программах, написанных на языке ассемблера или C). Однако при этом возникают трудности организации взаимодействия двух механизмов управления памятью (системного и пользовательского). Кроме того, предоставление в распоряжение программиста средств прямого управления памятью (запросов на ее выделение и освобождение) является источником возможных ошибок (появления висячих ссылок и “мусора”), поэтому большинство систем программирования ограничивает возможности программистов при работе с памятью (Java) или предоставляет возможность использования “компромиссного” варианта управления, более простого и менее трудоемкого, когда часть функций по отслеживанию памяти передается на уровень системы программирования (Pascal).

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

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

¨ начальное распределение памяти (распределение памяти в момент инициализации программы, в начале ее выполнения);

¨ распределение памяти во время выполнения программы (дополнительное выделение памяти и освобождение использованной памяти);

¨ защита памяти, выделенной программе, от “постороннего вмешательства” со стороны других программ и от возможных ошибок при выполнении самой программы;

¨ освобождение памяти после завершения программы.

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

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

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

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


Дата добавления: 2016-01-05; просмотров: 18; Мы поможем в написании вашей работы!

Поделиться с друзьями:






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