3 года назад

Таненбаум Э. Современные операционные системы. Виртуальная память.

Раздел 3.3 "Виртуальная память" "Изобретенный метод (Fotheigham, 1961) стал известен как виртуальная память. В основе виртуальной памяти лежит идея, что у каждой программы имеется свое собственное адресное пространство, которое разбивается на участки, называемые страницами. Каждая страница представляет собой непрерывный диапазон адресов. Эти страницы отображаются на физическую память, но для запуска программы присутствие в памяти всех страниц не обязательно. Когда программа ссылается на часть своего адресного пространства, находящегося в физической памяти, аппаратное обеспечение осуществляет необходимое отображение на лету. Когда программа ссылается на часть своего адресного пространства, которое не находится в физической памяти, операционная система предупреждается о том, что необходимо получить недостающую часть и повторно выполнить потерпевшую неудачу команду. "Не пойму что он имеет в виду, под словами "физическая память"? Это файл подкачки(Widows)/swap раздел(Liux) ? Тогда не пойму: "Когда программа ссылается на часть своего адресного пространства, которое НЕ НАХОДИТСЯ в физической памяти, операционная система предупреждается о том, что необходимо получить НЕДОСТАЮЩУЮ ЧАСТЬ и повторно выполнить потерпевшую неудачу команду." Откуда получить недостающую часть? С диска подкачать в swap ?Я понимаю это так: кусок программы находится в оперативе, остальной кусок в swap, когда кусок программы находящийся в оперативе, обращается к инструкции которая (судя по адресу) находится в swap, операционка сопоставляет адрес заданный прогой с физическим адресом на диске в swap разделе и программа продолжает работу уже в swap. Я праильно понимаю? Если нет, поясните plz :))И еще где можно скачать "Таненбаум Э. Современные операционные системы. 3 издание" в оригинале? А то наши переводчики иногда так отжигают что мозг плавится начинает.Вопрос может быть глупый, но тупо потыкав кнопочки и порисовав в конфигах захотелось хоть чуть чуть разобраться как это работает.

Bart-4585773 (Гость) Литература
3

Литература: Таненбаум Э. Современные операционные системы. Виртуальная память.

1 год назад Какая книга лучшая для начинающего линуксоида

Какая книга лучшая для начинающего линуксоида?Вот мене рекомендуют книги:-  UNIX. Руководство системного администратора. Для профессионалов ( Эви Немет ) --- http://www.ozo.u/cotext/detail/id/855490/-  Доступный UNIX: Liux, FeeBSD, DagoFlyBSD, NetBSD, OpeBSD ( Алексей Федорчук ) --- http://www.ozo.u/cotext/detail/id/2644490/- Запускаем Liux ( Мэтт Уэлш ) --- http://www.ozo.u/cotext/detail/id/4579332/- Uix. Программное окружение ( Брайн Керниган ) --- http://www.ozo.u/cotext/detail/id/1...

DevilBoy (Гость) 11 ответов
3
1 год назад Операционные системы и среды. Linux, консольный режим. Посоветуйте литературу с азами и чуть глубже

1 Курс, 2 семестр. основные проблемы: написание скрипта (в рамках ознакомления), переход по каталогам, назначение свойств файлам, простейшее использование редактора vi,[DELIMITER]ну откуда-то же нужно узнать, какие есть команды и как ими пользоваться

саня лынник (Гость) 4 ответа
3
1 год назад Помогите с сочинением...

помогите с сочинениемНапишите по тексту  сочинение-рассуждение, или выделите проблему и приведите аргумент из литературы.В вагоне метро на самом видном месте прилеплена рекламка: « Призыв в армию? Нет уж, спасибо! За помощью обращаться по телефону…» Ниже – рисунок: трогательный мальчуган, сидящий на горшке и не ведающий, какая опасность ожидает его по достижении призывного возраста. Женщина лет сорока, моя ровесница, поставила сумку и старательно переписывает номер телефона в книжечку. Она ...

Marish_St (Гость) Нет ответов
3
Ответы (1)
Замбек Мальсагов (Гость) 3 года назад
5

Физическая память - это RAM (или ОЗУ) - ее максимальный объем для 32 битной системы 4 гигабайта.
Своп файл (файл подкачки) - это просто файл на диске, куда ОС скидывает содержимое части физической памяти, если ее перестает хватать.

Есть память виртуальная, ее максимальный объем для каждого приложения - 4 гигабайта (факт в том, что виртуальная память это фикция, ее можно воспринимать как указатель на физическую память - очень грубое сравнение). Т.е. у каждого приложения есть 4 гигабайта виртуальной памяти.
Скажем (цифры для примера), мы имеем выделенный диапазон виртуальной памяти 4000 - 6000. В данный момент - это просто цифры, они ничего не значат. Но когда мы говорим, что этот диапазон будет отображаться в физическую память в диапазоне 8000-10000, то мы теперь можем обращаться к виртуальной памяти и система будет переадресовывать наш запрос к физической памяти. Скажем обратились мы к адресу 4005, а Linux переадресовал обращение к физической памяти по адресу 8005.
Зачем такой сложный механизм? Затем, что напрямую к физической памяти обращаться нельзя - это раз. И два - каждый процесс (т.е. запущенная программа) получает свои 4 гигабайта (для 32 битных систем) вирт.памяти и считает что вся это память его, и так все процессы.
А компонент linux, отвечающий за своппинг, волен скидывать часть физической памяти в файл подкачки (своп). Но приложение ведь работает с виртуальной памятью и о том, что часть его вытеснено в своп файл ничего не знает. Оно просто обращается по некоторому виртуальному адресу, Linux по своим внутренним таблицам смотрит, что данные по этому адресу скинуты в своп файл, достает их оттуда, записывает в физическую память и приложение продолжает работать далее, не зная о закулисных операция с физической памятью.
А вот теперь более подробно об отображении. Где-то в недрах linux хранится таблица, которая показывает соответствие виртуальных адресов физическим, соответственно, если linux вдруг решит переместить данные в физической памяти на новое место, то приложению не нужно будет об этом знать, т.к. виртуальный адрес не изменится, изменится только физический, скажем
вирт.адр. физ.адр.
3000 8000

данные переместили в физической памяти и теперь они начинаются с адреса 10000, таблица теперь выглядит так:
вирт.адр физ.адр
3000 10000

Наше приложение ничего о перемещении не знает и ему не нужно знать, т.к. оно с физической памятью не работает, а по прежнему обращается по виртуальному адресу 3000, а linux всегда смотрит в эту таблицу (можно сказать, что виртуальный адрес разрешается в физический адрес, как, скажем, www.google.ru разрешается в ip адрес 109.194.121.123 и обращение уже идет по адресу 109.194.121.123, так и здесь по виртуальному адресу определяется физический, и обращение уже идет по физическому адресу (к физической памяти - RAM)).
Иными словами, виртуальный адрес - это просто некоторый уровень абстракции над физическими адресами, нужный для того, чтоб приложение не имело доступа к физической памяти на прямую - это нужно по соображениям безопасности.

P.S. Кое-что пришлось опустить или немного исказить ради понятности и краткости (например я не сказал ничего про страничную адресацию и ловушки). Читая это, держи в уме, что здесь несколько искаженная картина действительности (зато простая).

Пожаловаться
Таненбаум Э. Современные операционные системы. Виртуальная память. (Литература) - вопросы и ответы на все случаи жизни - справочник Литература moi-vopros.ru