Linux 内核学习之内存寻址(一) 硬件寻址

MMU

MMU(内存管理单元)的功能是将逻辑地址转换成物理地址。其中包括:

  • 分段单元,将逻辑地址转换成线性地址;
  • 分页单元,将线性地址转换成物理地址;

地址概念:

  • 逻辑地址,由段标识符+偏移量组成;
  • 线性地址,又称虚拟地址;
  • 物理地址,用于内存芯片寻址。

逻辑地址转换线性地址
段标识符: | index<15-3> |ti<2> | RPL<1-0> |
段描述符:
段描述符
(段标识符->index*8+段选择符gdtr或者ldtr寄存器中的基地址) –>得到段描述符–>段描述符->base+offset —>线性地址。

硬件分页

把线性地址分成以固定长度为单位的组。再映射到连续的物理地址中。

  • page frame (页框) ram 被分成固定长度
  • page 每个页框包含一个页
  • page table 线性地址映射到物理地址的数据结构称之为页表

- 常规分页
分页

32位线性地址分为三个域:
Directory 最高10位
Table 中间10位
Offset 最低12位
Directory和Table有相同的数据结构

  • present 0 不在主存中(线性地址保存到cr2 产生缺页异常) 1 在主存中
  • Accessed
  • dirty
  • Read/Write 读写执行权限
  • User/Supervisor 硬件保护
  • PCD/PWT
  • Page Size 页大小
  • Global

- 扩展分页
Directory 最高10位
Offset 最低22位
页大小由4KB变为4MB

注:cr4 PSE控制分页模式

- 物理扩展分页 PAE
目的: 为了支持4GB以上内存寻址,可高达64GB寻址。
32位线性地址划分为:
cr3 -> PDPT
31-30 指向PDPT4个项中的一个
29-21 页目录512项中的一个
20-12 页表中512项中的一个
11-0 Offset

通过改变cr3 或者 PDPT的值 就可以寻址4GB以上内存

几种加快内存访问速度的技术

-硬件高速缓存
高速缓存在分页单元与主内存之间,有一个高速缓存内存与一个控制器组成。控制器存放着一组缓存表项,每个表项对应着高速缓存内存中的一行,每个表项由一个标签和几个flags组成。每次提出物理地址后,高几位与标签比较,如果一致则命中高速缓存。

-转换后援缓存器(TLB)
目的:加快线性地址到物理地址的转换。在寻址到物理地址后,将物理地址存放在TLB表项中,将来对同一线性地址寻址时,直接从TLB中提取出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux内核中,网络协议栈是通过网络协议栈层次结构的实现来进行的。 网络协议栈是一组网络协议的集合,用于在计算机网络中进行数据通信。在Linux内核中,网络协议栈通常包括以下几个层次: 1. 物理层:负责处理物理传输介质上的数据传输,如以太网、Wi-Fi等。这一层通常由硬件设备或设备驱动程序实现。 2. 数据链路层:负责将数据分割成数据帧,并添加地址和错误检测等控制信息,使数据能够在物理介质上正确传输。这一层通常由网络设备驱动程序实现。 3. 网络层:负责在网络中寻址和路由数据包,将数据包从源地址传送到目标地址。这一层主要由协议如IP(Internet Protocol)实现。 4. 传输层:负责提供端到端的可靠数据传输,如TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)。这一层主要由协议实现。 5. 应用层:负责应用程序之间的数据交互,如HTTP、FTP等。这一层主要由应用程序实现。 在Linux内核中,每个层次的协议都有相应的实现。这些实现通常以模块的形式存在,并注册到内核中。当数据包到达时,内核会根据其协议类型,将数据包从一层传递到下一层,最终交给应用程序进行处理。 此外,Linux内核还提供了一些通用的网络功能,如套接字(socket)接口、路由表管理、网络设备管理等。这些功能共同构成了Linux内核中完整的网络协议栈。 总结起来,Linux内核中的网络协议栈是通过实现网络协议栈层次结构来实现的,每个层次的协议都有相应的实现,并通过模块注册到内核中。这些实现和通用的网络功能共同构成了Linux内核中的网络协议栈。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值