Память как основной ресурс ВС
УПРАВЛЕНИЕ ПАМЯТЬЮ
Память как основной ресурс ВС
Память - это основной ресурс ВС. Для непосредственного выполнения программ или обращения к данным необходимо, чтобы они размещались в оперативной памяти компьютера.
Функции управления памятью являются главными функциями в группе функций управления ресурсами. Они служат основой для предоставления всех остальных услуг ОС. Непродуманный, неэффективный или ненадежный механизм управления памятью делает всю систему ненадежной, затрудняет программирование в ней (вспомните MS-DOS!).
В оперативной памяти размещаются коды выполняемых программ (системных и прикладных), структуры данных, определенные в программах, служебная информация, формируемая при выполнении программ (управляющая информация, точки входа в программы и точки возврата для выхода из вызванных программ, передаваемые параметры и т.п.), промежуточные результаты вычислений, выполняемых программами, буферы ввода/вывода, управляющие блоки и таблицы системы.
Набор элементов, требующих для своего размещения выделения оперативной памяти, зависит от уровня программирования: прикладная программа работает только со своими структурами данных, системные программы размещают в памяти свои данные и могут распределять память по запросам прикладных программ (эти механизмы могут быть реализованы как средствами операционной системы, так и системы программирования, которая образует “прослойку” между прикладной программой и реальными устройствами).
|
|
Таким образом, при работе ВС взаимодействуют различные уровни управления памятью: механизмы операционной системы, средства управления памятью систем программирования и алгоритмы, реализованные в прикладных программах, следовательно, существует необходимость реализации управления памятью на различных уровнях от организации памяти всей системы до организации памяти в рамках прикладной программы и поддержания их согласованности и взаимодействия. При этом реализуемые алгоритмы управления памятью и используемые для этого структуры данных могут быть сходными для всех уровней.
Различные системы программирования предоставляют в распоряжение программиста средства управления памятью разных уровней. Некоторые системы программирования дают возможность лишь косвенно влиять на распределение памяти при выполнении программы (системы, в которых существует лишь статическое распределение памяти, например, FORTRAN). В других системах программирования в прикладных программах есть возможность прямого управления памятью через обращение непосредственно к функциям операционной системы (например, в программах, написанных на языке ассемблера или C). Однако при этом возникают трудности организации взаимодействия двух механизмов управления памятью (системного и пользовательского). Кроме того, предоставление в распоряжение программиста средств прямого управления памятью (запросов на ее выделение и освобождение) является источником возможных ошибок (появления висячих ссылок и “мусора”), поэтому большинство систем программирования ограничивает возможности программистов при работе с памятью (Java) или предоставляет возможность использования “компромиссного” варианта управления, более простого и менее трудоемкого, когда часть функций по отслеживанию памяти передается на уровень системы программирования (Pascal).
|
|
Память является повторно используемым ресурсом, этот ресурс не является разделяемым (общими могут быть программы и данные, размещенные в этой памяти, если к ним могут обращаться несколько параллельно выполняющихся программ, но сама память, ее блоки могут использоваться только последовательно).
При реализации управления памятью на любом уровне возникает три основных задачи:
¨ начальное распределение памяти (распределение памяти в момент инициализации программы, в начале ее выполнения);
|
|
¨ распределение памяти во время выполнения программы (дополнительное выделение памяти и освобождение использованной памяти);
¨ защита памяти, выделенной программе, от “постороннего вмешательства” со стороны других программ и от возможных ошибок при выполнении самой программы;
¨ освобождение памяти после завершения программы.
Решение этих задач влечет необходимость реализации системы утилизации памяти (учета свободной и освобожденной памяти для возможного ее повторного использования), а также, возможно, специальных механизмов сбора “мусора” и уплотнения памяти. Кроме того, при инициализации программы она должна настраиваться на выделенную ей память.
Оперативная память - это память к которой может быть организован прямой доступ центрального процессора за командами выполняемой программы или данными. Оперативная память в ВС является критическим, ограничивающим ресурсом ВС. Программы и данные, которые в данный момент не нужны, можно временно хранить во внешней памяти, а в оперативную память помещать только при активизации программы. Стремление увеличить емкость доступной памяти, повысить ее быстродействие и снизить затраты привело к идее создания иерархии запоминающих устройств в ВС, организация которой позволила бы решить эти взаимоисключающие задачи.
Организация управления основной памятью (или первичной памятью) ВС - один из самых важных факторов, определяющих принципы построения операционных систем, особенности выполнения основных их функций.
В данной главе рассматриваются основные способы организации памяти, алгоритмы и структуры данных, которые используются при решении задач по управлению этим ресурсом.
Дата добавления: 2016-01-05; просмотров: 18; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!