36
всех допустимых значений виртуального адреса для некоторой программы
определяет ее
виртуальное адресное пространство или
виртуальную память.
Виртуальное адресное пространство зависит от архитектуры процессора и от
системы программирования и практически не зависит от объема реальной
физической памяти компьютера.
Система программирования осуществляет трансляцию и компоновку
программы, используя библиотечные модули. В
результате работы системы
программирования полученные виртуальные адреса могут иметь как
двоичную, так и
символьно-двоичную формы. В случае, когда имеется полная
тождественность виртуального адресного пространства физической памяти,
речь идет о генерации
абсолютной двоичной программы (т.е. программы
будет исполняться только тогда, когда виртуальные адреса будут
соответствовать физическим). Часть программных модулей любой ОС
обязательно должна быть абсолютными двоичными программами, которые
размещаются по фиксированным адресам физической памяти (например,
программы загрузки операционной системы).
Термин
виртуальная память фактически относится к системам,
которые сохраняют виртуальные адреса во время исполнения. Так как второе
отображение осуществляется во время исполнения задачи, то адреса
физических ячеек могут изменяться. В зависимости от соотношения объемов
виртуального адресного пространства
Vv и физической памяти
Vp
используются разные эффективных методы распределения памяти.
Память задаче может выделяться одним сплошным участком (
методы
неразрывного распределения памяти) или несколькими порциями, которые
могут быть размещены в
разных областях памяти (
методы разрывного
распределения).
Простое непрерывное распределение – это самая простая схема,
согласно которой память может быть условно разделена на три области:
область, занимаемая ОС; область, в которой размещается исполняемая задача;
область памяти, незанятая ничем (свободная). Эта схема является самой
первой схемой и продолжает оставаться достаточно распространенной. Схема
предполагает, что ОС не поддерживает мультипрограммирование, поэтому не
возникает
проблемы распределения памяти между несколькими задачами.
Программные модули, необходимые для всех программ, располагаются в
области самой ОС, а вся оставшаяся память может быть предоставлена задаче.
Эта область памяти получается непрерывной, что облегчает систему
программирования. Привязка виртуальных адресов программы к физическому
адресному пространству осуществляется на этапе загрузки задачи в память.
Чтобы отвести задачам как можно больший объем памяти, ОС строится таким
образом, чтобы постоянно в оперативной памяти располагалась только самая
нужная ее часть – ядро.
Если есть необходимость создать программу, логическое адресное
пространство которой должно быть больше, чем свободная область памяти
(или чем весь возможный объем ОП), то используется
распределение с
37
перекрытием – так называемые
оверлейные структуры. Этот метод
распределения предполагает, что вся программа может быть разбита на части
–
сегменты. Каждая оверлейная программа имеет одну главную часть (main) и
несколько сегментов (segments), в памяти одновременно могут находиться
только ее главная часть или несколько не перекрывающихся сегментов. Пока
в ОП располагаются выполняющиеся сегменты, остальные находятся во
внешней памяти. После того, как текущий сегмент завершит свое выполнения,
возможны варианты: либо он сам обращается к ОС с указанием, какой сегмент
должен быть загружен следующим; либо он возвращает управление главному
сегменту задачи, который обращается с указанием к ОС. Простейшие схемы
сегментирования предполагают, что в каждый момент времени в памяти
может располагаться только один сегмент вместе с главным модулем. Более
сложные схемы позволяют располагать в
памяти несколько сегментов.
Например, в однопрограммной ОС MS DOS распределение памяти построено
по схеме простого непрерывного распределения с перекрытием (оверлейные
структуры).
Для организации мультипрограммного и/или мультизадачного режима
необходимо обеспечить одновременное расположение в
оперативной памяти
нескольких задач (целиком или частями). Самая простая схема распределения
памяти между несколькими задачами предполагает, что память, не занятая
ядром ОС, может быть разбита на несколько непрерывных частей –
разделов.
Достарыңызбен бөлісу: