寻址

简介: 大多数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

待续···

目录
相关文章
|
2月前
|
存储 缓存 网络协议
|
存储 索引
逻辑地址与物理地址的转换
最近一直在学8086,上课老师突然问了个这。对于问题“8086 CPU 能提供20位的地址信息,可直接对1M个存储单元进行访问,而CPU内部可用来提供地址信息的寄存器都是16位,那怎样用16位寄存器来实现20位地址寻址呢"明白了不少。
160 0
|
存储
物理地址和逻辑地址的
最近一直在学8086!对于问题“8086 CPU 能提供20位的地址信息,可直接对1M个存储单元进行访问,而CPU内部可用来提供地址信息的寄存器都是16位,那怎样用16位寄存器来实现20位地址寻址呢"明白了不少。
115 0
|
存储
逻辑地址和物理地址转换
逻辑地址和物理地址转换
|
7月前
|
存储 Linux 程序员
x86的内存寻址方式
在16位的8086时代,CPU为了能寻址超过16位地址能表示的最大空间(因为 8086 的地址线 20 位而数据线 16 位),引入了段寄存器。通过将内存空间划分为若干个段(段寄存器像 ds、cs、ss 这些寄存器用于存放段基址),然后采用段基地址+段内偏移的方式访问内存,这样能访问1MB的内存空间了。
按字寻址和按字节寻址以及内存编码、地址总线与数据总线的理解
按字寻址和按字节寻址以及内存编码、地址总线与数据总线的理解
195 0
|
存储
逻辑地址转物理地址
若在一分页存储管理系统中,某作业的页表如表所示。已知页面大小为1024字节,试将逻辑地址1011,2148,3000,4000转换为相应的物理地址。
387 0
逻辑地址转物理地址
|
vr&ar
8086 寻址方式(一)CPU和主存中的寻址方式
     通常,一条带有操作数的指令要指明两个问题:一是进行什么操作,二是用什么方式寻找操作数的存放地址。我们将寻找操作数存放的地址的方式成为寻址方式。当一条指令带中有多个操作数时,每个操作数的寻址方式可能不同,因此,寻址方式是针对指令中指定的操作数(源操作数或者是目的操作数)而言的。
1713 0
|
程序员 C语言
数据寻址——偏移寻址
数据寻址——偏移寻址
698 0
数据寻址——偏移寻址
|
存储
数据寻址——堆栈寻址
数据寻址——堆栈寻址
502 0
数据寻址——堆栈寻址