M4RCKUS Posted November 13, 2009 Posted November 13, 2009 (edited) I'm very confused about one thing in Windows memory architecture. Thought someone here could help me out.The Virtual Address space (numbering) is unique to every process, right? I.E. application "A" can have some data structure at address 0x12345678, while another completely different application "B" can have completely different data structure at same address 0x12345678. Correct me if this is wrong. Now, assuming this, why is that virtual address space is split into partitions like from 0x00010000 to 0x7FFEFFFF for user mode applications and from 0x80000000 to 0xFFFFFFFF for kernel-mode apps. Why can't user-mode app take the "higher" part of address space if the space numbering is unique to it? For example, user-mode app "X" could use address 0xBBCCDDEE for it's data and kernel-mode app could use same address (0xBBCCDDEE) for it's own different kernel data. I believe one process can not simultaneously have user-mode and kernel-mode code, right? I have absolutely no knowledge about kernel-mode stuff so this might be very n00b question and please enlighten me.Thanks in advance! Edited November 13, 2009 by M4RCKUS
kao Posted November 13, 2009 Posted November 13, 2009 Short answer, quoting a quite nice blog post:"User Mode Memory is the address space where all nonsystem (kernel) processes and applications run. Each process has its own virtual memory address space up to the maximum allowable on the OS Architecture. If you have 10 user mode process running on a 32bit windows system each will have its own 2GB address space Kernel Memory, unlike the User Mode Address space, shares the same address space (2GB by default on a 32bit system), and all kernel allocations share the same memory space." (emphasis mine)If you want to get a longer answer, read the complete series of posts here: http://www.ravenreport.com/blog/post/Windows-Memory-Architecture-Part-1.aspxCheers,kao.
atom0s Posted November 14, 2009 Posted November 14, 2009 Heres some other info about the memory management in Windows:Virtual-Memory Manager (Windows NT):/>http://msdn.microsoft.com/en-us/library/ms810616.aspxMemory Management (What ever driver writer needs to know.):/>http://www.microsoft.com/whdc/driver/kernel/mem-mgmt.mspx - .doc download on the right.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now