Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выделение памяти для приложения 
:(
    Опции темы
yngwie19
Дата 23.3.2009, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 15.6.2008
Где: Новгород

Репутация: нет
Всего: нет



Всем привет. Меня интересует следующий вопрос. Много читал про то как организована память, и понял что пока это для меня очень сложно. Поэтому хочу у Вас спросить. Правда ли что при запуске программы, ей выделяется 4 Гб виртуальной оперативной памяти? если нет то объясните тогда сколько, а если да, то что делать если на компе установлен всего 1 Гб оперативки (или тут еще учавствует и пямять винчестера?) 
PM MAIL   Вверх
Anikmar
Дата 23.3.2009, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



yngwie19, Виртуальная память - это и есть использование винчестера - на то она и виртуальная
PM MAIL ICQ   Вверх
Lazin
Дата 23.3.2009, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



Цитата(Anikmar @  23.3.2009,  12:22 Найти цитируемый пост)
yngwie19, Виртуальная память - это и есть использование винчестера - на то она и виртуальная

i lol'd
PM MAIL Skype GTalk   Вверх
Anikmar
Дата 23.3.2009, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Lazin, А здесь что не так сказал?  smile 
PM MAIL ICQ   Вверх
Lazin
Дата 23.3.2009, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



Виртуальная память, это такой способ адресации, при котором, адрес участка памяти не зависит от того, где находятся данные, на диске или в оперативной памяти smile 
PM MAIL Skype GTalk   Вверх
Anikmar
Дата 23.3.2009, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



А я как сказал? Если нет винчестера (внешнего носителя) - виртуальная память теряет смысл - так как любая страница отображается только на реальную память и виртуальности никакой по сути нет.


PM MAIL ICQ   Вверх
Lazin
Дата 23.3.2009, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



ну почему-же, многие области памяти(физ) могут быть просто временно освобождены, даже если нет своп файла
PM MAIL Skype GTalk   Вверх
Anikmar
Дата 23.3.2009, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Цитата

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


И откуда они восстановятся когда понадобятся?
Я создал объекты, некоторое время они не нужны - система свопит эти страницы на диск и ждет когда я к ним обращусь. Когда я к ним обращаюсь - система их восстанавливает.
А если диска нет, как это она их освободит?!  smile  А объекты мои куда денет?
PM MAIL ICQ   Вверх
vinick
Дата 23.3.2009, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 9.6.2005

Репутация: 3
Всего: 22



Цитата(yngwie19 @  23.3.2009,  11:58 Найти цитируемый пост)
Правда ли что при запуске программы, ей выделяется 4 Гб виртуальной оперативной памяти? если нет то объясните тогда сколько, а если да, то что делать если на компе установлен всего 1 Гб оперативки (или тут еще учавствует и пямять винчестера?)  

Во первых не 4 гб. На 64-битных системах гораздо больше, а на 32-битных не стоит рассчитывать больше чем на 3 гб (около 1 гига система резервирует для себя). 
Теперь когда ты делаешь new  или malloc, то система резервирует для тебя виртуальные адреса. Можно иметь на машине 32 мб оперативки а попросить у malloc 3 гига и тебе их дадут. Но как только ты начнешь читать/писать в этот массив, ОС начнет отображать виртуальные адреса на физическую память( RAM + swap) и если физической памяти недостаточно, то приложение получит привет от операционки. 
Если на машине установлено всего 1 гб оперативки, а хочется использовать больше, то можно создать достаточно большой своп, в этом случае ОС будет сбрасывать на диск неиспользуемые области памяти, но это очень сильно затормозит работу приложения и такого эффекта лучше избегать.
PM MAIL ICQ Jabber   Вверх
GoldFinch
Дата 23.3.2009, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



Anikmar, виртуальная память прекрасно работает и без каких либо внешних накопителей типа ЖД
это механизм проца и к ЖД он никакого отношения не имеет.
если данные негде хранить кроме как в ОЗУ, они нигде больше и не хранятся

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

Добавлено @ 12:59
в win32 юзермодному процессу доступно 2Гб

3 гига malloc'ом не выделить, 2.1 тоже, что характерно и 1.9 тоже не всегда

Это сообщение отредактировал(а) GoldFinch - 23.3.2009, 13:01
PM MAIL ICQ   Вверх
Lazin
Дата 23.3.2009, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



Цитата(Anikmar @  23.3.2009,  12:44 Найти цитируемый пост)
И откуда они восстановятся когда понадобятся?
Я создал объекты, некоторое время они не нужны - система свопит эти страницы на диск и ждет когда я к ним обращусь. Когда я к ним обращаюсь - система их восстанавливает.
А если диска нет, как это она их освободит?!    А объекты мои куда денет? 

а причем тут твои объекты, я имел ввиду исполняемый код, он же тоже загружается по каким-то виртуальным адресам
PM MAIL Skype GTalk   Вверх
Anikmar
Дата 23.3.2009, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Цитата

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


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

Так что я не прав в формулировках.
PM MAIL ICQ   Вверх
GoldFinch
Дата 23.3.2009, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



Anikmar, самый низкий уровень это интересно что?
вы неповерите, но виртуальная память прекрасно работает и без свопа, пример тому -  LiveCD и загрузка ОС по сети,
а если физической памяти много, то кому нужен этот своп?
PM MAIL ICQ   Вверх
Anikmar
Дата 23.3.2009, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Цитата

GoldFinch
Anikmar, самый низкий уровень это интересно что?
вы неповерите, но виртуальная память прекрасно работает и без свопа, пример тому -  LiveCD и загрузка ОС по сети,
а если физической памяти много, то кому нужен этот своп? 


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

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

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



PM MAIL ICQ   Вверх
yngwie19
Дата 23.3.2009, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 15.6.2008
Где: Новгород

Репутация: нет
Всего: нет



Из всего вышесказанного Я понял следующее, что выртуальная память эта некий диапазон физически не существующих адресов, которые предоставляются приложению для хранения како-го либо объема информации (данных,кода и т.д). При запуске приложения выделятся диапазон адресов объемом (на 32-битных системах) около 3 Гб (1 Гб из которых отдается операционке, значит приложению доступно всего около 2 Гб ). Даннй объем виртуальной пямяти достигается за счет пямяти ОЗУ + файла подкачки, (т.е как Я понимаю участие HDD здесь реализовано только за счет определения файла подкачки). Поправьие что не так?
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0603 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.