Re: Out Of Memory with Memory_limit [message #169865 is a reply to message #169847] |
Tue, 28 September 2010 23:51 |
rf
Messages: 19 Registered: September 2010
Karma:
|
Junior Member |
|
|
"Jerry Stuckle" <jstucklex(at)attglobal(dot)net> wrote in message
news:i7sjvm$jo5$2(at)news(dot)eternal-september(dot)org...
> On 9/28/2010 5:35 AM, rf wrote:
>> "Bernd Schulz"<ask_me_for_email(at)invalid(dot)invalid> wrote in message
>> news:4ca1af53$0$6773$9b4e6d93(at)newsspool3(dot)arcor-online(dot)net...
>>> Am 28.09.2010 01:09, schrieb rf:
>>>> >>
>>>> >> Do you have a hint?
>>>> > Maybe PHP can only access 2GB, cause it is 32Bit.
>>>>
>>>> A 32 bit address space is 4MB.
>>>>
>>> An when it is used signed, then 2GB.
>>
>> Addresses are not signed. 32 bits define a 4MB address space.
>>
>
> Not necessarily. It depends on how the value is set up. In Windows, it
> is a signed value and applications are limited to 2GB.
The 32 bit adress is *not* a signed value. It is unsigned and ranges from
0x00000000 to 0xffffffff.
Each process runs in a virtual address space of 4GB.
By default this 4GB is divided into two partitions, ont for use by the
process and the other reserved for use by the system.
By default the partitions are 2GB each. The lower 2GB (addresses 0x00000000
to 0x7fffffff) used by the process and the higher (addresses 0x80000000 to
0xffffffff) used by the system. Note the use of that high bit in the address
there, the one that, in a signed number, is the sign bit. In an address it
is *not* a sign bit.
However there is a facility called 4-Gigabyte Tuning. If this is enabled
then 3GB is available to the application and 1GB to the system.
http://msdn.microsoft.com/en-us/library/aa366912%28VS.85%29.aspx
Note that this is *not* a wikipedia page. It is a microsoft page. I would
think *they* know how their operating systems work.
>> However I was thinking about something else when I made my original post.
>> Of
>> the 4MB available in the virtual address space in which the application
>> runs
>> 2GB is allocated to the user space and 2GB is allocated to the kernel,
>> shared between all address spaces.
> Not true. Kernel runs in a different address space. The modules required
> to link between the kernel and the application come out of the application
> space.
The system (kernel and other things) do not run in a different address
space. The system is mapped into the upper half of every processes address
space. So we have the application in the lower 2GB of the address space and
the system in the upper 2GB.
If this were not so then how would the system be able to do things such as
fill the applications buffers. If the system were in a different address
space it, by definition, would not have access to anything in the
applications address space.
This time, Jerry, it is you who is wrong.
|
|
|