寻址

简介: 大多数CPU都存在MMU专门对内存管理。通过MMU来管理物理内存。在linux中用分页使用内存(因为只有i386有分段单元,其他cpu体系没有 。很容易理解如果不启用分页,线性地址直接做物理地址),用虚拟地址寻址。 三大地址:逻辑地址,线性地址(虚拟),物理地址 逻辑地址就是程序用的地址 。mmu中有2种单元电路:segmentation unit和 paging unit。通过第一种单元

大多数CPU都存在MMU专门对内存管理。通过MMU来管理物理内存。在linux中用分页使用内存(因为只有i386有分段单元,其他cpu体系没有 。很容易理解如果不启用分页,线性地址直接做物理地址),用虚拟地址寻址。

三大地址:逻辑地址,线性地址(虚拟),物理地址

逻辑地址就是程序用的地址 。mmu中有2种单元电路:segmentation unit和 paging unit。通过第一种单元将逻辑地址转换成线性地址,再通过第二种单元将线性地址转换成物理地址。

逻辑地址由两部分组成:段标示符和偏移量。

线性地址被分成以固定长度为单位的组,称为页(page)

32为的线性地址分成3部分:Directory(目录 ,最高10位),table(页表,中间10位),offset(偏移量,最后12位)

线性地址0x20102654的地址转换

0010 0000 0001 0000 0010 0110 0101 0100

页目录索引 0010000000 =0x80 页表项索引 0100000010=0x102 偏移地址 011001010100=0x654

待续···

目录
相关文章
|
10月前
|
存储 索引
逻辑地址与物理地址的转换
最近一直在学8086,上课老师突然问了个这。对于问题“8086 CPU 能提供20位的地址信息,可直接对1M个存储单元进行访问,而CPU内部可用来提供地址信息的寄存器都是16位,那怎样用16位寄存器来实现20位地址寻址呢"明白了不少。
78 0
|
10月前
|
存储
物理地址和逻辑地址的
最近一直在学8086!对于问题“8086 CPU 能提供20位的地址信息,可直接对1M个存储单元进行访问,而CPU内部可用来提供地址信息的寄存器都是16位,那怎样用16位寄存器来实现20位地址寻址呢"明白了不少。
56 0
|
5月前
|
存储 Linux 程序员
x86的内存寻址方式
在16位的8086时代,CPU为了能寻址超过16位地址能表示的最大空间(因为 8086 的地址线 20 位而数据线 16 位),引入了段寄存器。通过将内存空间划分为若干个段(段寄存器像 ds、cs、ss 这些寄存器用于存放段基址),然后采用段基地址+段内偏移的方式访问内存,这样能访问1MB的内存空间了。
|
12月前
|
存储
逻辑地址和物理地址转换
逻辑地址和物理地址转换
|
7月前
|
存储
寄存器寻址和寄存器间接寻址的区别
寄存器寻址和寄存器间接寻址的区别
172 0
|
10月前
按字寻址和按字节寻址以及内存编码、地址总线与数据总线的理解
按字寻址和按字节寻址以及内存编码、地址总线与数据总线的理解
80 0
|
存储
逻辑地址转物理地址
若在一分页存储管理系统中,某作业的页表如表所示。已知页面大小为1024字节,试将逻辑地址1011,2148,3000,4000转换为相应的物理地址。
243 0
逻辑地址转物理地址
|
存储
数据寻址——堆栈寻址
数据寻址——堆栈寻址
367 0
数据寻址——堆栈寻址
|
程序员 C语言
数据寻址——偏移寻址
数据寻址——偏移寻址
496 0
数据寻址——偏移寻址
|
存储
指令系统——数据寻址
指令系统——数据寻址
152 0
指令系统——数据寻址