Максимальный размер оперативной памяти.

SawavsOlja

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

sirius

Этот файл ограничен по размеру, или может быть любым?
Он обычно ограничивается в "Свойствах системы".
Либо вообще отключаешь, либо задаёшь макс. размер, либо "на усмотрение системы".
Имхо теоретически может занимать весь диск.

durka82

Ну на фат32 наверное ограничение в 2Гб будет действовать?..

yroslavasako

Имхо теоретически может занимать весь диск.
хм, а разве адресуемое пространство у нас ничем не ограничено? Мне вот тут недавно рассказывали, что 32битную XP больше 4 гигов оперативы не засунешь.
Мой совет: делай файл подкачки 50-70% от размера оперативы. Тогда просто физически винда не сможет засунуть всю память в своп, как она любит делать. Хотя под виндой свап лучше не юзать, потому что
1) Он криво реализован, у него неоптимальная политика управления, винда юзает своп, даже когда ей хватает опертивы.
2) У винды кривой тормозной io_sheduler, который плохо приспособлен к постоянной работе файла подкачки, привелегии в винду тоже реализованы странно, иногда пользовательский процесс при активной работе с диском блокирует (сильно замедляет) работу свопа

durka82

Мой совет: делай файл подкачки 50-70% от размера оперативы.

В такой ситуации скорее всего можно обойтись вообще без свопа.

dgaf

>32битную XP больше 4 гигов оперативы не засунешь.
меньше, от 3.0 до ~3.8-3.9, но речь про ОЗУ
на своп это не распространяется.
32бит - это ограничение архитектуры, распространяется на физич. адреса.
а в VM ОС видать может делать и шире адресацию
напишите кто знает

sirius

Почему 2, разве не 4 ?

sirius

хм, а разве адресуемое пространство у нас ничем не ограничено? Мне вот тут недавно рассказывали, что 32битную XP больше 4 гигов оперативы не засунешь.

Ну и что? Это ж не оператива.

yroslavasako

а в VM ОС видать может делать и шире адресацию
напишите кто знает
может делать - это да, вопрос в том, делает ли. Линукс, я знаю, делает. А для винды не проверял никогда.
P.S. все равно больше 4 гигов на нос (процесс) не получишь.

dgaf

>больше 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

hoha32

под w2k3 x86
это известный прикол с ней - РАЕ включён, вот и оперативки много видно

dgaf

хм, 4Г ОЗУ оно видит не полностью
хм, опять не то?:
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)

SPARTAK3959

WinXP не поддерживает PAE что ли? Если поддерживает, то можно до 64Gb памяти ставить. А 4Gb полностью увидеть нельзя из-за отображения адресов памяти на устройства.

hoha32

WinXP не поддерживает PAE что ли?
Начиная с СП2 - нет %)

geja_03

Нет, она поддерживает, но не реализует для совместимости с кривыми драйверами

hoha32

Это одно и то же, с практической точки зрения.

geja_03

Это смотря какая у тя практика...

Andbar

>больше 4 гигов на нос (процесс) не получишь.
2Г в x86
хрюша не поддерживает /3Gb ?

hoha32

это ваще не из той оперы

geja_03

Это как раз к подходит к этой опере, либо опера бред чистой воды...

Andbar

это ваще не из той оперы
Почему это? Неполные первые два гига - адреса, которые может выделить процесс в Win32 (PAE не рассматриваем). Всё, что выше - зарезервировано системой. При указании /3Gb в boot.ini, верхняя планка поднимается до 3х гигов.
Естественно, к физической памяти эта опция не имеет никакого отношения.
зы: http://msdn2.microsoft.com/en-us/library/ms791558.aspx

hoha32

угу, уже сам нашёл

kruzer25

32бит - это ограничение архитектуры, распространяется на физич. адреса.
а в VM ОС видать может делать и шире адресацию
Указатели ведь все тоже будут 32битные?
Допустим, у меня в одном процессе массив из полумиллиарда 32битных интов, в другом, в третьем... а указатели-то на каждый из этих интов 32битные - значит, на какие-то разные инты будут одни и те же указатели?

agaaaa

Это ограничение архитектуры распространяется на логическое адресное пространство одного процесса.
Чтобы получить доступ к остальным данным, надо применять не плоское адресное пространство.

kruzer25

В винде ведь один процесс может залезть в память другого процесса?
Помню, писал код на паскале вроде
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.

который распечатывал всю оперативную память :D

SawavsOlja

Ваша беседа столь учёна, что я, признаться, мало что понял. Скажите, если у меня Windows XP c 1GB ОЗУ, а мне надо загрузить данных на 10Gb в программу, это возможно?

smit1

а мне надо загрузить данных на 10Gb в программу, это возможно?
Зависит от того, что значит "загрузить" :-)

Andbar

В винде ведь один процесс может залезть в память другого процесса?
через ReadProcessMemory/WriteProcessMemory

kruzer25

А как насчёт моего примера с паскалем?
Это же винда, это вам не сингулярити...

Dasar

у каждой программы своя память.
соответственно мы можем иметь хоть 100 программ, где у каждой программы будут свои 4гб памяти

Andbar

А как насчёт моего примера с паскалем?
в турбопаскале есть встроенный массив mem.
Мы так в своё время заставляли 98ю винду глючить (вплоть до падения):

var i: integer;
begin
randomize;
for i:=1 to 256 do
mem[random(65535):random(65535)]:=random(256);
end.

kruzer25

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

Andbar

Почему тогда, если отключены варнинги - при вылезании за границу массива я попадаю в другой процесс?
Под Win32 ты не попадёшь в другой процесс таким образом, а просто вылетишь с Access Violation

lurgi48

Мы так в своё время заставляли 98ю винду глючить (вплоть до падения):
мес особо нравилось обнулять первые 256 байт винды, безотказно умирала

Andbar

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

dgaf

а весь VM в х86 должен быть больше 2^32? хотя бы для случая с PAE

ermsoft

100 не можем, PAE не больше 64Гб может адресовать, вроде.

agaaaa

Самое доходчивое объяснение, имхо.
PAE лишь позволяет ОС эти 4ГБ процессы раскидывать по 64ГБ оперативки. Остальное неизбежно будет откачано в swap.

family

Если приложение поддерживает AWE, оно сможет работать более чем с 2-мя(3-мя) гигабайтами.
Оставить комментарий
Имя или ник:
Комментарий: