Может ли процесс, работающий с 32-битным скомпилированным двоичным файлом, использовать более 4 ГБ памяти? - PullRequest
3 голосов
/ 25 июля 2010

Возможно ли, чтобы один процесс, выполняющий 32-битную скомпилированную версию python в Snow Leopard (64-битная машина), мог потреблять более 4 ГБ (скажем, 5,4 ГБ) виртуальной памяти, как видно из верхней команды?

Я сделал file ...python, чтобы увидеть, что бинарный файл не был x86, но, похоже, он занимал более 5 ГБ памяти.

Я предполагаю, что используемые библиотеки (RPy) представляли собой «mmap» фрагменты данных, а кэш-память в памяти появлялась под объемом памяти моего процесса.

Иливозможно я не проверял, что двоичные файлы Python были 32-битными.Или, может быть, происходит какое-то 32-битное / 64-битное соединение (libffi?).

Совершенно смущен.

Ответы [ 2 ]

2 голосов
/ 25 июля 2010

Нет, это физически невозможно.Это не мешает ОС назначать больше, чем она может использовать из-за выравнивания и фрагментации, скажем, она может иметь целую страницу и не отображать ее целикомОднако фактически невозможно использовать более 4 ГБ для любого процесса, и, скорее всего, существенно меньше, чем для пространства ядра.

0 голосов
/ 28 июля 2010

Это возможно , если процессы используют какие-то безумные длинные / дальние / расширенные указатели и отображают данные в 32-разрядное адресное пространство и из него так, как это необходимо, но на данный момент это вряд лив любом случае считается 32-разрядным.(Python определенно делает , а не делает это, поэтому ответ @ DeadMG почти наверняка состоит в том, что на самом деле происходит.)

...