首页
社区
课程
招聘
[分享]虚拟存储器、置换算法、局部性原理和抖动
发表于: 2小时前 47

[分享]虚拟存储器、置换算法、局部性原理和抖动

2小时前
47

AI模型:Deepseek


仅供参考


Let's Go!


=======================我是分割线=================================


虚拟存储器:


严格说,前四种主要是实存管理方式,后三种(页式、段式、段页式)常用于实现虚拟存储器。按你的分类,举应用实例简要说明:


1. 单一连续分区  
   应用实例:MS-DOS。内存分系统区和用户区,一次只运行一个程序,如 DOS 下运行 edit.com 或早期游戏。


2. 固定分区  
   应用实例:IBM OS/360 MFT。内存预先分成若干固定大小分区,可同时装入多道作业,如银行批处理作业按分区大小排队装入。


3. 可变分区  
   应用实例:IBM OS/360 MVT。按作业实际大小动态划分内存,如作业需 200KB 就分 200KB,释放后留下空洞。


4. 可重定位分区  
   应用实例:OS/360 MVT 的内存紧凑。当空闲区太碎无法装入新作业时,系统移动已装入作业,合并出连续大空闲区再装入。


5. 页式  
   应用实例:Windows 虚拟内存。程序分页,物理内存分页框,页表映射;物理内存不够时,把不常用页换出到 pagefile.sys。


6. 段式  
   应用实例:16 位 DOS 的 CS:IP 寻址。程序按代码段、数据段、栈段分段,段表记录基址和长度,逻辑地址由“段号+偏移”组成。


7. 段页式  
   应用实例:32 位 Windows/Linux 在 x86 上的内存管理。先按段选择子找到段,再通过页目录、页表映射到物理页框,兼顾逻辑分段和页式离散分配。

总结:单一连续、固定、可变、可重定位主要用于早期实存管理;页式、段式、段页式是现代虚拟存储器的常见实现方式。


=======================我是分割线=================================


置换算法、局部性原理和控制抖动


这些概念在浏览器、手机、Windows 任务管理器、视频播放器、数据库里都很常见。举例如下:


 一、置换算法


1. 最优算法(OPT)  
   淘汰未来最长时间不再用的页。理论上最优,但无法预知未来。  
   常见应用:作为基准,评估其他缓存/置换算法的好坏。比如数据库教学里,用已知查询序列计算“最少缺页次数”,看 LRU 差多少。实际系统不直接用。


2. 随机算法  
   随机选一个淘汰,简单但效果不稳定。  
   常见应用:Redis 缓存有 allkeys-random、volatile-random 淘汰策略;某些 CDN 边缘节点、代理缓存为了省事,随机踢掉旧内容。


3. 先进先出算法(FIFO)  
   淘汰最早进入的。  
   常见应用:监控录像循环覆盖,最早录的片段先被覆盖;聊天软件只保留最近 100 条消息,最早的先删;打印队列按提交顺序处理。


4. 最近最少使用算法(LRU)  
   淘汰最久没被访问的。  
   常见应用:  
   - Windows 内存管理用 Clock 算法近似 LRU。  
   - 手机后台:最近用过的 App 保留,很久没用的被杀死。  
   - 浏览器缓存、Redis、Memcached 常用 LRU 淘汰旧数据。  
   - 输入法:你刚打过的词排在前面,很久不用的词被挤下去。

 

二、局部性原理


1. 时间局部性  
   刚访问过的,很可能很快再次访问。  
   常见应用:  
   - 程序里的循环变量 i 被反复访问,CPU 缓存和内存页都保留它。  
   - 你在 Word 里反复改同一段文字,这段内容留在内存里。  
   - 输入法记住你刚打的词,下次优先显示。


2. 空间局部性  
   访问一个地址后,附近的地址很可能马上被访问。  
   常见应用:  
   - Excel 按行读单元格,读完 A1 很快读 B1、C1,系统预读相邻数据。  
   - 视频播放器顺序读文件,Windows 预读后面的数据,减少卡顿。  
   - 数组遍历:a[0]、a[1]、a[2] 连续访问,CPU 缓存一次取一整块。

 

三、控制抖动


1. 工作集  
   进程当前频繁访问的页面集合。  
   常见应用:  
   - 任务管理器“详细信息”里有“内存 - 工作集”。  
   - Photoshop 打开大图时工作集很大,Windows 尽量让它留在物理内存。  
   - 手机后台 App 工作集太大,系统会杀掉它,腾内存给前台。


2. 缺页率  
   缺页次数占总访问次数的比例。缺页率太高,说明内存不够,系统频繁读硬盘,产生抖动。  
   常见应用:  
   - 资源监视器“内存”里有“硬错误/秒”。  
   - 同时开太多程序,硬错误/秒飙升,磁盘占用 100%,鼠标卡顿,这就是抖动。  
   - 玩游戏时内存不足,频繁读硬盘,画面一卡一卡,也是抖动。


总结: 

 
OPT、随机、FIFO、LRU 是缓存/页面淘汰策略;时间局部性和空间局部性解释了为什么缓存和预读有效;工作集和缺页率是判断系统是否抖动的关键指标。Windows、手机、浏览器、数据库里都能看到这些机制。



传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!!

收藏
点赞 ・0
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回