- 博客(5)
- 收藏
- 关注
原创 面试遇到的问题
1、fwrite与磁盘写回C库函数fwrite()就是通过write()系统调用来实现文件写操作。标准IO流操作读写普通文件是使用全缓冲的,默认缓冲区长度是该文件系统优先选用的IO长度(一般是4kB)。因此当数据长度没有填满缓冲区时,没有写回文件,在文件中是无法看到的。标准IO都有缓存区,这和系统缓冲不同,我们使用fflush()只保证了将IO缓冲写入系统缓冲中,使IO读操作能成功,但...
2019-07-23 17:01:36
208
原创 linux从内核内存到malloc
1、物理页分配和管理,页单位——伙伴系统,避免外部碎片由于某些物理页位于内存中的特殊为值,因此所有物理页不能一视同仁,通过zone将物理页分区,跟据每个区域zone划分形成链表,2^n的页框构成free_area[MAX_ORDER](MAX_ORDER默认11)。内核中分配空闲页面的基本函数是get_free_page/get_free_pages,它们或是分配单页或是分配指定...
2019-07-23 13:31:56
713
原创 RDMA 编程备忘录
1、RDMA WRITE WITH IMM操作需要消耗receive request,因此在接收方处理完之后需要ibv_post_recv()避免RNR错误。(测试所得,不准确之处请指教)
2019-03-29 17:26:13
533
2
原创 伙伴系统 位图计算
看了一天的东西,记录一下。B2 = B1 ^ (1 << O)P = B & ~(1 << O)公式一:通过在order(O)的页B1找到同在一个order的伙伴页。公式二:通过页B(在O)找到在O+1的父亲。例如在order 0,0页1页互为伙伴页。其父亲为order 1的0页。一次类推。伙伴系统在分配的时候,如果该order空闲列表为空,...
2018-10-16 19:25:36
590
转载 Linux内存回收机制
Linux内存回收机制内核之所以要进行内存回收,主要原因有两个:内核需要为任何时刻突发到来的内存申请提供足够的内存,以便cache的使用和其他相关内存的使用不至于让系统的剩余内存长期处于很少的状态。 当真的有大于空闲内存的申请到来的时候,会触发强制内存回收。在不同的内存分配路径中,会触发不同的内存回收方式,内存回收针对的目标有两种,一种是针对zone的,另一种是针对一个memcg的,把...
2018-08-24 20:46:15
8264
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人