Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Функции модуля управления памятью. Адресное пространство процесса




 

Главной задачей вычислительной системы является выполнение программ. Программы и данные частично располагаются в оперативной памяти, и операционной системе приходится решать задачу распределения оперативной памяти между процессами и защиты памяти[14], которая выделена процессу, от вмешательства другого процесса. Часть операционной системы, отвечающая за управление памятью, называется модулем управления памятью или менеджером памяти. В связи с тем, что память является одним из важнейших ресурсов системы, то от эффективности функционирования менеджера памяти в значительной степени зависят показатели эффективности всей системы в целом.

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

- отслеживать какая часть памяти используется в данный момент времени, а какая свободная;

- выделять память процессам и по их завершению освобождать ресурсы;

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

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

Во время работы операционной системы ей часто приходится создавать новые служебные информационные структуры (описатели процессов и потоков, таблицы распределения ресурсов, буферы, используемые процессами для обмена данными, синхронизирующие объекты и т.п.), которым также необходима память. В ряде операционных систем заранее (во время установки) резервируется некоторый фиксированный объем памяти для системных нужд. В других операционных системах используется гибкий подход, при котором память для системных целей выделяется динамически. При динамическом выделении памяти[15] запросы на выделение памяти формируются во время исполнения задачи и обрабатываются специальным алгоритмом в ядре операционной системы.

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

 
 

 

Процессор обрабатывает данные, которые находятся в основной памяти, и процессы размещают свои коды и данные в адресном пространстве, которое они рассматривают, как пространство оперативной памяти. В общем случае то адресное пространство, в котором пишется программа[16], называется виртуальною памятью, в отличие от реальной или физической памяти, в которой происходит выполнение программы (процесса). Виртуальная память (Virtual memory) – это ресурсы оперативной или внешней памяти, выделяемые прикладной программе операционной системой. Физическое расположение виртуальной памяти на реальных носителях может не совпадать с логической адресацией данных в прикладной программе. Преобразование логических адресов программы в физические адреса запоминающих устройств обеспечивается аппаратными средствами и операционной системой. Работу с памятью можно представить в виде трех функций преобразования (рис. 5.5.):

- функция именования – производит отображение точки из пространства имен программы в пространство адресов в виртуальной памяти, то есть переводит символьные имена (используемые программистом) в виртуальные адреса;

- функция привязки – производит отображение точки из пространства виртуальных адресов в пространство реальных адресов, то есть, переводит виртуальные адреса в адреса физических ячеек памяти;

- функция выборки – отображает точку из пространства реальных адресов в значение, то есть, выбирает содержимое памяти по заданному адресу (реализуется аппаратно).

Программист может писать программу, сразу привязывая ее к заведомо известным адресам физической памяти, что называется программированием в абсолютных адресах. Такое программирование выполняется в специальных случаях, например, для программ, записываемых в ПЗУ. Даже в таких случаях программист часто пользуется символьными именами, возлагая задачу перевода имен в физические адреса на транслятор. Полученная таким образом программа называется абсолютной или неперемещаемой. Она может выполняться только, будучи загруженной по определенному адресу оперативной памяти.

 
 

 

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

- символьные имена – имена, которые присваивает пользователь при написании программы на алгоритмическом языке или ассемблере;

- виртуальные адреса – адреса, которые вырабатывает транслятор[17], переводящий программу на машинный язык;

- физические адреса – адреса, которые соответствуют номерам ячеек оперативной памяти, где в действительности расположены или будут расположены переменные и команды[18].

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


 

В разных операционных системах используются разные способы структуризации виртуального адресного пространства. В одних операционных системах виртуальное адресное пространство представляется в виде непрерывной линейной последовательности адресов. Такую структуру адресного пространства называют плоской (flat) Виртуальным адресом является единственное число, представляющее собой смещение относительно начала виртуального адресного пространства (рис. 5.7. а), которое называется линейным виртуальным адресом. В других операционных системах виртуальное адресное пространство делится на части, называемые сегментами (секциями, областями). В этом случае помимо линейного адреса может быть использован виртуальный адрес, представляющий собой пору чисел (n, m), где n определяет сегмент, а m – смещение внутри сегмента (рис. 5.7, б). Существуют и более сложные способы структуризации виртуального адресного пространства, когда виртуальный адрес образуется тремя и более числами.

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




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


Дата добавления: 2014-01-03; Просмотров: 938; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.