x86記憶體區段

维基百科,自由的百科全书
(重定向自記憶體區段
跳转至: 导航搜索

x86架構中,記憶體區段英语Memory Segmentation)是在不改變16位元區段選擇子之下,可以使用單一索引暫存器所能夠定址的的記憶體範圍部份。在80286處理器(或80386和之後處理器的虛擬86模式)的真實模式保護模式,一個區段的大小是64 KiB(使用16位元索引暫存器)。在32位元保護模式下,也就是在80386和後面系列的處理器中,一個區段是4 GB(由於索引暫存器是32位元)。

在16位元模式,要讓應用程式使用多個記憶體區段(為了存取比任一64K區段還要大的記憶體)是相當複雜,但是被視為除了最小的工具(可以使用較少記憶體完成)外的一種必要罪惡。這個問題的根源在於沒有適當的位址算術指令適合做整個記憶體範圍的平面定址方式來使用。因此平面定址方式可能以乘法的指令來完成,然而會導致較慢的程式執行速度。

在1990年末期,32位元作業系統的推出,以及更舒適的32位元平面記憶體模式幾乎消除了使用區段定址。然而,使用32位平面記憶體模式也產生最多只能访问4 GB地址空间的限制。區段允許作業系統限制每個行程虛擬定址空間,最大可利用到64 GB的系統記憶體,但這種勉強方式最終地回歸到區段,是進展到64位元處理器經常會引述的因素。

Intel x86真實模式下的區段架構會有所重疊,是一種不好的設計。