存储系统
字数: 0

计算机模型

notion image

冯·诺依曼模型

将计算机的指令和数据存储在同一个存储器中,以便程序可以按顺序执行指令并操作数据。但内存和 CPU 之间只有一个总线,因此指令获取和数据操作不能同时进行。

哈佛模型

将指令和数据存储在两个分离的存储器 (separate memory systems),分别称为指令存储器和数据存储器。这两个存储器使用不同的总线进行访问,允许指令获取和数据操作并行和独立进行 (parallel and independently)

系统层次结构

Memory Systems Hierarchy
notion image
notion image

寄存器 ➡️ 缓存 ➡️ 主内存 ➡️ 辅助存储器

(从上往下)
  • 较上层次有更快的访问速度和较小的容量
  • 较下层次有较大的容量但访问速度较慢

内存空间分配

固定分区

Fixed Partitioning
进程只能被加载到与其大小匹配的分区中,适用于单用户、单任务的环境。
notion image
分区的大小需要根据系统的需求和性能考虑来确定

动态分区

Dynamic Partitioning
分区的大小根据进程的需求进行动态调整。当一个进程需要加载到内存中时,操作系统会为其分配一个合适大小的分区,而当进程终止或释放内存时,分区可以重新合并或划分。
notion image

分配策略

  • Best Fit(最佳适应) 将进程放置在最小的可容纳块中。
  • Worst Fit(最差适应) 将进程放置在最大的空闲块中,将其分割成一个较小但仍然可用的空闲块。
  • First Fit(首次适应) 在空闲列表的扫描中为进程分配第一个能够容纳它的块,节省了分析列表的时间。
  • Next Fit(下次适应) 内存管理器记住上次分配空闲块的位置,在下一次搜索空闲块时采用首次适应的方法。

内存碎片化

分配的内存块大小如果大于程序实际所需的内存大小,会导致内存块有未被利用的空余部分,即产生了内部碎片 (Internal Fragmentation)
此外,随着时间的推移,内存的空闲区域会逐渐被分割成越来越小的片段,这可能会导致一种情况,即可用的空闲空间的总和可以容纳新的分配请求,但由于空闲空间不是一个连续的块,分配无法进行,即外部碎片 (External Fragmentation)。

内存压缩

Free Memory Compaction,减少碎片化的技术
notion image

内存数据结构

位图

Bit Map,每个内存块都对应一个位,其中1表示已分配,0表示未分配。
notion image
  • 使用位图进行内存分配时,每个分配单元都有两个可能的状态:已分配或未分配
    • 如果一个内存空间的大小为 ,并以字节的分配单元进行分配,那么每个位图的大小将需要 ,共有个单元。
  • 分配单元的大小是一个重要的设计考虑因素。
    • 如果分配单元太大,位图的大小会较小,但我们只能按照分配单元的倍数分配内存空间,这意味着最后一个分配的单元中可能有更多的空间不会被进程使用。即可分配的内存空间可能会存在浪费。

链表

Linked List,可以是单向链表或双向链表,每个内存块都包含一个指针,指向下一个内存块。
notion image

伙伴系统

Buddy System

分页

Paged Architecture,将内存分割为多个页面,每个页面具有相同的大小。当进程访问某个逻辑地址时,通过页表查找对应的物理页,并将逻辑地址转换为物理地址进行访问。
notion image

缺点

  • 增加访问延迟:For every logical memory access, two real memory accesses may be needed.
  • 导致更大额外开销:Page tables can be large and need to be kept in main memory.
  • 产生较多内部碎片:A process may not require all of the memory space of the last page assigned to it.

页面置换算法

Page Replacement Algorithms,当物理内存中没有足够的空间来容纳所有需要驻留在内存中的页面时,操作系统必须选择要从内存中移除的页面,以便为新的页面提供空间。
  • 先进先出(First-In-First-Out,FIFO):按照页面进入内存的顺序,选择最早进入的页面进行置换。
  • 最近最久未使用(Least Recently Used,LRU):最久未使用的页面被认为是最有可能在近期不再被访问的页面。这个算法需要维护一个页面访问历史记录,相对于 FIFO 算法来说,它更好地反映了页面的访问模式。
  • 最不经常使用(Least Frequently Used,LFU):页面访问频率最低的页面被认为是最不重要的页面,可以优先进行置换。
 
2023 - 2026