内存管理
装入和链接¶
装入¶

链接¶

补充¶

内存分配¶
连续分配¶
单一连续分配¶

固定分区分配¶

动态分区分配¶



离散分配¶
分页¶

分段¶

段页式¶

页、页框、页表、页表项¶

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

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

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

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

页面置换算法¶
- 只有FIFO会产生Belady异常


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

补充¶
习题笔记¶
在页式虚拟存储管理系统中,确定进程正常运行所需的最少页框数时,需要考虑指令系统支持的寻址方式。如果只分配一个页框时,那么此时操作数是直接寻址等,就需要调入另一个页,但是页框只有一个,所以分配的页框就要多;如果是立即数就不用再调入一个页框。
内存映射文件¶
核心定义与基本功能
- 映射目标是虚拟地址: 内存映射文件机制的核心,是将磁盘上的文件内容映射到进程的虚拟地址空间中。
- 简化文件操作: 映射完成后,进程可以像访问普通内存数组一样直接读写文件数据,不再需要反复调用传统的
read()和write()系统调用。
进程间通信(IPC)的高效实现
- 共享内核页缓存: 当多个进程映射同一个文件时,操作系统的虚拟内存管理系统会将它们各自的虚拟页面,映射到相同的物理内存页(内核页缓存)上。
- 极高的通信效率: 进程 A 写入的数据,进程 B 可以直接从共享的物理内存中读取,省去了数据在用户态和内核态之间的多次来回拷贝,是所有 IPC 机制中效率最高的方式之一。
核心职责边界
- 只管“关联”,不管“干活”: 内存映射文件机制本身仅仅建立“文件对象”与“进程虚拟地址”之间的关联。
- 底层机制归属虚拟存储系统: 诸如“页到磁盘块的映射”、缺页中断处理、页面的换入换出等底层 I/O 操作,统统不是由映射机制直接实现的,而是由操作系统底层的通用虚拟内存管理系统统一维护和自动处理。
自映射¶
自映射(给软件/操作系统用):因为 CPU 开启分页后只认虚拟地址,操作系统为了能修改维护页表,只能在虚拟空间里开个“后门”指向自己所在的物理页框,也就是在页表里存了自己的页框号。
PDBR(给硬件/MMU用):里面存着实打实的物理地址,专门指引 MMU 在底层电路级别完成光速查表翻译。