内存

内存使用与分段

每一条指令都要从逻辑地址算出物理地址——地址翻译

<段号,段内偏移>

GDT[Global Descriptor Table] 全局描述符表

LDT[Local Descriptor Table] 局部描述符表

内存分区与分页

固定分区

可变分区——时间长了会造成内存碎片

段面向用户 页面向硬件

多级页表与快表

为了提高内存的利用率,页应该小,但这样页表就大了。

第一种尝试

只存放到用到的页

第二种尝试

使用多级页表——类比成书的章目录和节目录(分层的思想)

增加了空间的利用率,但牺牲了时间效率

所以TLB 相联快速存储(局部性原理),是寄存器(就是加了一层缓存)

TLB条目数在64——1024之间

原因:

  • 程序的地址访问存在局部性(多为循环和顺序结构)
  • 空间局部性

内存的换入换出

实现虚拟内存就应该换入换出

换入换出实现了“大内存” 吧细小的内存整理

换出页面算法

  • FIFO
  • LRU Least resently used最近最少使用 用过去预知未来
    • 两种实现方法
    • 1——时间戳
    • 2——将时间计数修改为是和否(Clock算法 快慢指针实现 一种近似)

image

posted @ 2021-11-01 14:32  飞飞很要强  阅读(40)  评论(0编辑  收藏  举报