操作系统原理:虚拟地址

The Memory Hierarchy

存储系统是有层次的,从快到慢依次是:CPU寄存器、静态SRAM、动态DRAM、磁盘。如下图:
memory

如 Inter Core i7 存储结构如下:
inter i7

i7的存储架构支持48-bit虚拟地址,52-bit物理地址. Page Size启动时可配置 4KB or 4MB, Linux使用4KB,4-level page table hierarchy。

Segmentation and Paging

在CPU保护模式下,进程使用虚拟地址,这也给每个进程一个大的、一致的私有的地址空间。虚拟地址也简化了程序的链接与加载,代码段、数据段、共享库总是从相同的虚拟地址开始,执行程序时,execve()调用会使内核分配virtual pages给进程,按page从磁盘拷贝代码段数据段到内存。

地址翻译分段与分页相结合,linux更加关注的是分页机制。Linux分段机制使用的很有限,RISC架构的CPU就不支持分段机制,并且分段机制也没有分页机制更灵活。

逻辑地址-->[Segmentation]-->线性地址(虚拟地址)-->[Paging]-->物理地址

Linux分段机制使用的很有限,逻辑地址与线性地址是一致的。

linux下分段机制使用的很有限,仅仅有四种段:用户代码段、用户数据段、内核代码段、内核数据段。相应的段描述符由宏__USER_CS__USER_DS__KERNEL_CS,和__KERNEL_DS分别定义,且所有段都从0x00000000开始。

Linux使用分页机制,每个进程都有自己的页表,任务切换就会有页表切换,x86下通过修改控制寄存器CR3完成,CR3控制寄存器是PDBR(Page-Directory Base address Register),加载进程页表通过拷贝mm_stuct->pgdCR3寄存器完成。

页表可以把虚拟地址页映射为物理地址页,x86 32位系统的机制大致如下(MIT xv6):
x86-paging
为了加快速度,地址翻译有专门的硬件MMU(Memory Management Unit),MMU中包含了一个小的PTE(Page Table Entry)缓存TLB(Translation Lookaside Buffer), 大致工作原理如下图:
MMU

举个多级页表的例子,Inter i7页表翻译,采用了4级页表,如下图:
Inter_i7_four

从操作系统的实现看:
Linux_page

还有很多有意思的细节可以看后面的参考资料。

Reference

Operating Systems: Three Easy Pieces
Xv6, a simple Unix-like teaching operating system
Computer Systems: A Programmer’s Perspective, 3/E (CS:APP3e)
Professional Linux Kernel Architecture
Understanding the Linux® Virtual Memory Manager
Computer Systems Organization

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《系统虚拟化:原理与实现pdf》是一本介绍系统虚拟化的相关理论和实践的书籍。在计算机技术快速发展的今天,系统虚拟化这一概念已经成为了一种重要的技术手段,可以有效提高计算机的利用率、降低管理成本,为云计算、大数据等新兴领域的发展提供支持。 该书主要介绍了系统虚拟化的概念、原理和实现方法。首先,它介绍了虚拟化技术的发展历程和背景,说明了为什么需要虚拟化技术以及虚拟化技术的优点。接着,它详细介绍了系统虚拟化的两种实现方法:全虚拟化和半虚拟化,分析了它们的优缺点,同时也讲解了其他虚拟化技术的特点。 在具体实现方面,该书详细介绍了系统虚拟化的基础技术,包括虚拟化的CPU、内存、磁盘、网络等硬件资源的管理方法,虚拟机的创建、启动和销毁等操作。此外,还介绍了虚拟机监控器(VMM)的工作原理和虚拟机的调度策略。 除了基础技术,该书还介绍了针对特定应用场景的系统虚拟化技术,如云计算、容器化等。通过对各种实际应用场景的案例分析,读者可以更加深入地理解系统虚拟化的实际应用。 总之,《系统虚拟化:原理与实现pdf》是一本非常实用和具有参考价值的书籍,介绍了系统虚拟化技术的基础知识和实现方法,对于从事虚拟化相关研究和应用的从业人员以及对虚拟化技术感兴趣的读者都具有很高的参考价值。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值