摘要: 人类的智力存在上限和无法扩容可能是人类文明发展的最大障碍。为了解决这一问题,人类发展史上所有的科技发明,无一不是想方设法来扩容脑力。软件作为一种模仿人类脑力活动的“生命体”,在其发展早期,也遇到类似问题,Frederick P. Brooks, Jr.教授著名的“人月神话”观点就是对这一现象的总结。 阅读全文
posted @ 2018-03-01 17:49 wahaha02 阅读(588) 评论(0) 推荐(0) 编辑
摘要: 为什么是Docker 进入21世纪,继互联网之后,云计算开始大放异彩。云计算是互联网发展后期的必然方向,反过来,云计算也进一步推动了互联网的发展。云计算模式最关键的突破就是资源使用方式的改变。 云计算是一种融合了多项计算机技术的、以数据和处理能力为中心的密集型计算模式,它的主要技术包括虚拟化、分布式 阅读全文
posted @ 2018-02-23 15:55 wahaha02 阅读(380) 评论(0) 推荐(0) 编辑
摘要: 问题背景 最近boot中遇到个用户态程序的segment fault异常,除了一句“Segment fault”打印外无其他任何打印。该问题复现概率较低,定位起来比较棘手。我们的boot是个经过裁剪的最小linux系统,由于bootflash大小的限制,加上在boot阶段也没有挂载其他储存设备,所以 阅读全文
posted @ 2017-12-13 17:39 wahaha02 阅读(4580) 评论(0) 推荐(0) 编辑
摘要: Linux设备驱动故障定位指引 Linux设备驱动种类繁多,涉及的知识点多,想写一个通用的故障定位方法指引,是个难度颇大且不容易做好的工作。限于笔者的经验,难以避免存在疏漏之处,欢迎大家留言指正补充。 Linux设备驱动的知识点涉及硬件和软件,其故障原因也各种各样。不过从笔者多年的维护经验来看,与内 阅读全文
posted @ 2017-09-14 22:23 wahaha02 阅读(825) 评论(0) 推荐(0) 编辑
摘要: 软件重构是改善代码可读性、可扩展性、可维护性等目的的常见技术手段。圈复杂度作为一项软件质量度量指标,能从一定程度上反映这些内部质量需求(当然并不是全部),所以圈复杂度往往被很多项目采用作为软件质量的度量指标之一。 C语言开发的项目中,switch/case代码块是一个很容易造成圈复杂度超标的语言特性 阅读全文
posted @ 2017-08-26 18:55 wahaha02 阅读(7756) 评论(0) 推荐(1) 编辑
摘要: 引子 Linux操作系统的一大优势就是支持数以万计的芯片设备,大大小小的芯片厂商工程师都在积极地向Linux kernel提交设备驱动代码。能让这个目标得以实现,这背后隐藏着一个看不见的技术优势:Linux内核提供了一套易于扩展和维护的设备驱动框架。Linux内核本身提供一套设备驱动模型,此模型提供 阅读全文
posted @ 2017-08-21 22:08 wahaha02 阅读(3814) 评论(0) 推荐(0) 编辑
摘要: TLA+介绍 TLA+(WIKI,官网)是一门领域特定语言,主要用于数理逻辑计算和并发系统的正确性验证。TLA+中的TLA代表的是“行为时序逻辑(Temporal Logic of Actions)”,Action 是纯函数;“+”代表“Data Logic”。这是由 Dr. Lamport所提出的 阅读全文
posted @ 2017-07-26 16:20 wahaha02 阅读(3319) 评论(0) 推荐(1) 编辑
摘要: linux kexec 介绍 kexec的功能是用一个运行的内核去运行一个新内核,就像运行一个应用程序一样。这种机制因为跳过了bootloader,可以实现系统的快速重启。另外kdump也是基于kexec实现(示意如下)。 kexec的实现有几点难点: kexec的使用示例如下,其分为2部分:kex 阅读全文
posted @ 2017-07-11 21:48 wahaha02 阅读(4724) 评论(0) 推荐(0) 编辑
摘要: Linux中断子系统 Linux中断子系统是个很大的话题,如下面的思维导图所示,包含硬件、驱动、中断上半部、中断下半部等等。本文着眼于中断控制器(PIC),特别是级联中断控制器驱动部分,对驱动的设计和调试要点进行分析总结。 级联中断控制器驱动 中断控制器的核心对象是irq_chip,其提供了很多接口 阅读全文
posted @ 2017-06-15 20:05 wahaha02 阅读(1775) 评论(0) 推荐(1) 编辑
摘要: 本文主要是对平时工作和Ulrich Drepper的《What Every Programmer Should Know About Memory》中软件性能优化方法的总结归纳,主要为了方便日后快速查看和检查,不涉及方法具体细节。本文涉及的软件性能优化手段包括cache、TLB、预取、多线程、总线带 阅读全文
posted @ 2017-05-27 16:17 wahaha02 阅读(1919) 评论(0) 推荐(0) 编辑