大家都知道,在x86的平台上Windows作業系統為每個進程描述了一個完整的4G的地址空間,這4G空間由低位2G的用戶地址空間和高位2G的系統地址空間構成。每個進程的用戶地址空間是相互隔離的,不可見的。但是系統地址空間是各個進程間共享的,對於進程有不同的視圖。用戶的私有的數據代碼還有載入的動態程式庫(DLL)都存放在用戶地址空間中。現在有個問題是,總要有個地方記錄著這2G地址空間,到底那些被預留了,那些被提交了,那些被訪問了吧。還有個問題就是,對於程式來講,地址不是連續的,是分段的。代碼段、數據段、堆、棧等等。可是進程的空間是連續的,從0x0000000到0x7FFFFFF。總要有個數據結構描述程式的各個段對應那段地址空間。這兩個重要任務就交個了VAD,即虛擬地址描述符(Virtual Address Descriptor)。
基本介紹
- 中文名:虛擬地址描述符
- 節點代表:一段虛擬地址空間
- 英文名:Virtual Address Descriptor
- 組織方式特點:方便快速查找