You mean u DABBLE at windows and Linux programming. If you were a real, serious coder. I would not have to explain this. Plus the way windows handles memory is virtually identical to Linux , Unix and OS X....they all MUST virtualize the main memory, and
they all must virtualize each proceeds. A real program would know all this, if they didn't, they couldn't code beyond a few VERY BASIC programs. The main difference between windows and unix mem management (Linux, OSX, etc) is the pagefile system
http://msdn.microsoft.com/en-us/library/windows/hardware/hh439648%28v=vs.85%29.aspx
is a GREAT resource. But again, you did not properly understand it. Give me a few mins to edit this post and I'll explain it
the text before the first diagram is 100% correct. This is explained my post above to the other guy how memory works,,, go read my post. Then re read the first part of the msdn page
the first picture
2 64bit apps using 4k pages being mapped into the system virtual address space:
Code must be contiguous and non fragmented - as far as a process is concerned.. And they ALWAYS are because their addresses and pages are VIRTUAL. When they get mapped to the system virtual address space (calling it SVAS from now on), they CAN be fragmented
as the processes don't know what's happening outside if their world
now on to the memory use of each app. The page says the apps use 4k (4kilobyes) each...
myapp has 2... It's using ONLY 8KB SVAS
notepad has 3 .... it's only using 12KB SVAS
The next part of text and pics talk about what I talked about above to the other guy. 4gb for 32bit (2gb usable)... And 128TB for a 64 bit app (8TB usable)....
the last talks about paged and non paged pools and have nothing to do with the above.. To a point...
its saying all user mode memory can be paged to disk.. This is all the code in the user mode areas of these little worlds
32bit. Anything in the first 2gb of the virtual space
32bit large address aware... Anything in the first 4Gb
64bit anything in the first 8TB
niw that's dealing with PROCESS ADRESS SPACE...almost all process adress space will end up in the paged pool of SVAS... UNLESSS :) ... And the article doesn't say this,,, the process itself requests that certain pages map to the SVAS non paged pool...OR
a user (or account) with proper permissions has the lock pages in memory permissions
VERY little data ends up in the non paged pool. Too much there and it can't be paged to disk, and yOU HAVE MAJOR ISSUES :). Mostly the non paged pool are drivers, parts of the os kernel, and stuff that's essential to respond fast. You can edit the registry
(search for disablepagingexecutive). If set to 1, the entire kernel can NEVER be paged. It increases performance on systems with 16+GB ram. If set to 1 on systems with less ram, and no or small pagefiles, you can run out of memory as the kernel can be 5MB
or as big as 3GB at times.
Actualy it IS a big deal I've coded for over 20yrs. I've learned all this...been to school for it.. Taken continuing education. I use it every day. I don't need to look at those pages you do
thats the problem... Ppl look at tech write ups, interpret them wrong, then spread that misinformation. I'm not trying to be a jerk just to be in the "right" vs "wrong". I post on forums like this to fix misinformation. Usually I get flamed, yelled at, etc
for a few days, then, most ppl get it..and some can't be helped
i CAN help you with your out if memory issue if u will let me even if it us an intel bug driver, I can help you configure your system so you can use it despite the leak...unless..if the leak is into the non paged pool area, you're screwed as it can't be
paged to disk ... Only options then:
find a driver that doesn't leak
go back to win 7 or 8 where the driver works
..... Or brung your system up to 16-32gb ram if it supports it
but even then yiu could STILL get an out of memory error.
If a driver, or process is 32bit and leaks, it can only adress 2gb of its virtual adress space. If that runs out , you get an error and just that driver or process crashes. If it's a system critical driver...then the OS can go down, but in a 64bit os, you
need 64bit drivers (for the most part)
This is what REALLY confuses ppl on 32bit OSes with. 4gb ram and even 64bit OSes. They run a 32bit app... That app either has a leak or is poorly coded and doesn't monitor it's memory use. The instant it tries to use more than 2gb, boom, out of mem error
...and the user is baffled. They have 4,8,16,32, or 64gb ram... How can they be out? :) they aren't they ran a non large address aware, 32bit program that tried to use more than 2gb memory
Everquest 2 had this issue for years.... Set everything to max,and in 5-10mins.. Out of memory. I begged sony to recompile it with the large address aware switch so people 32bit. Windows using the /3gb switch could use 3gb for the game. Unfortunately doing
that crashed 32bit windows as drivers expected to have 2gb.. And now had 1....on 64bit windows a 32bit app can use a full 4gb... So once Sony made that change, ppl with 64bit win could turn on every game option.