linux Linux-Storage-Stack-Diagram 工作学习中,没有比图表更好的东西了(虽然很多人在嘲笑PPT),尤其是描述精准的图表。当你想画图说明一个结构或一个流程时,必须对其已经充分理解。而在讲解一张图时,也必须对其有基本的理解。这真的不简单,反正对我来说是这样。关于Linux Storage架构,就有一张描述很精准的图,“Linux Storage Stack Diagram”。这张…
无分类 Linux内核内存管理 Linux使用虚拟内存技术,所以在应用层所能看到的、访问的都是虚拟地址。对于32位系统来说(本文涉及的都是32位系统),每一个进程可以寻址的地址空间都是4G,无论物理内存有多大。应用开发者其实是可以不用关系内存空间的划分,仅仅使用封装后的接口就可以完成开发。但在工作中,如果对地址空间没有基本的了解,在程序设…
无分类 41501034gcp内核TCP-SACK-BUG导致的请求无返回 某天更新发现某服务收到请求但客户端无法收到返回。幸运的是,客户端同学能在测试环境重现问题。2分法找到首个故障版本并进行了回退。故障版本仅仅修改了snd_buf,理论上不应导致该问题。
无分类 Binder驱动之传输事件 Binder传输时通过Binder线程为主体进行交互的,所以Binder线程中会保存Binder传输事件,在binder_thread中使用transaction_stack做为一种栈的形式来记录所有的传输事件。transaction_stack保存着当前正在进行的传输事件,采取压栈的方式保存,所以栈顶为最新的传输,栈底为最早的传输。这种方式也表现了线程中传输事件的…
无分类 Binder驱动之debug信息与数据结构 在进行Binder debug或分析问题时,通常需要看一下当前的Binder状态信息。Kernel通过SYS系统提供了一些文件节点供我们读取,它们位于/sys/kernel/debug/binder/,分别为:
无分类 Binder驱动之最简单的通信 在Android系统中可以所是无处不Binder,Binder传输在每时每刻都发生着。很多情况下,一个进程中都不会只存在一个独立的Binder传输,经常是并发多个Binder传输,而且会存在Binder嵌套。尤其像system_server这种重要的进程Binder传输会更多。在系统发生问题时,如果追踪到system_server,会发现大部分情况都是在Binder传输…
linux Linux内核中reuseport的演进 SO_REUSEPORT选项在Linux 3.9被引入内核,在这之前也有一个很像的选项SO_REUSEADDR。如果你不太清楚这两者的区别和联系,建议阅读How do SO_REUSEADDR and SO_REUSEPORT differ?。如果不想读,那么下面这一节算是为懒人准备的。
无分类 Linux-驱动架构简析 这篇文章不是驱动开发教程,只不过作者读过内核源码后,想对知识做一个梳理,从源码的角度分析一下Linux的驱动架构的实现。行文也不大讲究,希望可以把问题说清楚。本文使用的kernel 源码版本是 3.13.3。