Virtual Address Descriptors
来源:互联网 发布:企业流水账记账软件 编辑:程序博客网 时间:2024/04/29 00:55
Virtual Address Descriptors
Virtual Address Descriptors
The memory manager uses a demand-paging algorithm to know when to load pages into memory, waiting until a thread references an address and incurs a page fault before retrieving the page from disk. Like copy-on-write, demand paging is a form of lazy evaluation—waiting to perform a task until it is required.
The memory manager uses lazy evaluation not only to bring pages into memory but also to construct the page tables required to describe new pages.Creating page tables for the entire range would be a wasted effort. Instead, the memory manager waits to create a page table until a thread incurs a page fault, and then it creates a page table for that page. This method significantly improves performance for processes that reserve and/or commit a lot of memory but access it sparsely.
Because the memory manager doesn't build page tables until the thread actually accesses the memory, it can't look to determine which virtual addresses are free. To solve this problem, the memory manager maintains another set of data structures to keep track of which virtual addresses have been reserved in the process's address space and which have not. These data structures are known as virtual address descriptors (VADs). For each process, the memory manager maintains a set of VADs that describes the status of the process's address space. VADs are structured as a self-balancing binary tree to make lookups efficient. A diagram of a VAD tree:
When a process reserves address space or maps a view of a section, the memory manager creates a VAD to store any information supplied by the allocation request, such as the range of addresses being reserved, whether the range will be shared or private, whether a child process can inherit the contents of the range, and the page protection applied to pages in the range.
When a thread first accesses an address, the memory manager must create a PTE for the page containing the address. To do so, it finds the VAD whose address range contains the accessed address and uses the information it finds to fill in the PTE. If the address falls outside the range covered by the VAD or in a range of addresses that are reserved but not committed, the memory manager knows that the thread didn't allocate the memory before attempting to use it and therefore generates an access violation
- Virtual Address Descriptors
- virtual address space
- Virtual Address Space (Windows)
- virtual address,logical address,physical address add linear address
- Differences between Physical Address and Virtual Address!
- Understand in physical address, Virtual address, logical address and linear address
- 驱动学习---PAE--virtual address to physics address
- PVASE Process Virtual Address Space Erasing
- Virtual address space for Linux process
- crash read error: kernel virtual address
- linux pfn, page, physical/virtual address
- Paging – Virtual to Physical address translation
- unable to handle kernel null pointer dereference at virtual address
- How a Virtual Address Space Is Partitioned on WINNT.
- 64位移植: Virtual Address Space in Windows 7
- Memory Layout (Virtual address space of a C process)
- Unable to handle kernel paging request at virtual address f600030a
- How to modify virtual address space in Windows
- 使用VMWare workstation tool 进行文件共享~~
- sql常用
- 套间
- 系出名门 Android 系列文章索引
- 我的人生目标
- Virtual Address Descriptors
- 不錯的幾個ICON搜尋網站推廌
- LDAP统一验证的理解
- VM Manager
- 在Google map中添加kml文件的注意点
- 这几天解决的几个问题
- 逆向com(2)---逆向atl
- 使用jquery操作iframe(转载)
- Lwuit精简解说