随笔分类 -  【02】linux内核

摘要:前台消费位置 = consumed_head | urgent 区 | tail 区 | consumed_head low_water high_water 再结合当前已经有多少“有效前置页”: effective_ahead_pages = cached_ahead_pages + inflig 阅读全文
posted @ 2026-04-13 21:19 苏格拉底的落泪 阅读(11) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2026-04-03 09:40 苏格拉底的落泪 阅读(11) 评论(0) 推荐(0)
摘要:参考资料 1. pin_user_pages 阅读全文
posted @ 2026-03-14 16:13 苏格拉底的落泪 阅读(20) 评论(0) 推荐(0)
摘要:内核数据结构之kfifo 参考资料 1. 内核数据结构之kfifo 阅读全文
posted @ 2026-03-09 21:07 苏格拉底的落泪 阅读(21) 评论(0) 推荐(0)
摘要:参考资料 1. linux内存管理结构大蓝图 阅读全文
posted @ 2026-03-09 20:57 苏格拉底的落泪 阅读(18) 评论(0) 推荐(0)
摘要:xarray原理 参考资料 1.xarray 简易体会与实现 2. Linux lib 之 xarray 3. Linux文件页缓存(Page Cache) 阅读全文
posted @ 2026-03-08 19:31 苏格拉底的落泪 阅读(23) 评论(0) 推荐(0)
摘要:参考资料 1. page到folio的变迁 2. 内存管理特性分析(七):Linux内核复合页(Compound Page)原理分析 阅读全文
posted @ 2026-03-05 09:59 苏格拉底的落泪 阅读(17) 评论(0) 推荐(0)
摘要:_nr_pages = 本次预读窗口大小(单位:page) 这个来自: file_ra_state.ra_pages 查询/read_ahead_kb参数: 1. 在客户端: cat /proc/self/mounts | grep 你的挂载点 在查: ls -l /sys/class/bdi/ 找 阅读全文
posted @ 2026-03-03 11:13 苏格拉底的落泪 阅读(21) 评论(0) 推荐(0)
摘要:参考资料 1. 内核文件系统技术揭秘 阅读全文
posted @ 2026-01-26 17:34 苏格拉底的落泪 阅读(19) 评论(0) 推荐(0)
摘要:fuse回写 static const struct address_space_operations fuse_file_aops = { .readpage = fuse_readpage, .readahead = fuse_readahead, .writepage = fuse_write 阅读全文
posted @ 2025-12-22 16:10 苏格拉底的落泪 阅读(21) 评论(0) 推荐(0)
摘要:原子操作 //该函数对原子类型的变量进行原子读操作,它返回原子类型的变量v的值。 atomic_read(atomic_t * v); //该函数设置原子类型的变量v的值为i。 atomic_set(atomic_t * v, int i); //该函数给原子类型的变量v增加值i。 void ato 阅读全文
posted @ 2025-12-21 20:38 苏格拉底的落泪 阅读(12) 评论(0) 推荐(0)
摘要:nfs回写② struct nfs_pageio_descriptor { struct inode *pg_inode; // const struct nfs_pageio_ops nfs_pgio_rw_ops const struct nfs_pageio_ops *pg_ops; // c 阅读全文
posted @ 2025-12-19 11:03 苏格拉底的落泪 阅读(26) 评论(0) 推荐(0)
摘要:cephfs内核客户端回写 cephfs内核客户端回写: const struct address_space_operations ceph_aops = { .readpage = ceph_readpage, .readpages = ceph_readpages, .writepage = 阅读全文
posted @ 2025-12-18 20:28 苏格拉底的落泪 阅读(17) 评论(0) 推荐(0)
摘要:nfs协议版本 结构体接口定义 v2 const struct nfs_rpc_ops nfs_v2_clientops v3 const struct nfs_rpc_ops nfs_v3_clientops v4 const struct nfs_rpc_ops nfs_v4_clientops 阅读全文
posted @ 2025-12-17 13:52 苏格拉底的落泪 阅读(24) 评论(0) 推荐(0)
摘要:nfs客户端回写 const struct address_space_operations nfs_file_aops = { .readpage = nfs_readpage, .readpages = nfs_readpages, .set_page_dirty = __set_page_di 阅读全文
posted @ 2025-12-17 11:38 苏格拉底的落泪 阅读(29) 评论(0) 推荐(0)
摘要:用户写和后台写回writeback竞争关系 问题本质:文件正在被写入 page cache(脏页变更多)与此同时后台 flusher 正在把同一文件的脏页写回。那内核如何并发处理?不会互相覆盖?不会 crash?不会写错数据? 如果两者同时操作,竞争如何解决? Case 1:用户写入时 page 正 阅读全文
posted @ 2025-12-16 16:41 苏格拉底的落泪 阅读(36) 评论(0) 推荐(0)
摘要:结构体address_space_operations接口分析 struct address_space_operations { int (*writepage)(struct page *page, struct writeback_control *wbc); int (*readpage)( 阅读全文
posted @ 2025-12-16 10:09 苏格拉底的落泪 阅读(32) 评论(0) 推荐(0)
摘要:Page Cache Writeback脏页回写机制 脏页回写与每个块设备的dwork紧密相关,先看下它的初始化: static int wb_init(struct bdi_writeback *wb, struct backing_dev_info *bdi, gfp_t gfp) { int 阅读全文
posted @ 2025-12-16 09:16 苏格拉底的落泪 阅读(39) 评论(0) 推荐(0)
摘要:源码解读Linux等待队列 参考资料 1. 源码解读Linux等待队列 2. 内核基础设施wait queue 3. 理解 Linux 等待队列 4. Linux等待队列(Wait Queue) 阅读全文
posted @ 2025-12-15 14:37 苏格拉底的落泪 阅读(21) 评论(0) 推荐(0)
摘要:struct page /* * 系统中的每一个物理页(physical page)都对应一个 struct page 结构, * 用于追踪该页当前的用途。注意,我们无法追踪哪些任务(task) * 正在使用这个页;但如果该页是一个 pagecache 页面, * 我们可以通过 rmap(rever 阅读全文
posted @ 2025-11-02 22:04 苏格拉底的落泪 阅读(73) 评论(0) 推荐(0)