The design of the UNIX Operating System 41 страница



 

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

 

Адреса в основной памяти, характеризующие реальное расположение данных в физической памяти, на-зываются физическими адресами. Набор физических адресов, с которым работает программа, называют физическим адресным пространством.

 

Логическая память

 

Аппаратная организация памяти в виде линейного набора ячеек не соответствует представлениям про-граммиста о том, как организовано хранение программ и данных. Большинство программ представляет собой набор модулей, созданных независимо друг от друга. Иногда все модули, входящие в состав про-


Основы операционных систем 73

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

 

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

 

По-видимому, вначале сегменты памяти появились в связи с необходимостью обобществления процес-сами фрагментов программного кода (текстовый редактор, тригонометрические библиотеки и т. д.), без чего каждый процесс должен был хранить в своем адресном пространстве дублирующую информацию. Эти отдельные участки памяти, хранящие информацию, которую система отображает в память несколь-ких процессов, получили название сегментов. Память, таким образом, перестала быть линейной и пре-вратилась в двумерную. Адрес состоит из двух компонентов: номер сегмента, смещение внутри сегмента. Далее оказалось удобным размещать в разных сегментах различные компоненты процесса ( код програм-мы, данные , стек и т. д.). Попутно выяснилось , что можно контролировать характер работы с конкретным сегментом, приписав ему атрибуты, например права доступа или типы операций, которые разрешается производить с данными, хранящимися в сегменте.

 

Рис. 8.2. Расположение сегментов процессов в памяти компьютера

 

Некоторые сегменты, описывающие адресное пространство процесса, показаны на рис. 8.2. Более под-робная информация о типах сегментов имеется в лекции 10.

 

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

 

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


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

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






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