基本硬件(基地址与界限地址)算法
地址绑定(编译时、加载时、 运行时)数组
逻辑地址空间与物理地址空间spa
动态加载操作系统
动态连接与共享库(与静态库对比)线程
维护着一个可运行进程就绪队列,进行内存与磁盘间线程的载入与存出。3d
内存分区之可变分区的思想,将内存分红一个个孔(hole),使用一张表维护hole的使用状况。blog
存在碎片问题(分为外碎片与内碎片)队列
外部碎片大,解决思路有 紧缩 与 分页、分段(运行物理地址不连续的策略)进程
将内存分为不一样长度的段,维护分段硬件支持段表内存
<段名称s,段偏移d>
物理内存分为固定大小的块,称为帧。逻辑内存也分为一样大小的块,称为页。
<页码p,页偏移> 与对应的页表
TLB 带Hash页表--转换表缓冲区
保护机制与共享页
分层页表
哈希页表(数组+链表)
倒置页表
使用虚拟内存来逻辑内存容量--分配出去但未使用的内存空间,经过伪分配实现扩容。
概念:仅在须要时,才加载页面。
调页程序--惰性变换器实现
通常缺页错误的处理很简单:
缺页处理的时间花费主要体如今:处理缺页中断、读入页面、从新启动进程
当用户进程在执行时,可能发生缺页错误。操做系统肯定所须要页面的磁盘位置,可是却发现内存上没有空闲的帧。全部内存都在使用。此时,它会选择交换出一个进程,以释放它在全部帧并下降多道程序。
在没有空闲帧的状况下,那么就要查找当前不在使用的一个帧,并释放它,牺牲帧,他被换出到交换空间,并修改它的页表。能够看到当没有空闲帧的状况下,须要两个页面传输(一个传入,一个传出)。这种状况世界加倍了缺页错误处理时间,并增长了有效的访问时间。 为了减小置换的时间,系统提供了一个修改位,二者的关联采用硬件。每当一个页面内的任何字节被写入时,它的页面修改位会由硬件来设置,以表示该页面被修改过。当要选择一个页面置换时,它会先看这个页面或者帧有没有被修改过,若是没有修改过就不用将它换出,直接进行换入,将它的空间覆盖。
近似LRU
基于计数
搭配上页面缓冲算法--最近被淘汰的页面被放置在高速磁盘区,减小淘汰错误页面下次换回的代价
分配算法--平均与比例
全局分配与局部分配(区别,是否面向全部进程的内存暑假页)
频繁发生页面置换