计算机操做系统 - 内存管理

计算机操做系统 - 内存管理

内存管理

分页系统地址映射缓存

内存管理单元(MMU)管理着地址空间和物理内存的转换,其中的**页表(Page table)存储着页(程序地址空间)页框(物理内存空间)**的映射表。markdown

一个虚拟地址分红两个部分,一部分存储页面号,一部分存储偏移量。oop

下图的页表存放着 16 个页,这 16 个页须要用 4 个比特位来进行索引定位。例如对于虚拟地址(0010 000000000100),前 4 位是存储页面号 2,读取表项内容为(110 1),页表项最后一位表示是否存在于内存中,1 表示存在。后 12 位存储偏移量。这个页对应的页框的地址为 (110 000000000100)。性能

2.一、虚拟内存管理

虚拟内存管理包括:虚拟内存概念、请求分页管理方式、页面置换算法、页面分配策略、工做集和抖动。spa

2.1.一、虚拟内存概念

mp.weixin.qq.com/s?__biz=MzA…操作系统

虚拟内存是一种存储模式,经过这种模式能让咱们有种感受,即:咱们的内存自己可以处理远比内存大的多的数据或者文件。code

虚拟内存可以处理比自己更大的数据的原理其实很是简单,你能够简单理解为按需加载,在操做系统里面这种方式有个专有的称呼:Demand Paging,这是虚拟内存管理的一种最多见的策略。

能这么作的缘由是存储在磁盘上的文件,在底层都会按照固定大小的page进行划分,咱们在使用cpu处理磁盘上的文件的时候,并非一下会把整个文件都载入内存,而是当用到这部分数据的时候才会去加载,也就是说一个page被拷贝进主内存的触发机制是:

  • 这块数据须要被加载

  • 当发生操做系统发起缺页信号时

也就是说在虚拟内存里面,咱们能够开辟一个固定大小的区域用来处理相关的数据,在加载数据时,若是这个区域没有满,就直接读满,若是满了以后,系统要读取新的page时,会发现这个page不在虚拟内存里面,就会发起一个缺页信号,为了读取新的数据进入内存,咱们能够释放掉前面已经处理过的数据,而后加载新的page替代被淘汰数据的page占的位置,被淘汰page的处理,咱们能够直接丢弃,也能够将其再次保存在磁盘上存储,防止未来还须要读取。

2.1.二、页面置换算法

前面提到,若是在内存里面申请的固定空间满了,会淘汰一部分page而后替换为新的page,这里面的这个算法很是关键,算法的好坏决定了内存要和磁盘发生swap的次数,这个次数直接直接影响了程序的性能。

缓存驱逐(过时)算法经常使用的策略有三种,分别是:

github.com/CyC2018/CS-…

2.1.2.一、先进先出策略

FIFO:First In First Out

2.1.2.二、最不常常使用策略

LFU:Least Frequently Used

2.1.2.三、最近最少使用策略

LRU:Least Recently Used

2.二、物理内存管理

包括程序装入等概念、交换技术、连续分配管理方式和非连续分配管理方式(分页、分段、段页式)。

2.2.一、分段
相关文章
相关标签/搜索