一、计算机体系结构

(1)CPU:程序执行控制

(2)内存:存放代码和数据

(3)设备:硬盘、键盘、鼠标等外设

 

二、地址空间和地址生成

1、地址空间定义

  • 物理地址空间:硬件支持的地址空间
  • 逻辑地址空间:一个运行的程序所拥有的内存范围

2、逻辑地址生成

  • C语言:编译、汇编、链接、载入(程序重定位,经过这步程序从磁盘到内存中)
  • 编译:将基于符号的地址变为逻辑地址
  • 操作系统:逻辑地址、物理地址之间的映射

3、物理地址生成

(1)cpu

  • 运算器需要在逻辑地址的内存内容
  • 内存管理单元 MMU 寻找在逻辑地址和物理地址之间的映射
  • 控制器从总线发送在物理地址的内存内容的请求

(2)内存

  • 内存发送物理地址内存的内容给 CPU

(3)操作系统

  • 建立逻辑地址和物理地址之间的映射

 

三、连续内存分配

1、内存碎片问题

  • 空闲内存不能被利用
  • 外部碎片
  • 内部碎片

2、分区的动态分配

(1)什么时候需要内存分配

当一个程序准许运行在内存中时,分配一个连续的区间;

分配一个连续的内存区间给运行的程序以访问数据

(2)分配策略

  • 首次适配
  • 最优适配
  • 最差适配

3、碎片整理

  a. 压缩式碎片整理:把运行程序在内存中移动

  b. 交换式碎片整理:主存——>磁盘(虚拟内存)

 

四、非连续内存分配

1、分段

(1)作用:更好的分离和共享

(2)实现:逻辑地址空间分散到多个物理地址空间

(3)分段寻址方案 —— 段访问机制

  • 段号、段内偏移
  • 操作系统设置段表

2、分页

(1)实现

  • 划分物理内存至固定大小的帧 Frame
  • 划分逻辑地址空间至相同大小的页 Page

(2)帧Frame

  • 帧号、帧内偏移
  • 可以得出物理地址

(3)页page

  • 页号、页内偏移
  • 可以得出逻辑地址

(4)页寻址方案——页寻址机制

  • 页号、页表基址
  • 操作系统建立页表
  • 页表保存了逻辑地址–物理地址之间的映射关系
  • CPU——>逻辑地址——>页表——>物理地址——>物理内存空间

3、页表

(1)页表结构

每个运行的程序都有一个页表

(2)TLB

  • 关联内存实现、具备快速访问性能,缓存及其访问的页帧转换表项、节省空间
  • 如果 TLB 命中,物理页号可以很快被获取
  • 未命中,对应的表项被更新到 TLB 中

(3)二级页表

  • pageNumber 分为两块 p1、p2
  • 节省空间、开销大、时间换空间

(4)多级页表

(5)反向页表

  • 基于页寄存器的方案
  • 基于关联内存的方案
  • 基于哈希查找的方案

 

Posted on   choco莉特  阅读(76)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示