• Linux 内核源码中的 container_of 宏和 offsetof 宏分析

    1. 前言 今天在看 Linux 内核源码中有关链表数据结构时,遇到到 container 宏和 offsetof 宏,然后跳转到其定义处,发觉它的定义的形式好陌生并难以理解,所以就作此笔记记录一下。 2. offsetof 宏 2.1 宏的功能 offsetof 宏的功能就是获得结构体变量中的指定成员变量相对于结构体变量起始地址的偏移量。 2.2 宏的定义 offsetof 宏的定义如下所示:...


  • VNC 性能提升方法

    1. 提高客户端屏幕显示的帧率 作为一款远程做桌面的产品,屏幕画面显示是否卡顿永远都是最重要的用户体验。因此,提高客户端上屏幕显示的帧率就至关重要。 1.1 屏幕更新策略 屏幕更新策略主要涉及到下面两个问题: Server 端如何检测出屏幕画面发生了变化并生成显示更新? Server 端何时将显示更新发送到 Client 端? 下面就对这两个问题进行一个简单的分析: 1.1.1 显示更新的生成 这个问题的本质其实是显示更新与当前系统窗口系统的绘图命令之间的关系。在 Server 端可以采用来两种策略来生成显示更新: 积极更新策略(Eager display...


  • 时间管理的七句话

    本文转载自阮一峰的网络日志 昨天,我做了一个小分享,关于时间管理。 0. 下面七句话,我希望自己能做到、但都没做到。 1. “进程切换非常昂贵,避免多任务,保持单进程。” 不要同时做多件事,结果可能都没做好,还拖长了工作时间。 上图是多任务状态和单进程状态的对比,可以看到,多任务状态会花费更多的时间。 2. “研究表明,集中注意力、高效工作,每天最多4小时。” 一个人能够集中注意力的时间,是有限的。一般来说,高效工作只能持续四个小时,其余时间就都是低效工作了。 上图左侧是大多数人每天的时间分配,如果你能保证4个小时都高效工作,那么完全可以变成右侧的时间分配。 3. “划分任务的优先级,不要把’急切’当作’重要’。” 你的时间有限,不可能做所有事。最重要的事,应该首先做。 一个有用的技巧是,将所有任务按照”重要性”和”紧急性”两个维度,分成四个象限。第一象限优先级最高,第四象限最低。 4. “起床后,不要查看邮件和微信。” 早晨精力最充沛,消耗在邮件和微信就太可惜了,应该用来做更重要的事。而且,邮件代表对别人优先级高,不等于对你优先级高。你的时间到底属于谁?你自己,还是某个给你写信的人?(推荐阅读《为什么起床后不能收邮件?》) 5....


  • Linux 系统调用内核源码分析

    什么是系统调用? 系统调用是应用程序与内核交互的一种方式。系统调用作为一种接口,通过系统调用,应用程序能够进入操作系统内核,从而使用内核提供的各种资源,比如操作硬件,开关中断,改变特权模式等等。首先,系统调用是一个软中断,既然是中断那么一般就具有中断号和中断处理程序两个属性,Linux 使用 0x80 号中断作为系统调用的入口,而中断处理程序的地址放在中断向量表里。 系统调用在内核空间和用户空间之间建立了一个连接的中间层,它主要为系统提供了下面三个主要功能: 第一,系统调用在底层硬件和用户空间之间建立了一个抽象的接口。例如,当用户空间的应用程序想读写一个文件时,程序员只需要通过系统调用接口完成读写操作即可,而不需要知道文件所在的底层磁盘是什么介质类型以及它所使用的是什么文件系统等一系列复杂的底层细节。 第二,系统调用让操作系统变得更加稳定和安全。Linux 中的内核好比就是一个仲裁者,它基于访问权限、用户组、临界区等机制来控制用户空间中应用程序用户空间中应用程序对底层硬件资源的访问,使得应用程序不会非法地使用硬件资源或者窃取其他应用程序所使用的资源以致对系统造成损害。 第三,系统调用便于实现系统虚拟化。系统调用提供的中间层,它屏蔽了许多的底层的细节,使得应用程序和底层系统的耦合性降低,这样系统的虚拟化变得更加简单。 系统调用的处理过程 当我们在用户态应用程序中调用一个系统调用函数时,它背后所隐藏的从用户态到内核态的整个处理过程,如下图所示: 在上图中,应用程序中调用 libc 库中的封装好的 xyz() 系统调用函数,然后 xyz() 就接着执行 libc...


  • CPU 是如何工作的?

    CPU 发展历史 20 世纪 70 年代微处理器(microprocessor)的发展,深刻地影响了 CPU 的设计与实现。Intel 最早在 1971 年推出了它的第一款微处理器,也是全球第一款微处理器:Intel 4004;而到了 1974 年,Intel 又是第一个推出了全球第一款称得上处理器的芯片:Intel 8080 ,这款处理器芯片一经推出后就得到了各大计算机厂商的青睐,因为它采用了全新的制造工艺,完全取代了其他微处理器的原有的制作工艺,它将 CPU 变地更小更快,并且随着这款芯片的广泛应用, Intel...