浅尝辄止76-分段/分页/TLB/cache

分页

有页表,就有页,页是内存分割的一个单位,常见的大小是4KB。即系统的全部内存会切分成一页一页的,然后再进行资源分配。

分段

内存还可以按段切分,比如可以一段用来存代码,另一段用来存数据。分段就是相对宏观的事情了。
常见的现代操作系统都是既分页又分段的,每段是多个页。

TLB

Translation Lookaside Buffer是为了加速地址转换速度而生的。
想象一下,按照三级页表结构,做一次地址转换需要访问几次内存呢?
至少两次,L1索引和L2索引各一次,如果是这样的话,每访问一次内存就要额外访问两次内存,这个代价也太大了。改善这件事的思路还是利用程序访问数据的局部性,这意味着最近访问过的地址在未来一段时间被访问的概率比较大,因此,如果将最近的地址转换结果保存起来,那么下次转换的时候就不用额外访问两次内存了。TLB就是做这件事的,它是为加速地址转换而存在的缓存。

cache

cache即缓存,它位于CPU和主存之间,它是为了加速CPU访问主存而存在的。同样,也是利用了程序访问的局部性。

程序访问局部性,本质上就是利用概率来优化决策,理性的生活决策也应该这样做出。

你可能感兴趣的:(浅尝辄止76-分段/分页/TLB/cache)