操作系统3-连续内存分配
CPU内存
CPU-L1cache-L2cache-memery-disk # 逻辑地址空间 抽象、隔离、保护、共享、虚拟化(临时放入disk) # 内存管理 程序重定向,分段,分页,虚拟内存,按需分叶虚拟内存 # 地址空间和地址生成 C程序用变量表示地址,汇编还是用符号,机器码就开始使用逻辑地址了,CPU的MMU中有一段区域来映射逻辑地址到物理地址 # 约束程序的内存 程序只可以访问他自己的内存,当他访问其他地方的时候,操作系统应该使用安全检测 # 内存碎片 外部碎片,是分配单元之间的内存碎片 内部碎片,已经分配给了应用程序,但是应用程序没法使用它 # 连续内存分配 程序启动的时候要分配,运行的时候要分配 # 第一匹配分配算法 一个一个找,第一个碰到的合法的就分出去, 需要按地址排序,分配的时候需要寻找合适的分区,还有看自由分区能否与相邻空闲分区合并 简单,容易产生更大的空闲块, 容易产生外碎片 # 最优分配算法 找差值最小的分区,分过去 按尺寸排序,分配需要查找,也要合并相邻空闲分区 避免分割大空间块,当大部分分配的是小尺寸的时候非常有效, 容易产生外部碎片,合并空闲分区慢,容易产生大量微小碎片 # 最差匹配分配 找最大的分区分过去 按尺寸排序,分配快,也要合并 分配中等尺寸有效 合并慢,外部碎片,破碎空间没有大空间了 # 压缩式碎片整理 挪动已经分配过的空间, 什么时候挪动?销量? # 交换式碎片整理 和硬盘交换,使用虚拟内存的方法。 把哪个换出去?什么时候换?