【课程笔记】3.计算机体系结构&地址空间

142 阅读3分钟

本文我们将介绍两部分内容:

  1. 计算机体系结构/内存分层体系:
  2. 地址空间&地址生成:操作系统和程序的编译执行这个过程进行交互的

1.计算机体系结构及内存分层体系

1)计算机体系结构

  1. CPU:完成程序以及软件执行的控制
  2. 内存:存放代码&数据
  3. I/O:外设

image-20230111104048993.png

2)内存分层体系

  • 微处理器(CPU访问):以下这两种是位于CPU芯片内部的,OS没办法直接对其进行管理
    1. 寄存器
    2. cache(L1缓存 / L2缓存)
  • 主存:在运行程序时所需要保存的数据空间
  • 磁盘:用于持久化数据保存的数据空间

image-20230111104210687.png

3)在操作系统的内存管理范例

内存管理目标

  • 抽象:逻辑地址空间

    希望应用程序在内存中运行的时候,不用考虑太多底层的细节,只需要访问一个连续的地址空间就可以了

  • 保护:独立地址空间

    内存中可以运行多个不同的应用程序,需要一种有效的机制,防止某个进程访问其它进程的地址空间

  • 共享:访问相同内存

  • 虚拟:更多的地址空间

    当内存中放入了多个应用程序后,会出现内存不足的情况,如何让正在运行的程序获取它所需要的内存空间呢?把最需要存放在内存的数据放在内存中,把暂时不需要访问的数据放在磁盘上

image-20230111105028308.png

如图所示,主存和硬盘是一种物理地址空间,而程序看到的是逻辑地址空间

而操作系统想要完成上述四点内容,就需要一定的机制和手段(内存管理方法):

  • 程序重定位
  • 分段
  • 分页
  • 虚拟内存
  • 按需分页虚拟内存

实现起来高度依赖于硬件

内存管理单元MMU):它是一种负责处理[中央处理器](CPU)的[内存]访问请求的[计算机硬件]。它的功能包括逻辑地址到物理地址的转换(即虚拟内存管理)等

2.地址空间&地址生成

分为三部分进行讲解:

  1. 地址空间定义:逻辑地址空间&物理地址空间定义
  2. 地址生成:地址空间是怎么生成的,什么时候生成逻辑地址空间,什么时候生成物理地址空间
  3. 地址安全检查:OS如何有效保护不同进程之间的访问,是他们不会互相干扰

1)地址空间的定义

  • 物理地址空间 —— 硬件支持的地址空间( address : [0, Max_sys] )
  • 逻辑地址空间 —— 一个运行的程序所拥有的的内存范围( address : [0, Max_prog] )

image-20230111110538357.png

2)逻辑地址生成

如下图所示,可见:

  • 在汇编之后转换成机器语言,其起始地址都是从0开始的连续地址空间
  • 通过链接得到一个可执行的程序,此时该程序存放在硬盘中
  • 把该执行程序放到内存中去执行,需要将逻辑地址载入到内存中。实现真正的逻辑地址空间
  • 以上操作不需要OS进行辅助

image-20230111110725919.png

3)物理地址生成

  • CPU中有一个MMU,MMU中有一块区域表示了逻辑地址与物理地址的映射关系。
  • 当CPU执行某条指令的时候,ALU部件会发出一个请求(携带逻辑地址的参数)
  • CPU中的MMU会去查询逻辑地址的映射表中是否存在其物理地址;如果没找到就去内存里面去找
  • 如果在内存中找到后,CPU的控制器会给主存发送一个请求(我需要某个物理地址的内容),主存会把该内容通过总线传给CPU

image-20230111112626640.png

4)地址安全检查

image-20230111113359480.png

声明:

  • 本文仅作为个人学习笔记。
  • 如有侵权,立即删除。