2019年12月26日

摘要: limlog 作一篇文章记录实现,驱动优化迭代。 代码仓库 用法 实现 后端实现 前端实现 日期时间的处理 线程id的获取 日志行的其他项处理 优化 整形字符串格式化优化 测试 benchmark 性能分析 TODO Change Log 参考 对日志库的 特点期望: 正确性,这个是最重要也是最基本 阅读全文
posted @ 2019-12-26 19:22 文一路挖坑侠 阅读(16457) 评论(8) 推荐(5) 编辑

2019年12月9日

摘要: 环境 实现机器为VMWare的虚拟机,操作系统为 Debian-11(无桌面版本),内核版本为 5.10.0,指令集为 AMD64(i7 9700K),编译器为 GCC-10. 代码 Lab 的代码克隆自 https://pdos.csail.mit.edu/6.828/2018/jos.git Q 阅读全文
posted @ 2019-12-09 19:12 文一路挖坑侠 阅读(1551) 评论(0) 推荐(0) 编辑

2019年11月20日

摘要: Graphviz Graphviz 是一个自动排版的作图软件,可以生成 png pdf 等格式。 dot 语法介绍 部分图形属性介绍 示例 使用VSCode进行预览生成 参考 dot 语言 Graphviz 构建组件为 图,节点,边,用属性对其进行描述。 以下是定义DOT语言的抽象语法,约束的规则如 阅读全文
posted @ 2019-11-20 13:52 文一路挖坑侠 阅读(50405) 评论(4) 推荐(13) 编辑

2019年11月13日

摘要: C 表达式中的汇编指令 asm 为 gcc 中的关键字,asm 表达式为在 C代码中嵌套汇编指令,该表达式只是单纯的替换出汇编代码,并不对汇编代码的含义进行解析。 asm 表达式有两种形式,第二种 asm-qualifiers 包含了 goto 语句。 第一种形式为常见的用法,AssemblerTe 阅读全文
posted @ 2019-11-13 17:25 文一路挖坑侠 阅读(1691) 评论(0) 推荐(2) 编辑

2019年10月31日

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

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 文一路挖坑侠 阅读(734) 评论(0) 推荐(0) 编辑

2019年10月18日

摘要: eventfd(2) 结合 select(2) 源码分析 本文代码选自内核 4.17 eventfd(2) - 创建一个文件描述符用于事件通知。 使用 源码分析 参考 #include <sys/eventfd.h> int eventfd(unsigned int initval, int fla 阅读全文
posted @ 2019-10-18 20:44 文一路挖坑侠 阅读(1517) 评论(0) 推荐(0) 编辑

2019年10月12日

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

2019年9月25日

摘要: select(2),同步的 I/O 复用 直接看 epoll 的源码把自己绕晕了,先整个简单点的下手。 使用 源码分析 select(2) 提供的用户接口 #include <sys/select.h> int select(int nfds, fd_set *readfds, fd_set *wr 阅读全文
posted @ 2019-09-25 20:22 文一路挖坑侠 阅读(1386) 评论(0) 推荐(2) 编辑

2019年8月21日

摘要: 链接 在实际操作的过程中,测试的数据和 CS:APP 里面的内容有一些出入了,如重定位的方式,现在默认都使用 GOT+PLT 的方式进行重定位,与此带来的是 .rel.data 被干掉,使用 GOT 的方式访问。 编译过程 静态链接 目标文件 可重定位目标文件 符号解析 链接静态库 重定位 可执行目 阅读全文
posted @ 2019-08-21 22:05 文一路挖坑侠 阅读(511) 评论(0) 推荐(0) 编辑

导航