内存系统为什么要分段
来源:互联网 发布:win7端口在哪里打开 编辑:程序博客网 时间:2024/05/23 14:06
内存按访问的方式来看,就像长方形的带子,地址依次升高。内存是一个随机读写设备,即可以访问内部任何一处,不需要从头开始找,只要直接给出地址即可,如访问内存0xc00,只要将该地址写入地址总线便可,而分段是内存访问的机制,是给CPU用的访问内存的方式,只有CPU才会关注段,那为什么CPU要关注段呢,原因如下:
编译器在编译程序时,肯定要根据CPU访问内存的规则将代码编译成机器指令,这样编译出来的程序才能在该CPU上运行,所以说,在直接以绝对物理地址访问内存的CPU上运行程序,该程序中指令也必须得是物理地址,若加载程序运行,不管是内核程序还是用户程序,程序中地址若是绝对物理地址,那么该程序必须放在内存中的固定地方,于是两个编译出来地址相同的用户程序肯定没法同时运行,于是伟大的计算机前辈们就想出了这样一个方式,让CPU采用“段基址+段内偏移地址”的方式来访问任意内存,这样的好处就是程序可以重定位了,尽管程序中指令给的是绝对物理地址,但可以运行多个程序了。
重定位就是将程序中的指令的地址改写成另外一个地址,但该地址处的内容还是原地址处的内容。
CPU采用“段基址+段内偏移地址”的形式访问内存,就需要专门提供段基址寄存器,这些是cs,ds,es等,程序中需要哪块内存,只需要先加载合适的段到段基址寄存器中,再给出相应的偏移地址即可,CPU会将这两个地址相加后的结果用于内存访问,送上地址总线。
阅读全文
0 0
- 内存系统为什么要分段
- 为什么要分段提交?
- 内存为什么要分段? 分成多少种段? 段与段寄存器的区别?
- 内存分段
- 内存分页与分段
- 内存分页与分段
- 内存分段(笔记)
- linux 内存分段机制
- 操作系统内存分段机制
- 内存分段管理机制
- 内存寻址一(分段)
- C语言内存分段
- 8086内存分段理解
- 内存管理、分段、分页
- 【操作系统】内存分段技术
- linux进程内存分段
- 内存为什么要分页???
- 为什么要内存对齐
- 计算机中的“类”的说法
- Windows7 Ubuntu14.04 双系统的卸载及重装
- 我使用过的Linux命令之unrar
- Shape Context算法及其实现
- Libevent源码分析-----TAILQ_QUEUE队列
- 内存系统为什么要分段
- python 的多进程编程
- concurrent复合操作问题
- JS调试的一些小技巧
- hdu-1372 Knight Moves
- HTTP中get和post的区别
- 面向对象
- 二叉树遍历非递归实现
- JNI里面处理 C和java字符串互相转换