Управление памятью. Функции ОС по управлению памятью.
Под памятьюпонимается оперативная память компьютера. В отличие от памяти жесткого диска, которую называют внешней памятью, оперативная память для сохранения информации требует постоянное электропитание.
Особая роль памяти в том, что процессор может выполнять инструкции программы только в том случае, если они находятся в памяти.
Память распределяется как между модулями прикладных программ, так и между модулями самой операционной системы.
Функциями ОС по управлению памятью в мультипрограммной системе являются:
· отслеживание свободной и занятой памяти;
· выделение памяти процессам и освобождение памяти по завершении процессов;
· вытеснение кодов и данных процессов из оперативной памяти на диск, когда размеры основной памяти не достаточны для размещения в ней всех процессов, и возвращение их в оперативную память, когда в ней освобождается место;
· настройка адресов программы на конкретную область физической памяти.
Во время работы ОС приходится создавать новые служебные информационные структуры, такие как описатели процессов и потоков, различные таблицы распределения ресурсов, буферы для обмена данными и т.п. Все эти системные объекты требуют памяти.
В некоторых ОС во время установки резервируется некоторый фиксированный объем памяти для системных нужд. В других же ОС используется более гибкий подход, при котором память для системных целей выделяется динамически.
Защита памяти — еще одна важная задача ОС. Она состоит в том, чтобы не позволить выполняемому процессу записывать или читать данные из памяти, назначенной другому процессу.
Типы адресов
Для идентификации переменных и команд на разных этапах жизненного цикла программы используются символьные имена, виртуальные адреса и физические адреса.
· Символьные именаприсваивает пользователь при написании программы.
· Виртуальные (условные) адреса, вырабатывает транслятор, переводящий программу на машинный язык.
· Физические адресасоответствуют номерам ячеек оперативной памяти, где в действительности расположены переменные и команды.
Совокупность виртуальных адресов называется виртуальным адресный пространством.
Диапазон возможных адресов виртуального пространства у всех процессов является одним и тем же. Тем не менее, каждый процесс имеет собственное виртуальное адресное пространство — транслятор присваивает виртуальные адреса переменным и кодам каждой программе независимо.
В разных ОС используются разные способы структуризации адресного пространства.
1. Линейнаяпоследовательности виртуальных адресов. Такая структура адресного пространства называют также плоской (flat). При этом виртуальным адресом является единственное число, представляющее собой смещение относительно начала виртуального адресного пространства. Адрес такого типа называют линейным виртуальным адресом.
2. Виртуальное адресное пространство делится на части, называемые сегментами. Виртуальный адрес представляющий собой паручисел (n, m), где nопределяет сегмент, a m — смещение внутри сегмента.
3. Есть более сложные способы структуризации, когда виртуальный адрес образуется тремя или даже более числами.
Существуют два принципиально отличающихся подхода к преобразованию виртуальных адресов в физические.
1.Замена виртуальных адресов на физические выполняется один раз для каждого процесса во время начальной загрузки программы в память. Выполняет это системная программа — перемещающий загрузчик — на основании имеющихся у нее исходных данных о начальном адресе физической памяти, а также информации, предоставленной транслятором об адресно-зависимых элементах программы, выполняет загрузку программы, совмещая ее с заменой виртуальных адресов физическими.
2. Программа загружается в память в неизмененном виде в виртуальных адресах. При загрузке ОС фиксирует смещение действительного расположения программного кода относительно виртуального адресного пространства. Во время выполнения программы при каждом обращении к оперативной памяти выполняется преобразование виртуального адреса в физический.
Последний способ является более гибким: в то время как перемещающий загрузчик жестко привязывает программу к первоначально выделенному ей участку памяти, динамическое преобразование виртуальных адресов позволяет перемещать программный код процесса в течение всего периода его выполнения.
Как правило, объем виртуального адресного пространства превышает доступный объем оперативной памяти. В таком случае ОС для хранения данных виртуального адресного пространства использует дополнительную внешнюю память.
Однако соотношение объемов виртуальной и физической памяти может быть и обратным.
Следует помнить, что механизмы виртуального адресного пространства, и виртуальной памяти в общем случае – это не одно и тоже. Можно представить себе ОС, в которой поддерживаются виртуальные адресные пространства для процессов, но отсутствует механизм виртуальной памяти. Это возможно только в том случае, если размер виртуального адресного пространства каждого процесса меньше объема физической памяти.
Содержимое назначенного процессу виртуального адресного пространства, представляет собой образ процесса.
Во время работы процесса постоянно выполняются переходы от прикладных кодов к кодам ОС, которые либо явно вызываются из прикладных процессов как системные функции, либо вызываются как реакция на внешние события. Для того чтобы упростить передачу управления от прикладного кода к коду ОС, а также для легкого доступа модулей ОС к прикладным данным, в большинстве ОС ее сегменты разделяют виртуальное адресное пространство с прикладными сегментами активного процесса.
То есть виртуальное адресное пространство процесса делится на две непрерывные части: системную и пользовательскую. В некоторых ОС (например, Windows NT) эти части имеют одинаковый размер — по 2 Гбайт.
Часть виртуального адресного пространства каждого процесса, отводимая под сегменты ОС, является идентичной для всех процессов. Поэтому при смене активного процесса заменяется только вторая часть виртуального адресного пространства. Например, в процессорах Intel Pentium существует два типа системных таблиц: одна — для описания сегментов, общих для всех процессов, другая — для описания индивидуальных сегментов данного процесса. При смене процесса первая таблица остается неизменной, а вторая – заменяется новой.
Дата добавления: 2016-06-15; просмотров: 8797;