抖动与工作集:虚拟内存的性能问题
抖动与工作集:虚拟内存的性能问题 前面两篇我们看到,虚拟内存靠局部性让程序用上超过物理内存的空间,页面置换算法则在内存满时聪明地决定换谁出去。一切看起来都很优雅。但这份优雅有一个前提条件,而当这个前提...
抖动与工作集:虚拟内存的性能问题 前面两篇我们看到,虚拟内存靠局部性让程序用上超过物理内存的空间,页面置换算法则在内存满时聪明地决定换谁出去。一切看起来都很优雅。但这份优雅有一个前提条件,而当这个前提...
页面置换算法:OPT、FIFO、LRU 与 Clock 上一篇讲缺页处理时,我们在流程图里埋了一个关键岔路:当缺页发生、而物理内存已经装满、没有空闲页框时,操作系统必须踢掉一个已经在内存里的页,腾出位...
虚拟内存:为什么能“看到”比物理内存更大的空间 在 64 位机器上随便写个程序,它的地址空间理论上有 16EB(百亿亿字节)那么大;就算是一台只有 16GB 内存的机器,你也可以让一个进程 mallo...
段页式管理:结合分页与分段的思路 前面两篇我们看到了一个尴尬的局面:分页擅长物理管理、消灭了外部碎片,却丢掉了程序的逻辑结构和段级保护;分段保住了逻辑结构和精细保护,却因为"可变长度 + 要...
分段机制:逻辑结构与内存保护 分页机制很优雅,它把地址空间切成大小相同、完全同质的页,一举消灭了外部碎片。但如果你换到程序员的视角看自己的程序,会发现它压根不是一堆毫无区别的页——它天然是有结构的:这...
分页机制:页、页表与地址转换 在讲连续分配的时候,我们已经看到一个很现实的问题:内存明明还有不少空闲,却因为这些空闲被切得七零八落,导致一个稍大一点的程序反而装不进去。这就是外部碎片。为了解决它,系统...
连续分配策略:首次适应、最佳适应与碎片问题 上一篇我们看到,基址/界限模型给每个进程一套独立坐标系,但它隐含了一个要求:进程必须占用一整段连续的物理内存。现在问题来了——内存就这么一大块,进程不停地来...
内存管理基础:地址空间、重定位与保护 你写一个 C 程序,打印某个全局变量的地址,可能会看到一个像 0x601040 这样的值。但你心里清楚,机器上插着的那条内存,物理上根本没有专门给你这个程序留下 ...
多级反馈队列:操作系统里的调度折中方案 上一篇结尾留了个问题:FCFS、SJF、RR、优先级调度各有所长又各有硬伤,能不能把它们的优点揉到一起?这一篇的主角——多级反馈队列(MLFQ,Multi-Le...
CPU 调度算法:FCFS、SJF、RR 与优先级调度 上一篇我们立下了一条铁规矩:评判调度必须先看目标。现在带着那些指标——吞吐量、周转时间、等待时间、响应时间、公平性——来逐一审视四个最经典的调度...