【操作系统】Operation System-第3章-内存分层体系 & 地址空间生成

操作系统—内存分层体系 & 地址空间/生成

计算机体系结构

内存分层体系

image-20220519132737567

CPU可以访问的内存包括两大类 : 寄存器 / cache(L1缓存 / L2缓存)

主存(物理内存)/ 磁盘(虚拟内存)主存是在运行程序时所需要保存的数据空间,而磁盘是用于持久化数据保存的数据空间。

从CPU寄存器到磁盘,读写速度不断降低,容量不断增大。

操作系统的内存管理

目标

  • 抽象:逻辑地址空间

  • 保护:独立地址空间

  • 共享:访问相同内存

  • 虚拟:更多的地址空间

image-20220519133102329

  • 物理地址空间:主存和硬盘

  • 逻辑地址空间:运行的程序

内存管理的不同方法

  • 程序重定位(relocation)

  • 分段(segmentation)

  • 分页(paging)

  • 虚拟内存(virtual memory)

  • 按需分页虚拟内存

    ➢ 目前多数系统(如 Linux)采用

实现高度依赖于硬件

  • 必须知道内存架构(与计算机存储架构紧耦合)
  • MMU(内存管理单元):硬件组件负责处理CPU的内存访问请求

地址空间

地址空间定义

  • 物理地址空间 —— 硬件支持的地址空间( a d d r e s s : [ 0 , M a x s y s ] address : [0, Max_{sys}] address:[0,Maxsys]
  • 逻辑地址空间 —— 一个运行在程序所拥有的的内存范围( a d d r e s s : [ 0 , M a x p r o g ] address : [0, Max_{prog}] address:[0,Maxprog]

image-20220519134832321

逻辑地址生成

image-20220519151725476

  • .c file 函数位置、变量名即逻辑地址。
  • .s file 汇编语言中更加贴近机器语言,但是依然用符号代表变量名字。
  • .o file 机器语言中,起始地址都是从0开始的,把变量名转换为地址。
  • linker把多个.o file变成一个单一的.exe file。
  • .exe file 中,地址已经做了全局的分布,不同的.o file程序的地址在单一程序中已经有各自的定义。
  • .exe file 通过loader放到内存中运行,会有一定的偏移量,所以程序依照偏移量来进行正确数据的访问和指令的操作。

物理地址生成

image-20220519162028647

  • CPU根据指令,查找逻辑地址的物理地址在什么地方
  • 根据什么查找?MMU将逻辑地址映射到物理地址。

地址安全检查

image-20220519162245354

操作系统建立逻辑地址到物理地址的映射,这个关系可以放到内存中,由CPU进行缓存,加快访问过程。

  • 使应用程序在内存中正常执行,同时保证在内存中不同的应用程序之间不会相互破坏,因为操作系统会进行地址安全检查。

整理自 【清华大学】 操作系统

猜你喜欢

转载自blog.csdn.net/weixin_53407527/article/details/124930556
今日推荐