Cum este partitionat spatiul de adrese a unui proces?
Raspuns
Se stie ca spatiul total de memorie virtuala a unui process este de 4GB petru sisteme pe 32 biti si 16EB pentru sisteme pe 64 biti.
Pentru sistemele Windows din platforma NT (Windows NT4.0... Windows 7), acest spatiu se imparte in urmatoarele zone (partitii):
- NULL-Pointer Assignment - zona rezervata; orice incercare de a accesa aceasta zona din aplicatie se soldeaza cu "access violation".
- User-Mode - zona accesibila procesului; aici se afla zona de adrese private (unshared) a procesului; de asemenea aici se incarca executabilul si DLL-urile (incluzand kernel32.dll, user32.dll, gdi32.dll si advapi32.dll) si tot aici se mapeaza memory-mapped files.
- 64−KB Off−Limits - zona rezervata; este similara cu prima partitie; orice incercare de a accesa aceasta zona din aplicatie se soldeaza cu "access violation".
- Kernel-Mode - zona rezervata; este partitia sistemului de operare si contine Windows NT Executive, Kernel-ul si device drivers; orice incercare de a accesa aceasta zona din aplicatie se soldeaza cu "access violation".
Locatia si marimea acestor partitii depinde de sistemul de operare si de arhitectura microprocesorului asa cum este ilustrat in tabelele de mai jos.
Note
- Pentru sistemele Windows din platforma 9x, partitionarea este diferita de cea pentru platforma NT si nu a fost prezentata aici.
- [WinAPI] Care este spatiul virtual de adrese a unui proces?
- [WinAPI] Ce spatiu de adrese este accesibil unui process?
<< Back to Windows API Index