2019年10月31日

摘要:epoll(2) 源码分析 文本内核代码取自 5.0.18 版本,和上一篇文章中的版本不同是因为另一个电脑出了问题,但是总体差异不大。 "引子留下的问题" "关键数据结构" "提供的系统调用" "就绪事件相关逻辑" "epoll 间的相互影响及处理" "问题的解答" 引子留下的问题 在 "上一篇文章 阅读全文
posted @ 2019-10-31 17:36 小胖西瓜 阅读 (120) 评论 (0) 编辑

2019年10月26日

摘要:epoll(2) 使用及源码分析的引子 本文代码取自内核版本 4.17 epoll(2) I/O 事件通知设施。 epoll 是内核在2.6版本后实现的,是对 select(2)/poll(2) 更高效的改进,同时它自身也是一种文件,不恰当的比方可以看作 eventfd + poll。 多路复用也是 阅读全文
posted @ 2019-10-26 16:18 小胖西瓜 阅读 (107) 评论 (0) 编辑

2019年10月18日

摘要:eventfd(2) 结合 select(2) 源码分析 本文代码选自内核 4.17 eventfd(2) 创建一个文件描述符用于事件通知。 "使用" "源码分析" "参考" eventfd 作为一个非常简单的抽象文件,每个文件描述符都对应一个在内核空间维护的 , 一个无符号64位整形的计数器,而e 阅读全文
posted @ 2019-10-18 20:44 小胖西瓜 阅读 (101) 评论 (0) 编辑

2019年10月12日

摘要:poll(2) poll(2) 系统调用的功能和 select(2) 类似:等待一个文件集合中的文件描述符就绪进行I/O操作。 "使用" "实现" select(2) 的局限性: 关注的文件描述符集合大小最大只有 1024 文件描述符集合为顺序的,不能任意指定 fd,浪费占用的fd poll(2) 阅读全文
posted @ 2019-10-12 17:01 小胖西瓜 阅读 (92) 评论 (0) 编辑

2019年9月25日

摘要:select(2),同步的 I/O 复用 直接看 epoll 的源码把自己绕晕了,先整个简单点的下手。 "使用" "源码分析" select(2) 提供的用户接口 1. 第 1 个参数为最大的文件描述符加 1 2. 第 2 3 4 个参数依次为读写异常需要检查的结构体 3. 第 5 个参数为超时时间 阅读全文
posted @ 2019-09-25 20:22 小胖西瓜 阅读 (58) 评论 (0) 编辑

2019年8月21日

摘要:kfifo 的一些伪代码 kfifo_in 只修改 fifo->in 的值,含一个 STORE 指令,及若干 fifo->out fifo->in 的 LOAD 指令kfifo_out 相反,只修改 kfifo->out 的值,同样含一个 STORE 指令及若干 LOAD 指令把代码中的内存屏障去掉 阅读全文
posted @ 2019-08-21 22:05 小胖西瓜 阅读 (22) 评论 (0) 编辑

2019年6月10日

摘要:程序的机器级表示 时隔一年把 "CS:APP" 再看一遍,尤其针对栈的运行机制加深理解。 访问信息 16个通用寄存器 一个 x86 64 CPU 包含一组16个存储64位值的 。虽然是通用寄存器,但也有一些约定成俗的用法。r8 r9 ... 为80386之后扩展的8个寄存器 $rax$, 返回值 $ 阅读全文
posted @ 2019-06-10 21:22 小胖西瓜 阅读 (218) 评论 (1) 编辑

2019年6月4日

摘要:信息的表示和处理 在通用计算机中中, 作为最为 最小 的可寻址的内存单元,而不是访问内存中单独的位。 寻址和字节顺序 (大端法),数据最高字节部分地址在地址处,和人的感觉逻辑相似 (小端法),低字节部分在低地址处 布尔代数 TRUE FALSE NOT AND OR EXCLUSIVE OR(异或) 阅读全文
posted @ 2019-06-04 19:48 小胖西瓜 阅读 (264) 评论 (0) 编辑

2019年1月5日

摘要:Effective C++ Iter 3 尽可能使用 一个反逻辑的 bitwise const . 在 clang 3.8 上编译失败,编译器已经修复这个反逻辑的问题。const 成员函数只能返回 const char& 类型的变量,这就保证了对象不能被修改。 当存在 const 成员函数和 non 阅读全文
posted @ 2019-01-05 12:37 小胖西瓜 阅读 (33) 评论 (0) 编辑

2018年11月10日

摘要:文件和目录 Unix 所有的文件都对应一个 ,包含了一个文件所有的信息。 文件类型 普通文件 目录文件 块特殊文件 字符特殊文件 FIFO 套接字 符号链接 可以用 宏 来判断具体的文件类型,或者用 与屏蔽字 进行逻辑“与”运算,宏定义为: 文件访问权限 文件访问权限(用户)是由 S_IXXXX 等 阅读全文
posted @ 2018-11-10 14:59 小胖西瓜 阅读 (35) 评论 (0) 编辑

导航

统计