![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
storage
文章平均质量分 93
search_star
个人博客seekstar.github.io
展开
-
各种CLOCK算法
这篇文章的背景是操作系统里的页缓冲。LRU要求每次访问某个页的时候都进入trap,由操作系统把这个页放到栈顶。显然这是不能接受的。所以一般采用CLOCK算法或者其变种,其特点是在hit的时候,只需要由硬件执行一个很简单的操作(通常是设置访问位),把这次访问记录下来即可。然后在合适的时机,由操作系统去看这些访问记录,把冷的页替换掉。朴素CLOCK算法一圈页,一个指针指向某页,要替换某页时,看指向的那页的访问位是不是1,如果不是就将这页替换掉,如果是则置0,然后移到下一页继续看。GCLOCK论文:原创 2021-10-14 22:22:16 · 3390 阅读 · 0 评论 -
内存屏障
参考:https://blog.csdn.net/maotianwang/article/details/9154159硬件指令:sfense: store fense在sfence指令前的写操作当必须在sfence指令后的写操作前完成。lfense: load fense在lfence指令前的读操作当必须在lfence指令后的读操作前完成。mfence: memory fence在mfence指令前的读写操作当必须在mfence指令后的读写操作前完成。linux内核中把它们封装成了一些原创 2020-05-12 23:55:22 · 191 阅读 · 0 评论 -
clflush、clflushopt、clwb、pcommit、ntstore
参考:https://danluu.com/clwb-pcommit/ (14年文档)https://blog.csdn.net/maokelong95/article/details/81362837clflush: 把cache line刷回内存,并且让cache line失效。clflushopt:clwb: 把cache line写回内存,但是不让cache line失效。pcommit: 把所有落在持久化内存区域的store持久化。(已弃用?)把内容写回NVMM的一般步骤:c原创 2020-09-07 01:21:41 · 2616 阅读 · 0 评论