`
逸清河
  • 浏览: 10875 次
社区版块
存档分类
最新评论

80x86逻辑地址到线性地址的转换

阅读更多
先梳理一下概念:

逻辑地址是由16位的段选择符和32位的偏移量组成;

段选择符是有13为的index,1位TI,2位RPL组成;

段选择符存在CPU的段寄存器中;

段描述符放在全局描述符标GDT或者局部描述符LDT中;

段描述符是8字节64位,里面有Base字段是该段的首字节的线性地址;

(notice)段描述符原始是存在GDT 或者 LDT中的,但是80x86处理器提供了一组非编程的CPU寄存器来存储该对应的段描述符。(这样就能每次不用访问主存中的GDT,只要CPU中的段寄存器的内容没有发生改变,可以直接从CPU的寄存器中直接获取段描述符,达到快速访问)

GDT的在主存中的首地址放在gdtr控制寄存器中;

LDT的在主存中的首地址放在ldtr控制寄存器中;

逻辑地址到线性地址的转换过程:
逻辑地址中的段选择符的13为index*8(因为是段描述符是8字节,现在是计算他的地址所以*8)+gdtr寄存器(或者ldtr寄存器)中的GDT(或者LDT)【由段选择符的TI位决定】的首地址,得到在GDT(LDT)中的段描述符;
段描述符的Base+逻辑地址的32位偏移量得到该逻辑地址对应的线性地址。

每个进程的逻辑地址的区别:

分段给每个进程分配其能访问的线性地址的范围,而这个会记录在给进程的GDT中的段描述符中的Base字段跟Limit字段

进程间的逻辑地址的区别是前面16位的段选择符不一样,这个是由操作系统分配给他们的,后面的32位偏移量是没有进程的区别概念的,它就是一个简单的偏移量而已,最终觉得如何将逻辑地址转换为线性地址还是主要靠段选择符的13为index跟1位TI以及段描述符中的Base字段决定,当然肯定是会加上没有进程意义的32位偏移量。
分享到:
评论

相关推荐

    80x86 保护运行模式

    80x86的内存管理采用分段和分页两步转换逻辑地址到物理地址。段变换利用段描述符、描述符表、选择符和段寄存器将逻辑地址转化为线性地址。如果开启分页,线性地址再通过页目录和页表项转换成物理地址。段描述符包含...

    80x86汇编语言程序设计教程

    10.2.1 段定义和虚拟地址到线性地址转换 10.2.2 存储段描述符 10 2.3 全局和局部描述符表 10.2.4 段选择子 10.2.5 段描述符高速缓冲寄存器 10.3 80386控制寄存器和系统地址寄存器 10.3.1 控制寄存器 10 3.2 系统地址...

    80x86保护模式系列教程

    分页使得内存管理更加精细,可以实现虚拟地址到物理地址的转换,并支持内存保护、存储隔离和交换等功能。页表和页目录用于存储页的映射关系。 3. **保护环**:保护模式下的任务可以运行在4个不同的特权级别(0-3)...

    第2章80X86微机系统.ppt

    80486的存储管理部分实现了逻辑地址到线性地址再到物理地址的转换。此外,它还拥有丰富的寄存器组,包括基本结构寄存器、系统级寄存器、浮点寄存器和调试测试寄存器。 80486的指令预取部件能从高速缓存中快速获取...

    Intel IA32架构80x86开发手册

    IA32架构支持虚拟地址和物理地址的转换,通过分页表和段选择子实现内存的动态管理和保护。此外,手册还会涵盖线性地址空间、页表结构以及页大小选项等内容。 处理器的高级特性,如超线程(Hyper-Threading)技术,...

    80X86汇编语言程序设计

    - **线性地址到物理地址的转换**:通过页表进行地址转换。 - **页级保护和虚拟存储器支持**:提供了页级别的访问控制和虚拟内存支持。 - **页异常**:处理页访问时发生的异常情况。 **10.11 虚拟8086方式** - **...

    linux 内存寻址

    总结来说,Linux内核的内存寻址涉及到复杂的地址计算和转换过程,包括段寄存器、段地址、段内偏移地址、线性地址和物理地址等概念。通过分段和分页机制,操作系统能够实现高效、安全的内存管理,保证程序运行的正确...

    Linux操作系统.ppt

    80X86系统中,先进行分段变换生成线性地址,然后可能通过分页机制将线性地址转换为物理地址。 分段机制允许程序在不同的段中分布,每个段可以有不同的保护属性和大小。而分页机制将内存划分为固定大小的页,便于...

    Linux下内存寻址.pdf

    1. **分段单元**(Segmentation Unit):将逻辑地址中的段选择符转换为段描述符,然后结合偏移量得到线性地址。 2. **分页单元**(Paging Unit):将线性地址进一步转换为物理地址。这一步骤涉及页表查找,通过页表...

    Linux 内核对内存的使用方法.pdf

    3. **线性地址**:是逻辑地址到物理地址转换过程中的中间层。如果启用了分页机制,线性地址会进一步转换为物理地址;否则,线性地址即为物理地址。 4. **物理地址**:出现在CPU外部地址总线上的地址信号,是地址变换...

    linux之linux的内核

    在80x86架构中,早期的16位CPU通过段式管理扩展了寻址能力,每个逻辑段最大64KB,而32位CPU则支持更大的寻址空间,并引入了保护模式,允许更复杂的内存管理和权限控制。 页式管理是Linux内核内存管理的关键部分。它...

    Linux内存分页机制原理

    3. **线性地址(Linear Address)**:是逻辑地址到物理地址转换过程中的中间层,也是处理器可寻址的内存空间中的地址。如果启用了分页机制,线性地址还需进一步转换为物理地址;如果没有启用分页机制,则线性地址...

    (完整word版)微机原理与接口技术期末考试试题及答案.pdf

    11. **逻辑地址、线性地址和物理地址**:逻辑地址是程序看到的地址,线性地址是连续的未分段地址,物理地址是内存单元的实际地址。 12. **段描述符**:在80x86系统中,段描述符分为程序段描述符、系统段描述符和门...

    i386protect

    80x86使用两步过程将一个分段形式的逻辑地址转换为实际的物理内存地址: 1. **段变换** - 将逻辑地址中的段选择符和段内偏移转换为线性地址。 2. **页变换** - 如果开启了分页机制,则将线性地址进一步转换为物理...

    Window s 中段页式内存管理硬件实现剖析

    逻辑地址要由段单元转换成线性地址,再由分页单元转换成物理地址。 段单元将逻辑地址转换成线性地址及相应的保护检测,16 位段寄存器 DS 的功能实际上是一个描述符选择字,它的数据结构是,低两位(Bit1- Bit0)...

    微机系统的硬件由哪几部分组成.doc

    在80x86体系中,逻辑地址是程序使用的地址,线性地址是连续的地址,物理地址是实际内存单元的地址。段描述符分为程序段描述符、系统段描述符和门描述符,用于描述内存区域的属性。 RAM分为SRAM(静态RAM)和DRAM...

    微机原理与接口技术_期末复习看了必过!.doc

    在80x86体系中,逻辑地址结合段寄存器和偏移地址计算得到线性地址,再通过分段机制转换为物理地址。 26. RAM分为静态RAM(SRAM)和动态RAM(DRAM)。SRAM速度快但功耗较高,适合做高速缓存;DRAM集成度高但速度较慢...

    Linux+Kernel学习笔记

    在80x86架构中,存在三种存储器地址:逻辑地址、线性地址和物理地址。逻辑地址由段选择符和偏移量组成,线性地址用于表示高达4GB的地址空间,而物理地址则是实际内存芯片的地址。CPU通过分段单元和分页单元将逻辑...

    微机原理与接口技术_期末考试试题答案3.pdf

    11. **80x86中的地址类型**:逻辑地址由程序提供,线性地址是连续的内存地址,物理地址是实际的内存单元地址。 12. **段描述符**:包括程序段描述符、系统段描述符和门描述符,用于管理和访问内存。 13. **RAM类型...

Global site tag (gtag.js) - Google Analytics