地址映射的三种方式_三种地址映射方式各自的特点

2025-01-0512:55:06营销方案0

1. 固定地址映射

在编程和编译过程中,需要确定逻辑地址和物理地址之间的映射关系。其特点在于程序加载时必须放置在指定的内存区域,这可能导致地址冲突并可能导致运行失败。

2. 静态地址映射

操作系统在程序装入时完成从逻辑地址到物理地址的映射。其公式表示为 MA = VA + BA。该特性的亮点在于在程序运行之前就确定了映射关系,装入内存后无法移动,且占用连续的内存空间。

3. 动态地址映射

在程序执行过程中,将逻辑地址转换为物理地址。同样,其公式也表示为 MA = VA + BA。此方法的优势在于程序占用的内存空间可动态变化,不要求连续的内存空间,这有助于多个进程共享代码。它也存在一些缺点,如需要硬件支持(MMU)和软件复杂性较高。

为了解决内存不足的问题,借助辅助存储在逻辑上扩展内存。

  • 迁入:将需要运行的部分装入到内存中。
  • 迁出:将暂时不运行的部分存储到辅助存储设备中。

这种做法的前提是,短时间内不运行的程序部分往往占据大部分内存空间。

内存管理相关原理

实现虚拟存储的前提包括足够的辅助存储、适当的内存容量以及地址变换机构。

对于内核学习网站而言,重要的是为程序分配足够的内存空间。

在32位机器上,地址空间范围从0x00000000到0xFFFFFFFF,总计4GB。其中,低地址空间为用户空间,高地址空间则被系统使用。

虚拟内存与物理内存的映射

  • 用户低2GB空间分配详解
    • 特定区域用于拒绝访问,以帮助程序员避免引用错误的指针。
    • 专用进程地址空间和其他关键区域如线程环境块(TEB)和进程环境块(PEB)。
    • 共享的用户数据页以只读方式映系统空间中包含关键信息。
  • 核心高2GB空间分配详解
    • 内核执行体、硬件驱动程序等关键系统组件的存储位置。
    • 其他如系统缓存、缓冲池等的分布情况。

每个进程都拥有自己的虚拟内存地址空间,这些地址空间相互独立但又可以共享数据。虚拟内存地址本身并不直接对应任何物理地址;直接引用会导致错误。虚拟内存地址必须映物理地址后才能储存数据。内存分配和回收实质上是虚拟和物理内存之间的映射关系。

为了确保多道程序在内存中的正常运行并且互不干扰,需要采取一系列措施来防止访问越界和越权。这可以通过在CPU中设置下限寄存器和上限寄存器来实现,它们存放程序在内存中的上下限地址。当程序访问内存时,硬件会自动将目的地址与这些寄存器中的地址界限进行比较,从而判断是否越界。

  • 版权说明:
  • 本文内容由互联网用户自发贡献,本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 295052769@qq.com 举报,一经查实,本站将立刻删除。