Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Управление памятью. Сегментно-страничная организация памяти компьютера.






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

 


Рис. 8.9. Упрощенная схема формирования физического адреса при сегментно-страничной организации памяти

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

Сегмент памяти — одна из единиц адресации в некоторых моделях памяти.

Физический адрес — это адрес, по которому производится реальное обращение к памяти.

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

..

Виртуальная память. Механизм реализации виртуальной памяти. Стратегия подкачки страниц. Программная поддержка сегментной модели памяти компьютера. Основы функционирования менеджера памяти.

1)Виртуальная память - это совокупность программно-аппаратных средств, позволяющих пользователям писать программы, размер которых превосходит имеющуюся оперативную память; для этого виртуальная память решает следующие задачи:

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

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

· преобразует виртуальные адреса в физические.

Все эти действия выполняются автоматически, без участия программиста, то есть механизм виртуальной памяти является прозрачным по отношению к пользователю.

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

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

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

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

2)Стратегия подкачки страниц.

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

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

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

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

3) Программная поддержка сегментной модели памяти компьютера.

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

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

Сегмент программного кода содержит только команды. Обычно страницы данного сегмента имеют атрибут read-only. Следствием этого является возможность использования одного экземпляра кода для разных процессов.

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

 

 

Рис. 10.5. Образ процесса в памяти

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

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

Два процесса могут общаться через разделяемую область памяти при условии, что им известно ее имя (пароль). Обычно это делается при помощи специальных вызовов (например, map и unmap), входящих в состав интерфейса виртуальной памяти. Загрузка исполняемого файла (системный вызов exec) осуществляется обычно через отображение (mapping) его частей (кода, данных) в соответствующие сегменты адресного пространства процесса.

4)Основы функционирования менеджера памяти. Корректная работа менеджера памяти помимо принципиальных вопросов, связанных с выбором абстрактной модели виртуальной памяти и ее аппаратной поддержкой, обеспечивается также множеством нюансов. В качестве примера такого рода компонента рассмотрим более подробно локализацию страниц в памяти, которая применяется в тех случаях, когда поддержка страничной системы приводит к необходимости разрешить определенным страницам, хранящим буферы ввода-вывода, другие важные данные и код, быть блокированными в памяти. Рассмотрим случай, когда система виртуальной памяти может вступить в конфликт с подсистемой ввода-вывода. Например, процесс может запросить ввод в буфер и ожидать его завершения. Управление передастся другому процессу, который может вызвать page fault и, с отличной от нуля вероятностью, спровоцировать выгрузку той страницы, куда должен быть осуществлен ввод первым процессом. Подобные ситуации нуждаются в дополнительном контроле. Одно из решений данной проблемы - вводить данные в не вытесняемый буфер в пространстве ядра, а затем копировать их в пользовательское пространство.

Второе решение - локализовать страницы в памяти, используя специальный бит локализации, входящий в состав атрибутов страницы. Локализованная страница замещению не подлежит.

Другим важным применением локализации является ее использование в системах мягкого реального времени. Вообщем говоря, виртуальная память - антитеза вычислений реального времени, так как дает непредсказуемые задержки при подкачке страниц. Поэтому системы реального времени почти не используют виртуальную память. Для решения проблемы page faults, Solaris разрешает процессам сообщать системе, какие страницы важны для процесса, и локализовать их в памяти. В результате возможно выполнение процесса, реализующего задачу реального времени, содержащего локализованные страницы, где временные задержки страничной системы будут минимизированы.

Файловые системы. Функции файловых систем и иерархия данных. Общая структура файловой системы управления внешней памятью. Кооперация процессов при работе с файлами. Файловые системы FAT, FAT32, NTFS.

· Под файлом обычно понимают именованный набор данных, орга­низованных в виде совокупности записей одинаковой структуры. Для управления этими данными создаются соответствующие файловые системы.

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

Благодаря системам управления файлами пользователям предоставляются следу­ющие возможности:

1. Создание, удаление, переименование (и другие операции) именованных набо­ров данных (файлов) из своих программ или посредством специальных управ­ляющих программ, реализующих функции интерфейса пользователя с его дан­ными и активно использующих систему управления файлами;

2. Работа с недисковыми периферийными устройствами как с файлами;

3. Обмен данными между файлами, между устройствами, между файлом и уст­ройством (и наоборот);

4. Работа с файлами путем обращений к программным модулям системы управ­ления файлами (часть api ориентирована именно на работу с файлами);

5. Защита файлов от несанкционированного доступа.

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

- При работе с файлами желательно ввести механизмы структурирования. Проще всего организовать иерархические отношения. Для этого достаточно ввести поня­тие каталога. Каталог содержит информацию о данных, организован­ных в виде файлов. Другими словами, в каталоге должны содержаться дескрипто­ры файлов. Файл-каталог должен иметь спе­циальное системное значение; система управления файлами должна его выделять на фоне обычных файлов. Файл-каталог часто называют подкаталогом (subdi­rectory). Если файл-каталог содержит информацию о других файлах, то посколь­ку среди них также могут быть файлы-каталоги, мы получаем возможность стро­ить почти ничем не ограниченную иерархию.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.