Linux内核之旅—微信平台开篇
十几年前,也就是2004年,那些在Linux内核方面已经驰骋5年的学生以分享知识的情怀申请域名,购买空间,创办了“Linux内核之旅”网站,并撰写了电子杂志的系列文章: 第一期《走入Linux 世界》
十几年前,也就是2004年,那些在Linux内核方面已经驰骋5年的学生以分享知识的情怀申请域名,购买空间,创办了“Linux内核之旅”网站,并撰写了电子杂志的系列文章: 第一期《走入Linux 世界》
操作系统的时钟处理按理来说应该是个早已成熟的技术,不必再费口舌讨论什么。事实也的确如此。然而在虚拟环境下(不仅仅是xen,vmware这些虚拟机),对时钟的处理可绝非轻而易举,如果你耐心看看你虚拟环境下运行的guest操作系统,如linux/windows等,往往用眼睛就可发觉其wall clock走的不是那么的准确,有些飘忽,时快时慢. 如果你运行某些性能测试工具,也会发现测试数据忽高忽低。这是为什么呢? 怎么解决呢? 本文就该问题进行一些初步探讨.
本文着重讨论实时应用程序的本质特性和Linux对于运行这类任务的优势和不足。以后的文章中,我将向大家介绍采用那些方法可以使实时任务满足硬实时要求。多数方法都是针对Linux内核而言,但是有时也会用到GUN C库等。
Linux内核中的循环缓冲区(circular buffer)为解决某些特殊情况下的竞争问题提供了一种免锁的方法。这种特殊的情况就是当生产者和消费者都只有一个,而在其它情况下使用它也是必须要加锁的。
Linux内核中大量使用了队列,这里仅列举它在进程调度中的几处应用。Linux内核中的队列是以双链表的形式连接起来的,include/linux/list.h中定义了队列并提供了一些接口,详细的介绍可以参考[1]中的附录。
Linux内核中的循环缓冲区(circular buffer)为解决某些特殊情况下的竞争问题提供了一种免锁的方法。这种特殊的情况就是当生产者和消费者都只有一个,而在其它情况下使用它也是必须要加锁的。
Copyright (c), linuxkerneltravel, all rights reserved. 【 陕ICP备17020329号-1 】
模板来自 Bootstrapious. 移植到 Hugo 来自 DevCows.