高效阅读

本文是对指导员吴刚《如何持续高效阅读》悦读会内容的整理,夹杂了一些我自己简陋的理解。

阅读界里我觉得自己是个奇葩。看到书架上那一本看了我一个童年+青春期的《童年》,我才意识到自己从小到大没有看完任何一本文学名著。去中科院后被那里高知的同学用《三国演义》和《封神榜》羞辱得体无完肤,至今记忆犹新,发誓要好好研究读书的学问,好好读书,好好做事!

上下文切换时堆栈的切换

上下文切换

一般指用户上下文与内核上下文的之间切换。内核上下文又分为中断/异常上下文、系统调用上下文 —— 区别是后者可以从用户空间使用INT指令陷入(即门描述符特权级别为DPL_USER)。上下文切换就是: 1)暂停执行、2) 保护现场、3) 恢复现场、4) 恢复执行的过程。这里的现场只CPU现场,就是各个寄存器以及标志位的状态。

Linux热插拔机制的介绍和应用

热插拔即带电插拔,热插拔功能就是允许用户在不关闭系统,不切断电源的情况下取出和更换损坏的硬盘、电源或板卡等部件。Linux内核支持热插拔的部件有USB设备、PCI设备甚至CPU。Linux的热插拔支持是一个连接底层硬件、内核空间和用户空间程序的机制,且一直在变化,故立文讨论之。

内核调试工具SystemTap:适合懒人的printk替代品

SystemTap是一个Linux调试和性能分析工具,可用于应用层和内核层的分析,但主要侧重内核层。SystemTab可以在不修改内核代码不重复编译内核不重启机器的情况下,收集运行内核的信息并使信息可视化。调试人员可以利用它绘制函数调用关系图,打印寄存器信息和调用栈,输出内核中指定变量(可以是局部变量)。它如同一个更加方便prink,方便调试人员观察内核行为,诊断错误异常,分析系统性能。在YAVIS开发过程中,我们使用SystemTap分析包发送和接收情况,并分析通信性能瓶颈。

从零构建内核:系统调用

内核工作在最高特权级上。由于x86保护机制的存在,低特权级的用户态进程不能使用一些特权指令,或者访问内核数据,以保证系统的稳定。但有时候,我们需要提供用户态进程访问内核资源的途径。但这个途径必须是事先安排好的指定路线——去内核这个野生动物保护区,出于游客安全和动物保护的原则,游客不应该随意行动。系统调用就是一辆辆旅游观光车,以内核的身份代替用户进程访问内核数据或者执行内核代码。

从零构建内核:中断处理框架

中断处理程序,也叫Interupt Handler或中断服务例程(ISR),是中断发生后运行的一系列代码,一般用作对中断的响应。在我的内核中,构建了一个简单的框架,方便新处理函数的加入。