Максимальный размер оперативной памяти.
Этот файл ограничен по размеру, или может быть любым?Он обычно ограничивается в "Свойствах системы".
Либо вообще отключаешь, либо задаёшь макс. размер, либо "на усмотрение системы".
Имхо теоретически может занимать весь диск.
Ну на фат32 наверное ограничение в 2Гб будет действовать?..
Имхо теоретически может занимать весь диск.хм, а разве адресуемое пространство у нас ничем не ограничено? Мне вот тут недавно рассказывали, что 32битную XP больше 4 гигов оперативы не засунешь.
Мой совет: делай файл подкачки 50-70% от размера оперативы. Тогда просто физически винда не сможет засунуть всю память в своп, как она любит делать. Хотя под виндой свап лучше не юзать, потому что
1) Он криво реализован, у него неоптимальная политика управления, винда юзает своп, даже когда ей хватает опертивы.
2) У винды кривой тормозной io_sheduler, который плохо приспособлен к постоянной работе файла подкачки, привелегии в винду тоже реализованы странно, иногда пользовательский процесс при активной работе с диском блокирует (сильно замедляет) работу свопа
Мой совет: делай файл подкачки 50-70% от размера оперативы.
В такой ситуации скорее всего можно обойтись вообще без свопа.
меньше, от 3.0 до ~3.8-3.9, но речь про ОЗУ
на своп это не распространяется.
32бит - это ограничение архитектуры, распространяется на физич. адреса.
а в VM ОС видать может делать и шире адресацию
напишите кто знает
Почему 2, разве не 4 ?
хм, а разве адресуемое пространство у нас ничем не ограничено? Мне вот тут недавно рассказывали, что 32битную XP больше 4 гигов оперативы не засунешь.
Ну и что? Это ж не оператива.
а в VM ОС видать может делать и шире адресациюможет делать - это да, вопрос в том, делает ли. Линукс, я знаю, делает. А для винды не проверял никогда.
напишите кто знает
P.S. все равно больше 4 гигов на нос (процесс) не получишь.
2Г в x86
делает, счас заглянул на машинку с 4Г озу + 6г свап под w2k3 x86
хм, интересно, что это значит
page_32.h
16 #ifdef CONFIG_X86_PAE
17 #define __PHYSICAL_MASK_SHIFT 36
18 #define __VIRTUAL_MASK_SHIFT 32
19 #define PAGETABLE_LEVELS 3
37 #else /* !CONFIG_X86_PAE */
38 #define __PHYSICAL_MASK_SHIFT 32
39 #define __VIRTUAL_MASK_SHIFT 32
40 #define PAGETABLE_LEVELS 2
под w2k3 x86это известный прикол с ней - РАЕ включён, вот и оперативки много видно
хм, опять не то?:
x86_32
unsigned long __FIXADDR_TOP = 0xfffff000;
#define FIXADDR_TOP unsigned long)__FIXADDR_TOP)
#define FIXADDR_BOOT_START (FIXADDR_TOP - __FIXADDR_BOOT_SIZE)
#define PKMAP_BASE FIXADDR_BOOT_START - PAGE_SIZE*(LAST_PKMAP + 1 & PMD_MASK)
# define VMALLOC_END (PKMAP_BASE-2*PAGE_SIZE)
WinXP не поддерживает PAE что ли? Если поддерживает, то можно до 64Gb памяти ставить. А 4Gb полностью увидеть нельзя из-за отображения адресов памяти на устройства.
WinXP не поддерживает PAE что ли?Начиная с СП2 - нет %)
Нет, она поддерживает, но не реализует для совместимости с кривыми драйверами
Это одно и то же, с практической точки зрения.
Это смотря какая у тя практика...
>больше 4 гигов на нос (процесс) не получишь.хрюша не поддерживает /3Gb ?
2Г в x86
это ваще не из той оперы
Это как раз к подходит к этой опере, либо опера бред чистой воды...
это ваще не из той оперыПочему это? Неполные первые два гига - адреса, которые может выделить процесс в Win32 (PAE не рассматриваем). Всё, что выше - зарезервировано системой. При указании /3Gb в boot.ini, верхняя планка поднимается до 3х гигов.
Естественно, к физической памяти эта опция не имеет никакого отношения.
зы: http://msdn2.microsoft.com/en-us/library/ms791558.aspx
угу, уже сам нашёл
32бит - это ограничение архитектуры, распространяется на физич. адреса.Указатели ведь все тоже будут 32битные?
а в VM ОС видать может делать и шире адресацию
Допустим, у меня в одном процессе массив из полумиллиарда 32битных интов, в другом, в третьем... а указатели-то на каждый из этих интов 32битные - значит, на какие-то разные инты будут одни и те же указатели?
Чтобы получить доступ к остальным данным, надо применять не плоское адресное пространство.
Помню, писал код на паскале вроде
var test:int[1..1];
var i:int;
begin
for(i:=1;i<1000000;i:=i+1) do begin
printf('%c',test[i]);
end;
end.
который распечатывал всю оперативную память
Ваша беседа столь учёна, что я, признаться, мало что понял. Скажите, если у меня Windows XP c 1GB ОЗУ, а мне надо загрузить данных на 10Gb в программу, это возможно?
а мне надо загрузить данных на 10Gb в программу, это возможно?Зависит от того, что значит "загрузить" :-)
В винде ведь один процесс может залезть в память другого процесса?через ReadProcessMemory/WriteProcessMemory
Это же винда, это вам не сингулярити...
соответственно мы можем иметь хоть 100 программ, где у каждой программы будут свои 4гб памяти
А как насчёт моего примера с паскалем?в турбопаскале есть встроенный массив mem.
Мы так в своё время заставляли 98ю винду глючить (вплоть до падения):
var i: integer;
begin
randomize;
for i:=1 to 256 do
mem[random(65535):random(65535)]:=random(256);
end.
у каждой программы своя память.А что ты скажешь про мой пример?
Почему тогда, если отключены варнинги - при вылезании за границу массива я попадаю в другой процесс?
Почему тогда, если отключены варнинги - при вылезании за границу массива я попадаю в другой процесс?Под Win32 ты не попадёшь в другой процесс таким образом, а просто вылетишь с Access Violation
Мы так в своё время заставляли 98ю винду глючить (вплоть до падения):мес особо нравилось обнулять первые 256 байт винды, безотказно умирала
мес особо нравилось обнулять первые 256 байт винды, безотказно умиралагм... под вмварей убить не получилось
а весь VM в х86 должен быть больше 2^32? хотя бы для случая с PAE
100 не можем, PAE не больше 64Гб может адресовать, вроде.
PAE лишь позволяет ОС эти 4ГБ процессы раскидывать по 64ГБ оперативки. Остальное неизбежно будет откачано в swap.
Если приложение поддерживает AWE, оно сможет работать более чем с 2-мя(3-мя) гигабайтами.
Оставить комментарий
SawavsOlja
Если физической памяти не хватает, то используется файл подкачки. Этот файл ограничен по размеру, или может быть любым?