- 博客(5)
- 收藏
- 关注
原创 由preempt_disable的实现想到的
#define preempt_disable() / do { / inc_preempt_count(); / barrier(); / } while (0) 实现很简单,就两行代码,第一行把进程描述符中的preempt_count加1,第二行加一个优化屏障。展开inc_preempt_count()后就是: current->thread_info->preempt_count++; barrier(); 看到这个实现的时候,觉的很奇怪,用个优
2010-12-19 23:40:00
4482
原创 RCU实现原理
<br /> RCU是linux 2.6 kernel实现的一种高效的同步机制,适用于读者多,写者少的情况。它的适用场合和读写锁是很相似的。但是和读写锁来比,它可以提高了读者的效率。因为使用RCU的读者在访问共享数据的时候不需要加锁,而使用读写锁的读者则需要加读锁,在多CPU环境中会有高速缓存行失效的问题,所以效率稍低。<br /> 但是没有天下没有免费的午餐。RCU有它自身的缺点和使用限制。首当其冲的缺点就是写者的效率问题,RCU要求写者在更新共享数据的时候,先拷贝一份,修改,然后在更新,写者做了太多
2010-11-17 21:56:00
2230
原创 linux设备文件实现
<br /> Linux将一些硬件设备抽象成文件,使得程序员可以用文件系统的接口对设备进行访问,这是unix类系统的一大特色。那么这个抽象是怎么实现的呢?这首先要归功于VFS,它将文件的概念抽象提升成一种可以进行输入输出操作的对象。这样它就不仅仅能表示磁盘上的普通文件,也可以表示某种设备。设备文件主要有字符设备文件和块设备文件两种。网络设备由于其自身的特殊性,不能用设备文件来表示。那么具体VFS是怎么将某个设备文件和某个设备联系起来的呢?这要分两个部分进行说明,一是设备文件的创建,一是设备文件的访问。下面
2010-10-30 16:27:00
1740
原创 SPI master驱动程序概述
<br /> SPI驱动程序包括两部分,一部分是SPI设备的驱动程序,另一部分是SPI Master的驱动程序。SPI设备驱动程序架设在SPI Master驱动程序的上层,它通过SPI Master驱动提供的接口来对SPI设备进行操作。SPI设备一般都是EEPROM或者FLASH等比较简单的设备,其设备驱动程序比较简单。本文主要描述SPI Master的驱动程序。<br /> 首先描述一下SPI Master和SPI设备之间的硬件连线,有CLK,MOSI,MISO,片选等。CLK是时钟信号。MOSI即M
2010-08-10 00:24:00
1813
6
原创 如何掌握一种体系结构
<br /> 对于一种体系,各种文档很多,一个一个都看过来要花很多的精力,而且效果还不一定好,很容易出现前面看后面忘的状况。我总结出现这个问题的主要原因就是太快进入细节而没有一个整体框架。太多的细节会给人一种很累的感觉,有了整体框架在向下扩展到细节会轻松很多。而且有了整体框架后,很多细节根本都不需要关注,用到的时候查阅手册就可以了。<br /> 下面我就讨论一下体系结构的整体框架的各个方面,对于每个方面都提出一些问题,解决了这些问题就基本上掌握了体系结构的整体框架。带这问题去读文档,效率会高很多。<br
2010-07-18 16:16:00
757
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人