Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.01.2016, 01:18   #11
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

Цитата:
Хотелось бы побольше подробностей.
Intel 64 Software Developer's Manual
Volume 3, System Programming Guide,
Chapters 3, 4, 5
Memory Management
Paging
Protection
f.hump вне форума Ответить с цитированием
Старый 29.01.2016, 03:20   #12
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Когда вы пишете программу на каком-либо языке мнемонических команд (которые машина, к сожалению, не понимает. А точнее, кодовое значение мнемоник никак не соотв. действительным кодам команд, за которыми они закреплены) вы оперируете символьными адресами (имена переменных). Эти адреса, в конечном итоге, должны быть преобразованы в КОНКРЕТНЫЕ адреса расположения в физической памяти. Опять же, вспоминая про назначение виртуального адресного пространства - заранее неизвестно, где именно будет располагаться ваша программа. Посему, адреса из символьных(здесь уточню. Это те адреса, которые не понимает машина. С точки зрения семантики адресов - они не несут в себе какого-либо смысла. Это полный ХАОС Но, по правде говоря, "машина не понимает" - может быть и не совсем корректное высказывание. Она то все понимает - для нее все состоит из 0 и 1. Но все-таки, чтобы добиться какого-то обратного эффекта - мы должны закладывать в последовательность из нулей и единиц какой-то заранее определенный смысл. Символьные адреса, с точки зрения числовых адресов - набор чисел, зависящий от СИМВОЛЬНОЙ последовательности, а не от принципа построения и работы вашей программы.) преобразуются в виртуальные адреса. Виртуальные адреса - это такие адреса, которые уже несут в себе какую-то смысловую нагрузку. Они рассчитаны таким образом, что учитывают размеры самих значений, которые были закреплены вами за символьными переменными. Эти адреса соблюдают какую-то закономерность адресации в заданном участке (загнали стадо коров в загон ). Размеры этого участка конечно же учитываются (как пример, размер физической памяти). Т.е. грубо говоря - эти адреса уже можно применять при адресации в нашей программе после ее загрузки в физическую память. Но не в нашем случае. Вспоминая про то, что мы в памяти не одни (например, резидентные программы), необходимо еще одно преобразование, которые уже будет учитывать состояние физической памяти.
что вы имеете в виду под символьными адресами? переменные в ЯП? дык это вообще не причем.
вы в любом случае оперируете адресами, вы даже не знаете что он виртуальный, в этом и смысл системы страничных преобразований(она же виртуальная память), вы работаете в своем процессе словно вы одни в системе.
если писать не под ОС, то там тоже самое, тока в данном случае вы реально одни. код может даже тот же быть.
Цитата:
Как я понимаю, адресное пространство это "Виртуальное представление физической памяти".
Чтобы обратиться к памяти, нужно спроецировать адресное пространство на физическую память.
1) вероятно, чтобы процесс не мог обратиться в чужую память и системе легче было отслеживать действия процесса(он как-будто в клетке, заключённый в своё адресное пространство)
2)??
Какие есть у вас мысли по этому поводу?
отвечу кратко, хотя на самом деле тут немного сложнее.(в скобках подсистема отвечающая за это)
1)Защита, защита ОС, защита других процессов и тп.(базовый механизм дескрипторов)
2)Возможность реализации свопа/файла подкачки.(система страничных преобразований)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 29.01.2016 в 03:23.
Пепел Феникса вне форума Ответить с цитированием
Старый 29.01.2016, 21:19   #13
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

Цитата:
Сообщение от f.hump Посмотреть сообщение
Intel 64 Software Developer's Manual
Volume 3, System Programming Guide,
Chapters 3, 4, 5
Memory Management
Paging
Protection
Какое отношение к виртуальному адресному пространству процесса имеет вопрос механизма трансляции адресов и учета привилегий ?

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
что вы имеете в виду под символьными адресами? переменные в ЯП? дык это вообще не причем.
вы в любом случае оперируете адресами, вы даже не знаете что он виртуальный
Я не стал сразу вводить автора в заблуждение про использование виртуальных адресов, так как я предполагал, что он во время чтения будет пытаться связать усвоенное на языки высокого уровня (что касается адресов). Именно поэтому я условился про языки мнемонических команд и упомянул лишний раз про символьные адреса.
Цитата:
вы в любом случае оперируете адресами, вы даже не знаете что он виртуальный
Если нахожусь на уровне символьных адресов - согласен, могу совсем и не знать. А вот если же касаюсь числовых адресов, то мне известно, что адреса, которыми я оперирую - виртуальные (если программирую под ОС которая предоставляет мне условие виртуального адресного пространства). Именно в этом и заключается суть виртуального адресного пространства процесса. Все виртуальные адреса, которые опираются на заранее известный постоянный физический адрес размещения в ОП и представляют в конечном счете виртуальное адресное пространство. ВСЕ. Т.е. можно считать, что в условиях ЕДИНОЛИЧНОГО владения машиной, такую программу можно смело загружать на исполнение. Как вы верно и уточнили:
Цитата:
вы работаете в своем процессе словно вы одни
А вот проблема того, как программу с такими адресами (виртуальными) спроецировать в физическую память в условиях многозадачности, это вопрос уже совершенно другого механизма.
Поэтому, со следующим вашим утверждением не соглашусь:
Цитата:
в этом и смысл системы страничных преобразований(она же виртуальная память)
А причем здесь виртуальная память и страничное распределение?

Последний раз редактировалось Базиля; 29.01.2016 в 21:27.
Базиля вне форума Ответить с цитированием
Старый 29.01.2016, 22:47   #14
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

Цитата:
The memory management facilities of the Intel 64 architecture are divided into two parts: segmentation and paging.
Segmentation provides a mechanism of isolating individual code, data, and stack modules so that multiple
programs (or tasks) can run on the same processor without interfering with one another. Paging provides a mechanism
for implementing a conventional demand-paged, virtual-memory system where sections of a program’s
execution environment are mapped into physical memory as needed. Paging can also be used to provide isolation
between multiple tasks.
Цитата:
With paging, portions of the linear-address space need not be mapped to the physical-address space; data for the
unmapped addresses can be stored externally (e.g., on disk). This method of mapping the linear-address space is
referred to as virtual memory or demand-paged virtual memory.
принимая во внимание вторую цитату, пожалуй соглашусь, что ОС что-то делает тоже, но в основе лежит функционал проца.

учет привелегий идет в комплекте с
Цитата:
• Limit checks.
• Type checks.
• Privilege level checks.
• Restriction of addressable domain.
• Restriction of procedure entry-points.
• Restriction of instruction set.
что на мой взгляд очень полезно для безбажной работы всей темы.

Последний раз редактировалось f.hump; 29.01.2016 в 22:49.
f.hump вне форума Ответить с цитированием
Старый 29.01.2016, 22:59   #15
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

С этим я полностью соглашусь. Но к виртуальному адресному пространству процесса это не относится. Это чтобы мы понимали друг друга
Базиля вне форума Ответить с цитированием
Старый 29.01.2016, 23:55   #16
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Цитата:
Сообщение от Базиля Посмотреть сообщение
С этим я полностью соглашусь. Но к виртуальному адресному пространству процесса это не относится. Это чтобы мы понимали друг друга
Вы так путано говорите. Что вас понять не возможно. Как раз таки отношение имеет. Это одна из реализаций виртуальизации памяти.

1)
Все проще. Допустим у нас есть 5 программ. И компьютер с 8 мб памяти.
Дадим каждой программе адресное пространство в 1МБ.
С адресами от 000000 до 0FFFFFh Это и есть виртуальное адресное пространство.
Но так как адреса у программ совпадают, очевидно что они не могут быть записаны в одном мегабайте все вместе. Сохраним их со 2 по 6 мегабайт. А на время исполнения ОС по очереди будем копировать в 1 мегабайт.

Каждая программа будет думать, что она работает в 1 мегабайте.

Виртуальная память есть отображение виртуальных адресов на физические адреса скрытое от программы. Это может делать ОС или процессор, или компьютер или виртуальная машина и тд.
2) Но, практически такое определение без полезно. Тем более что на практике мы чаще всего встречаемся с тем что виртуализация достигается отображением одних адресов на другие при помощи таблицы-страниц.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .

Последний раз редактировалось Pavia; 30.01.2016 в 00:00.
Pavia вне форума Ответить с цитированием
Старый 30.01.2016, 00:08   #17
Iron Monk
Форумчанин
 
Аватар для Iron Monk
 
Регистрация: 05.10.2007
Сообщений: 478
По умолчанию

Цитата:
Сообщение от Pavia Посмотреть сообщение
Это может делать ОС или процессор, или компьютер или виртуальная машина и тд.Тем более что на практике мы чаще всего встречаемся с тем что виртуализация достигается отображением одних адресов на другие при помощи таблицы-страниц.
Запишу...Нет смайла с пряником.
Iron Monk вне форума Ответить с цитированием
Старый 30.01.2016, 00:12   #18
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

Цитата:
Вы так путано говорите. Что вас понять не возможно.
Чем запутываю? Цитаты конкретные, пожалуйста. Поправлюсь, если действительно где-то оговорился.
Цитата:
С адресами от 000000 до 0FFFFFh Это и есть виртуальное адресное пространство.
Вот и все. Точка. Куда дальше то?
Причем вы здесь приплетаете трансляцию адресов? Я совершенно не понимаю.
Цитата:
Виртуальная память есть отображение виртуальных адресов на физические адреса скрытое от программы. Это может делать ОС или процессор, или компьютер или виртуальная машина и тд.
Отображения виртуальных адресов в физические - это отображение виртуальных адресов в физические и ничто иное.
Виртуальная память - механизм позволяющий создать иллюзию большего виртуального адресного пространства в системе (в сравнении с физическими объемом имеющейся ОП) благодаря вытеснению, не используемых в данный момент, распределяемых единиц памяти. Но к самой концепции виртуального адресного пространства это никакого отношения не имеет.
Понятие виртуального адресного пространства будет существовать и без виртуальной памяти.

Последний раз редактировалось Базиля; 30.01.2016 в 00:17.
Базиля вне форума Ответить с цитированием
Старый 30.01.2016, 00:25   #19
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

Цитата:
Понятие виртуального адресного пространства будет существовать и без виртуальной памяти.
че-то я в растерянности, тут обсуждение философских аспектов такой неожиданной комбинации слов как "виртуальное адресное пространство"?
f.hump вне форума Ответить с цитированием
Старый 30.01.2016, 00:36   #20
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Цитата:
Вот и все. Точка. Куда дальше то?
Причем вы здесь приплетаете трансляцию адресов? Я совершенно не понимаю.
Это не отделимая характеристика. Иначе бы память не отличалось от реальной.
По определению слова "виртуальный" есть противоположный к слову реальный.
5 программа могут выполняться и записываться в одной адресном реальном пространстве. Если они будут располагаться на разных компьютерах.
Трансляция раскрывает, то как получается виртуальные адреса из физических.

Цитата:
Виртуальная память - механизм позволяющий создать иллюзию большего виртуального
В слове память слово большее не закодировано. Поэтому этот определение придуманное Тененбаумом не есть хорошее.
Поэтому не стоит его копировать, как попугай.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .

Последний раз редактировалось Pavia; 30.01.2016 в 00:38.
Pavia вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Управление виртуальной памятью Donat_Oshchepkov Visual C++ 3 13.12.2013 16:12
Чтение виртуальной памяти процесса Tambel Win Api 9 25.11.2013 12:58
Управление виртуальной памятью. Курсовая tuul_wq Помощь студентам 0 25.11.2012 20:44
Архитектура виртуальной памяти Vista alexabinsk Помощь студентам 0 25.06.2009 14:36
Проблемы с виртуальной памятью. DeKot Операционные системы общие вопросы 13 29.05.2009 11:10