*56.段寄存器
分段式分區(qū)方式
為什么會有段寄存器的存在:
一開始的因特爾8086cpu的數(shù)據(jù)總線寬度和地址總線寬度不一致,數(shù)據(jù)總線較低位,地址總線寬度可以做到比較大。
地址總線我們知道,如果位數(shù)少,那尋址范圍就很小,所以會考慮比較大的地址總線寬度。
但是如果地址總線寬度大于數(shù)據(jù)總線會帶來一些麻煩,ALU(算數(shù)邏輯單元)無法在單個指令周期里完成對地址數(shù)據(jù)的運算。
就是地址太長,我沒法一次性算完。(類似于:讓一個小學生算高中生的數(shù)學題)
那么這個時候英特爾想出了一個解決辦法。
地址太長,那我就把地址弄短點。那怎么弄短呢?
段產(chǎn)生了,段寄存器就是。
在描述內(nèi)存分段時,需要有如下段的信息:
1.段的大小;2.段的起始地址;3.段的管理屬性(禁止寫入/禁止執(zhí)行/系統(tǒng)專用等)。
需要用8個字節(jié)(64位)存儲這些信息,但段寄存器只有16位,因此段寄存器中只能存儲段號(segment selector,也譯作“段選擇符”),再由段號映射到存在內(nèi)存中的GDT(global (segment) descriptor table,全局段號記錄表),讀取段的信息。
通俗說就是段寄存器太小,不能夠放很多信息,那么只能放一個段號,然后通過查表的方式讀取段的信息。
段寄存器分為四種邏輯段:
1.代碼段寄存器:CS
2.數(shù)據(jù)段寄存器:DS
3.堆棧段寄存器:SS
4.附加段寄存器:ES
總結
- 上一篇: 54.什么是页面?什么是块或物理块?
- 下一篇: *57.进程树