深入理解Linux内核——内存寻址

Linux内存寻址

一、Linux分段

逻辑地址,即指定一个操作数或一条指令的地址;线性地址,也称虚拟地址,32位无符号整数,可表示4GB地址;物理地址:内存芯片级内存单元寻址;由内存硬件设备和内存总线相连的引脚决定。
内存寻址解决的问题是明晰Linux 逻辑地址如何经过一系列的地址映射至物理地址。

在这里插入图片描述

1、题段描述符GDT

每一个段由8字节段描述符表示,根据不同的段可将段描述符分为不同种类,广泛被Linux采用的类型有:代码段描述符、数据段描述符、任务状态段描述符(TSSD);段描述符放在全局描述表(GDT)中或者局部描述表中(LDT),这两种区分的粒度是进程,GDT存在主存,同一CPU共享;LDT进程内部段描述表;
对于多处理器,每个CPU对应一个GDT,每个GDT中包含18个段描述符,我们平时主要关注的如下:
(1)用户态和内核态下的代码段和数据段--用户代码段、用户数据段、内核代码段、内核数据段;
(2)任务状态段(TSS)
(3)3个局部线程存储(TLS)段,所以针对线程局部存储是不需要线程上线文切换的,并且存储针对单CPU内部操作。

2、段描述符LDT

大多数用户态下的Linux程序不使用局部描述符,但是内核定义了一个缺省的LDT供大多数进程使用,内核态不关心LDT。

3、逻辑地址至线性地址映射

一个逻辑地址有两部分组成:一个段选择符(16字长)和一个指定段内相对地址的偏移量(32字长);
为了提高逻辑地址至线性地址的转换效率,CPU提供6个可编程的段寄存器存储段选择符,6个非编程的段寄存器存储段描述符,每一个寄存器含有8个字节的段描述符;当一个段选择器被载入寄存器时,相应的段描述符由内存装入对应的非编程CPU寄存器中。
知道逻辑地址计算线性地址:
(1)逻辑地址的index字段乘以8(一个段的长度),然后加上gdtr和ldtr寄存器中的内容可计算出段描述符的地址;
(2)把逻辑地址的偏移量与段描述的Base字段的值相加就得到相应的线性地址。

在这里插入图片描述
注:图中段选择符中的index表示段描述符索引号

二、Linux分页

三、物理内存布局

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《深入理解Linux内核》是一本经典的计算机科学书籍,它是由Daniel P. Bovet和Marco Cesati共同撰写的。该书深入介绍了Linux内核的各个方面,包括进程管理、内存管理、文件系统、设备驱动程序等等。 在《深入理解Linux内核》中,作者系统地介绍了Linux内核的设计和实现原理。他们从整体架构开始,逐步深入讲解各个子系统的功能和实现细节,全面展示了Linux内核的工作原理。通过学习这本书,读者可以学习到Linux内核的基本概念、关键数据结构和算法,以及与其他操作系统的对比。 这本书针对的读者主要是计算机专业的学生和从业人员。它不仅能帮助读者更深入地理解Linux操作系统,还能培养读者分析和解决操作系统相关问题的能力。同时,书中丰富的实例和代码也对学习者进行了良好的指导,帮助他们更好地理解和掌握内核编程技巧。 总而言之,《深入理解Linux内核》是一本值得深入研读的经典教材。它不仅详细介绍了Linux内核的各个方面,还为读者提供了丰富的实例和代码,帮助他们更好地理解和掌握内核编程技巧。读完这本书,读者可以更深入地理解Linux内核的工作原理,为深入研究和开发操作系统打好坚实的基础。 ### 回答2: 《深入理解 Linux 内核》是一本介绍 Linux 操作系统内核设计和实现原理的经典著作。这本书的目的是帮助读者深入了解 Linux 内核的核心概念、运行机制和关键模块,从而更好地理解 Linux 操作系统的工作原理。 首先,这本书涵盖了 Linux 内核的各个方面,包括进程管理、内存管理、进程间通信、文件系统、设备驱动程序等。通过深入了解这些模块的设计和实现原理,读者可以全面掌握 Linux 内核的工作方式,并能够更好地进行系统调优和应用开发。 此外,本书还介绍了 Linux 内核的主要数据结构和算法,包括链表、红黑树、哈希表等。对这些数据结构的深入理解,对于理解 Linux 内核代码和实现原理非常重要。通过详细讲解这些数据结构的设计和实现,读者可以更好地理解它们在 Linux 内核中的使用场景和性能特性。 另外,本书还详细介绍了 Linux 内核的调试和性能优化技术。作者详细介绍了使用 GNU 调试器来调试内核代码、使用运行时检测工具来检测内核错误、使用静态分析工具来分析内核代码等技术。这些技术对于诊断和解决内核问题非常有帮助,并能够提高系统性能。 总的来说,深入理解 Linux 内核这本书是一本系统而深入的介绍 Linux 内核设计和实现原理的优秀著作。通过学习这本书,读者可以全面掌握 Linux 内核的运行机制和关键模块,提高对 Linux 操作系统的理解和应用开发的能力。 ### 回答3: 《深入理解Linux内核》 PDF是一本经典的Linux内核学习资料,它以深入和全面的方式探索了Linux内核的工作原理和设计思想。 首先,这本书介绍了Linux内核的基本概念和组成结构。它从进程管理、内存管理、文件系统等方面详细解析了内核的各个功能模块,让读者了解内核的整体架构和运行机制。 其次,这本书深入剖析了Linux内核的调度器和进程管理。它详细介绍了调度器的工作原理,包括进程调度策略、调度队列的管理等内容。此外,它还讨论了进程的创建、销毁以及进程状态转换等方面,帮助读者理解进程管理的核心概念和实现原理。 此外,这本书还介绍了Linux内核内存管理机制。它涵盖了虚拟内存、分页机制、内存分配和回收等关键话题。通过解析内存管理的细节,读者可以更好地理解Linux内核如何管理系统资源,并优化内存使用效率。 此外,《深入理解Linux内核》 PDF还深入讲解了Linux的文件系统。它涵盖了文件系统的组织结构、文件系统缓存、文件的读写操作等关键知识点。通过学习文件系统的实现原理,读者可以了解文件系统如何存储和管理文件数据,并对文件I/O操作有更深入的理解。 最后,这本书还涵盖了设备驱动程序和网络协议栈等内容。它讲解了设备驱动程序的框架和实现原理,以及Linux内核对网络通信的支持。通过学习这些内容,读者可以了解Linux内核如何与外设和网络进行交互。 总之,这本书通过详细而全面的介绍,帮助读者深入理解Linux内核的工作原理和设计思想。它不仅适合想要深入研究Linux内核的专业人士,也适合对Linux系统有兴趣的读者参考学习。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值