分段内存模式

C/C++ 2013年09月15日 ,

8086CPU有20根地址线,最大可寻址内存空间为1MB。而8086的寄存器只有16位,指令指针(IP)和变址寄存器(SI、DI)也是16位的。用16位的地址寻址1MB空间是不可能的。所以就要把内存分段,也就是把1MB空间分为若干个段,每段不超过64KB,在8086中设置4个16位的段寄存器,用于管理4种段:CS是代码段,DS是数据段,SS是堆栈段,ES是附加段。
把内存分段后,每一个段就有一个段基址,段寄存器保存的就是这个段基址的高16位,这个16位的地址左移四位(后面加上4个0)就可构成20位的段基址。
内存是分成四种段,这是考虑到程序执行时需要的四个部分。但是,内存不止四个段,只是同时最多只有四个段在工作,其他的在“睡眠”,需要时再“唤醒”。
内存分段后,内存的地址(又称物理地址)就由两部分组成:段地址和段内偏移地址,段寄存器管理的是段地址。

转载请注明,本文地址:http://furzoom.com/segmented-memory/

如无特别说明,本站文章皆为原创,若要转载,务必请注明以下原文信息:
日志标题:《分段内存模式》
日志链接:http://furzoom.com/segmented-memory/
博客名称:枫竹梦

发表评论

插入图片

NOTICE1:请申请gravatar头像,没有头像的评论可能不会被回复!

回到顶部