linux 加载地址 0x08048000,深入理解计算机系统 第九章 虚拟存储器

本文深入探讨Linux虚拟存储器,阐述其作为缓存、存储器管理和保护工具的角色。介绍了虚拟地址与物理地址的区别,详细解析了页表、虚拟存储器区域、存储器映射、动态存储器分配等方面,强调了虚拟地址0x08048000在32位系统中的意义。
摘要由CSDN通过智能技术生成

虚拟存储器

定义:

对主存的抽象机制,是硬件异常、硬件地址翻译、主存、磁盘文件和内核软件的完美交互。

功能:

1. 将主存看成是一个存储在磁盘上的地址空间的高速缓存,在内存中只保存活动区域,并根据需要在磁盘和内存之间来回传送数据。

2. 为进程提供了一致的地址空间,从而简化了存储器管理。

3. 保护了每个进程的地址空间不被其他进程所破坏。

9.1 物理和虚拟地址

CPU通过生成一个虚拟地址(Virtual address,VA)来访问主存。将虚拟地址转换为物理地址叫做地址翻译(address translation)。地址翻译也需要CPU硬件和操作系统之间的紧密结合。

CPU芯片上有叫做存储器管理单元(Memory Management Unit,MMU)的专用硬件。利用存储在主存中的查询表来动态翻译虚拟地址。 查询表由操作系统管理。

9.2 地址空间

9.3 虚拟存储器作为缓存的工具

概念上而言,虚拟存储器(VM)被组织为一个存放在磁盘上的N个连续字节大小的单元组成的数组。每个字节都有一个唯一的虚拟地址,这个唯一的虚拟地址作为到数组的索引。磁盘上数组的内容被缓存到主存中。VM系统通过将虚拟存储器分割为称为虚拟页的大小固定的块来处理磁盘和主存信息交互问题。

任何时候,虚拟页的集合都被分为3个不相交的子集。

1、[未分配的] VM系统还未分配(或者创建)的页。未分配的块没有任何数据与之相关联。不占用磁盘空间

2、[缓存的] 当前缓存在物理存储器的已分配页。

3、[未缓存的] 没有缓存在物理页面存储器中的已分配页。

bVEVEB?w=627&h=367

9.3.2 页表

bVEVKj?w=606&h=405

9.4 虚拟存储器作为存储器管理的工具

操作系统为每个进程提供一个独立的页表,VM简化了链接和加载,代码和数据共享,以及应用程序的存储器分配。

bVEVMa?w=517&h=305

1.简化链接

独立的空间地址意味着每个进程的存储器映像使用相同的格式。文本节总是从0x08048000

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值