The design of the UNIX Operating System 41 страница
Кэш процессора обычно является частью аппаратуры, поэтому менеджер памяти ОС занимается распре-делением информации главным образом в основной и внешней памяти компьютера. В некоторых схемах потоки между оперативной и внешней памятью регулируются программистом (см. например, далее овер-лейные структуры), однако это связано с затратами времени программиста, так что подобную деятель-ность стараются возложить на ОС.
|
|
Адреса в основной памяти, характеризующие реальное расположение данных в физической памяти, на-зываются физическими адресами. Набор физических адресов, с которым работает программа, называют физическим адресным пространством.
Логическая память
Аппаратная организация памяти в виде линейного набора ячеек не соответствует представлениям про-граммиста о том, как организовано хранение программ и данных. Большинство программ представляет собой набор модулей, созданных независимо друг от друга. Иногда все модули, входящие в состав про-
|
|
Основы операционных систем | 73 |
цесса, располагаются в памяти один за другим, образуя линейное пространство адресов. Однако чаще модули помещаются в разные области памяти и используются по-разному.
|
|
Схема управления памятью, поддерживающая этот взгляд пользователя на то, как хранятся программы и данные, называется сегментацией. Сегмент – область памяти определенного назначения, внутри которой поддерживается линейная адресация. Сегменты содержат процедуры, массивы, стек или скалярные вели-чины, но обычно не содержат информацию смешанного типа.
|
|
По-видимому, вначале сегменты памяти появились в связи с необходимостью обобществления процес-сами фрагментов программного кода (текстовый редактор, тригонометрические библиотеки и т. д.), без чего каждый процесс должен был хранить в своем адресном пространстве дублирующую информацию. Эти отдельные участки памяти, хранящие информацию, которую система отображает в память несколь-ких процессов, получили название сегментов. Память, таким образом, перестала быть линейной и пре-вратилась в двумерную. Адрес состоит из двух компонентов: номер сегмента, смещение внутри сегмента. Далее оказалось удобным размещать в разных сегментах различные компоненты процесса ( код програм-мы, данные , стек и т. д.). Попутно выяснилось , что можно контролировать характер работы с конкретным сегментом, приписав ему атрибуты, например права доступа или типы операций, которые разрешается производить с данными, хранящимися в сегменте.
Рис. 8.2. Расположение сегментов процессов в памяти компьютера
Некоторые сегменты, описывающие адресное пространство процесса, показаны на рис. 8.2. Более под-робная информация о типах сегментов имеется в лекции 10.
Большинство современных ОС поддерживают сегментную организацию памяти. В некоторых архитекту-рах (Intel, например) сегментация поддерживается оборудованием.
Адреса, к которым обращается процесс, таким образом, отличаются от адресов, реально существующих в оперативной памяти. В каждом конкретном случае используемые программой адреса могут быть пред-ставлены различными способами. Например , адреса в исходных текстах обычно символические. Компи-лятор связывает эти символические адреса с перемещаемыми адресами (такими, как n байт от начала мо-дуля). Подобный адрес, сгенерированный программой, обычно называют логическим (в системах с вир-туальной памятью он часто называется виртуальным) адресом. Совокупность всех логических адресов называется логическим (виртуальным) адресным пространством.
Дата добавления: 2021-01-21; просмотров: 97; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!