Что такое физические и виртуальные адреса? 


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



ЗНАЕТЕ ЛИ ВЫ?

Что такое физические и виртуальные адреса?



Виртуальный - адрес написанный в программе(определённая ячейка, сегмент, смещение)

Физические — адреса ячейки памяти на шине адресов.

Когда и каким образом может выполняться замена виртуальных адресов физическими?

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

Чем различаются позиционно-независимые и перемещаемые программы?

Позиционно-независимые – правильно работают на любых адресах.

Перемещаемые – требуют настройки адресов при загрузки в память.

Что такое распределение памяти с фиксированными разделами?

При этом способе распределения памяти администратор системы заранее, при установке ОС, выполняет разбиение всей имеющейся памяти на несколько разделов. Как правило, формируются разделы разных размеров.

Что такое распределение памяти с динамическими разделами?

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

143. Какую информацию содержит таблица сегментов процесса?

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

Чем различаются фиксированные и перемещаемые сегменты?

В случае с перемещаемыми сегментами, программа не может обращаться к адресам в таком сегменте, поскольку его местоположение не определено.

Фиксированный сегмент – не должен перемещаться в память.

Чем различаются сегментная и страничная организация виртуальной памяти?

Размер сегмента выбирает программист или компилятор, размер страничный фиксированный (например 4 Кб)

Как обеспечивается изоляция процессов при использовании страничной адресации?

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

147. В чем заключается процесс подкачки страниц по требованию?

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

Почему алгоритм LRU мало пригоден для выбора вытесняемой страницы памяти?

Потому что при каждом обращении к кэш-буферу этот буфер должен переставляться в конец очереди(это медленно).

Возможна ли фрагментация физической памяти при сегментной организации? А при страничной?

При страничной организации фрагментация невозможно, потому что страницы памяти имеют одинаковый размер, а сегменты -нет.

Какой размер сегмента программы используется в Windows?

Формально же теперь все адресное пространство пользователя укладывается в один очень большой сегмент размером 4 Гб.

Что означают операции RESERVE и COMMIT при выделении региона памяти?

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

Передача физической памяти (МЕМ_СОММ1Т) означает, что за каждой страницей виртуальной памяти региона система закрепляет... нет, вовсе не страницу физической памяти, как можно подумать. Закрепляется блок размером 4 Кб в страничном файле. В таблице страниц процесса переданные страницы помечаются как отсутствующие в памяти.

Какие действия с памятью выполняются при запуске EXE-файла?

При запуске программы Windows резервирует достаточное количество виртуальных страниц и закрепляет за ними блоки ЕХЕ- файла При этом нет необходимости выполнять такое действие, как «загрузка» программы в традиционном смысле. Чтение кодов программы выполняется по мере необходимости, согласно общему принципу загрузки страниц по требованию.

В каких случаях используется копирование при записи?

Как правило, текст программы не подвергается изменениям в ходе ее выполнения. Это означает, что соответствующие виртуальные страницы остаются «чистыми» и при их вытеснении нет необходимости в записи на диск. Если один и тот же исполняемый файл используется одновременно несколькими процессами (что вполне возможно для ЕХЕ-файла в случае запуска нескольких экземпляров программы, а для DLL-файлов является правилом), то на один и тот же файл отображаются виртуальные страницы каждого из этих процессов. При этом вполне возможно, что в таблицах страниц разных процессов один и тот же исполняемый файл будет соответствовать разным диапазонам виртуальных адресов.

Проблема возникает в том случае, если по логике работы программы должна выполняться запись в некоторые страницы памяти, соответствующие исполняемому файлу. Это нормальное явление, поскольку в состав ЕХЕ-файла могут входить области памяти, отведенные для статических переменных программы. Очевидно, нельзя позволить программе изменять свой собственный файл только потому, что изменились значения переменных Тем более, если файл используется сразу в нескольких процессах и в каждом из них переменные принимают разные значения. Выход, используемый Windows NT в этой ситуации, заключается в следующем. Все виртуальные страницы, соответствующие выполняемому файлу, выделяются со специальным атрибутом доступа PAGE WRITECOPY, т.е. «копирование при записи».

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

Что такое отображение файла данных в память?

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

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

Для чего используется отображение файла без указания конкретного файла?

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

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

Что такое куча и для чего она используется?

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



Поделиться:


Последнее изменение этой страницы: 2016-08-16; просмотров: 545; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.221.41.214 (0.005 с.)