跳转至

内存管理

装入和链接

装入

image-20260824172135042

链接

image-20260824172153998

补充

image-20260824172119160

内存分配

连续分配

单一连续分配

image-20260824190448192

固定分区分配

image-20260824190501417

动态分区分配

image-20260824190513473

image-20260824190526116

image-20260824190531836

离散分配

分页

image-20260824191249686

分段

image-20260824191305013

段页式

image-20260824191315857

页、页框、页表、页表项

image-20260824192711695

多级页表

  1. 采用多级页表的原因:
  2. 页表太大 -> 主存只放顶级页表
  3. 页表太大找不到连续空间放 -> 二级页表拆开离散放
  4. PDBR中存放的是当前进程的顶级页表在内存中的物理起始地址。
  5. 对于一个进程而言,顶级页表只有一页
  6. 对于操作系统而言,每个进程都有一份页表,因此顶级页表是存在若干张的,离散的存储在主存中
  7. 因此,当发生进程切换时,PDBR中的起始地址也需要发生改变

image-20260824192726169

页目录项(PDE)里存放的页框号,指向的是对应二级页表所在的物理块

碎片问题

image-20260824192741742

虚拟存储

与基本分页的最大区别就是不用一次将全部页调入内存

内存分配

image-20260824195204829

因为固定分配和全局置换是矛盾的,因此只有三种组合方式

调页

image-20260824195309007

页面置换算法

  1. 只有FIFO会产生Belady异常

image-20260824195337817

image-20260824195359273

Clock下一次从断点处的下一个开始,不从头开始

抖动

image-20260824195424057

补充

习题笔记

在页式虚拟存储管理系统中,确定进程正常运行所需的最少页框数时,需要考虑指令系统支持的寻址方式。如果只分配一个页框时,那么此时操作数是直接寻址等,就需要调入另一个页,但是页框只有一个,所以分配的页框就要多;如果是立即数就不用再调入一个页框。

内存映射文件

核心定义与基本功能

  • 映射目标是虚拟地址: 内存映射文件机制的核心,是将磁盘上的文件内容映射到进程的虚拟地址空间中。
  • 简化文件操作: 映射完成后,进程可以像访问普通内存数组一样直接读写文件数据,不再需要反复调用传统的 read() 和 write() 系统调用。

进程间通信(IPC)的高效实现

  • 共享内核页缓存: 当多个进程映射同一个文件时,操作系统的虚拟内存管理系统会将它们各自的虚拟页面,映射到相同的物理内存页(内核页缓存)上。
  • 极高的通信效率: 进程 A 写入的数据,进程 B 可以直接从共享的物理内存中读取,省去了数据在用户态和内核态之间的多次来回拷贝,是所有 IPC 机制中效率最高的方式之一。

核心职责边界

  • 只管“关联”,不管“干活”: 内存映射文件机制本身仅仅建立“文件对象”与“进程虚拟地址”之间的关联。
  • 底层机制归属虚拟存储系统: 诸如“页到磁盘块的映射”、缺页中断处理、页面的换入换出等底层 I/O 操作,统统不是由映射机制直接实现的,而是由操作系统底层的通用虚拟内存管理系统统一维护和自动处理。

自映射

自映射(给软件/操作系统用):因为 CPU 开启分页后只认虚拟地址,操作系统为了能修改维护页表,只能在虚拟空间里开个“后门”指向自己所在的物理页框,也就是在页表里存了自己的页框号。

PDBR(给硬件/MMU用):里面存着实打实的物理地址,专门指引 MMU 在底层电路级别完成光速查表翻译。