自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

qb_2008的专栏

哪怕是被默默注视的我也会有飞翔的勇气

  • 博客(20)
  • 资源 (7)
  • 收藏
  • 关注

原创 linux内核部件分析(十一)——waitqueue与线程的阻塞

当你必须一个复杂的系统,协调系统的方方面面,灵活地支持各种机制和策略,即使很简单的问题也会变得很复杂。linux绝对就是这样一个复杂的系统。所以我们要理解它,尽量从原理的角度去理解事务的处理流程,尽量避免各种细枝末节的干扰,尽量规避那些足以压垮自己的庞然大物。(尽管细致末节和庞然大物很可能就是linux闪光的地方,但我们还是小心为上。)原理    现在我们来考虑linux中线程的阻塞。它的

2011-10-31 02:15:08 8678 1

原创 人该怎样强大起来2

前几天看到俞敏洪先生在《我们》栏目谈大学生就业问题的访谈,我深受触动。其实现在大学生也好,研究生也好,都是在高校的象牙塔内,作为天之骄子,感受不到在社会上生存的压力。再加上现在高校普遍采用放羊式教学,严进宽出,学生的能力和素质并没用得到很好的锻炼和提升。而学生最大的短板之一,恐怕就是心理承受能力。    俞先生举了一个例子。一堆面粉,放在案板上,你一拍,就散了。加点水,揉一下,你再拍,就不容易

2011-10-30 01:01:45 1312

原创 linux内核部件分析(十)——设备驱动模型之class

前面看过了设备驱动模型中的bus、device、driver,这三种都是有迹可循的。其中bus代表实际的总线,device代表实际的设备和接口,而driver则对应存在的驱动。但本节要介绍的class,是设备类,完全是抽象出来的概念,没有对应的实体。所谓设备类,是指提供的用户接口

2011-10-10 03:27:22 11811 3

原创 linux内核部件分析(九)——设备驱动模型之device-driver

前面我们分析了device、driver、bus三种类型,主要是三者的注册与注销,在sysfs中的目录与属性文件创建等内容。本节就来详细分析下,在设备注册到总线上时,总线是如何为其寻找对应的驱动的;在驱动注册到总线上时,总线又是如何为其寻找对应的设备的。    本节的实现代码

2011-10-09 00:55:50 5571 2

原创 linux内核部件分析(八)——设备驱动模型之bus

前面我们分析了设备驱动模型中的device和driver,device和driver本来是不相关的东西,只因为bus的存在,才被联系到了一起。本节就来看看设备驱动模型中起枢纽作用的bus。本节的头文件在include/linux/device.h和drivers/base/bas

2011-10-08 10:56:51 6373

原创 linux内核部件分析(七)——设备驱动模型之driver

上节我们分析设备驱动模型中的device,主要是drivers/base/core.c,可以说是代码量最大的一个文件。本节要分析的驱动driver,就要相对简单很多。原因也很简单,对于driver,我们能定义的公共部分实在不多,能再sysfs中表达的也很少。本节的分析将围绕dri

2011-10-08 01:41:25 5373 1

原创 人该怎样强大起来

身处这个纷繁复杂的社会,一不小心,二十多个年头已经从指间溜走。已经大学毕业的我却依然如刚上学时的懵懂,一样不知道未来在哪里,一样感觉到自己的脆弱。如果说一定有什么变化,或许是梦想吧。最初的我,梦想完全是自由的,可以天马行空,可以随心所欲。但现在,却已有了太多的羁绊。现实的压力压得

2011-10-07 22:04:36 2570 4

原创 linux内核部件分析(六)——设备驱动模型之device

linux的设备驱动模型,是建立在sysfs和kobject之上的,由总线、设备、驱动、类所组成的关系结构。从本节开始,我们将对linux这一设备驱动模型进行深入分析。     头文件是include/linux/device.h,实现在drivers/base目录中。本节要

2011-10-07 17:01:14 7067 2

原创 linux内核部件分析(五)——设备驱动模型的基石kobject

之前我们分析了引用计数kref,总结了sysfs提供的API,并翻译了介绍kobject原理及用法的文档。应该说准备工作做得足够多,kobject的实现怎么都可以看懂了,甚至只需要总结下API就行了。可我还是决定把kobject的实现代码从头分析一遍。一是因为kobject的代码

2011-10-06 13:32:38 7743 2

原创 sysfs API总结

sysfs是用于表现设备驱动模型的文件系统,它基于ramfs。要学习linux的设备驱动模型,就要先做好底层工作,总结sysfs提供给外界的API就是其中之一。sysfs文件系统中提供了四类文件的创建与管理,分别是目录、普通文件、软链接文件、二进制文件。目录层次往往代表着设备驱动

2011-10-06 11:07:11 18808 2

原创 linux内核部件分析(四)——更强的链表klist

前面我们说到过list_head,这是linux中通用的链表形式,双向循环链表,功能强大,实现简单优雅。可如果您认为list_head就是链表的极致,应该在linux链表界一统天下,那可就错了。据我所知,linux内核代码中至少还有两种链表能占有一席之地。一种就是hlist,一种

2011-10-05 23:57:37 7984 2

翻译 Everything you never wanted to know about kobjects, ksets, and ktypes

要理解kobject抽象及其之上的设备驱动模型并不简单,难点之一就在于,没有一个明显的起点。要处理好kobject,需要理解一些别的类型,而这些类型又是相互引用的。为了让事情简单,我们采用多遍的过程,从模糊的概念出发,逐渐增加细节。为此,这里先对一些相关概念进行定义:—kob

2011-10-05 12:20:30 2803

原创 linux内核部件分析(三)——记录生命周期的kref

kref是一个引用计数器,它被嵌套进其它的结构中,记录所嵌套结构的引用计数,并在计数清零时调用相应的清理函数。kref的原理和实现都非常简单,但要想用好却不容易,或者说kref被创建就是为了跟踪复杂情况下地结构引用销毁情况。所以这里先介绍kref的实现,再介绍其使用规则。

2011-10-02 21:21:40 15299 4

原创 linux内核部件分析(二)——原子性操作atomic_t

在任何处理器平台下,都会有一些原子性操作,供操作系统使用,我们这里只讲x86下面的。在单处理器情况下,每条指令的执行都是原子性的,但在多处理器情况下,只有那些单独的读操作或写操作才是原子性的。为了弥补这一缺点,x86提供了附加的lock前缀,使带lock前缀的读修改写指令也能原子

2011-10-02 20:19:16 29401 2

原创 linux内核中的内存屏障

前言       之前读了关于顺序一致性和缓存一致性讨论的文章,感觉豁然开朗。对linux内核中出现的种种同步和屏障,想做一点总结。缓存一致性       之前一直认为linux中很多东西是用来保证缓存一致性的,其实不是。缓存一致性绝大部分是靠硬件机制实现的,

2011-10-02 17:27:30 4552 1

转载 spin lock在kernel 2.4与2.6中的实现与改进

1. TAS lock (test-and-set)这是最简单的spinlock,CPU会在硬件上提供一些指令来帮助OS实现spinlock,比如x86就有xchg, LOCK指令前缀等指令。。。test_and_set()可以利用这些指令对某个memory地址,来原

2011-10-02 15:39:23 3196

转载 为什么程序员需要关心顺序一致性(Sequential Consistency)而不是Cache一致性(Cache Coherence?)

本文所讨论的计算机模型是Shared Memory Multiprocessor,即我们现在常见的共享内存的多核CPU。本文适合的对象是想用C++或者Java进行多线程编程的程序员。本文主要包括对Sequential Consistency和Cache Coherence的概念性

2011-10-02 14:42:56 2840 1

转载 cache历程

前 言   纵观PC系统和CPU二十年的发展,随着半导体加工工艺水平的不断提高,CPU和存储器的性能都有了很大的提高。  CPU频率的提高,必然要求系统中存储器的存取速度要提高,还要求其容量要增大。主存储器DRAM容量的提高还是比较快的,但是DRAM读取时间的提高却很慢。

2011-10-02 14:24:39 2519

原创 linux模块编程(四)——消息的使者list

通过之前几节,我们已经了解了内核线程的创建方法kthread,内核同步的工具completion。现在我们就来学学内核线程传递消息的方法list。或许大家会说,list不是链表吗。不错,list是链表,但它可以变成承担消息传递的消息队列。消息的发送者把消息放到链表上,并通过同步工

2011-10-02 00:43:13 3031 4

原创 linux内核部件分析(一)——连通世界的list

在linux内核中,有一种通用的双向循环链表,构成了各种队列的基础。链表的结构定义和相关函数均在include/linux/list.h中,下面就来全面的介绍这一链表的各种API。struct list_head { struct list_head *next, *pr

2011-10-01 17:43:18 6328 3

rtems移植代码分析之sparc-leon2

rtems移植代码分析之sparc-leon2: 对rtems中针对sparc处理器、leon2兼容板卡移植代码进行分析, 主要包括三部分代码分析:cpukit/score/cpu、 c/src/lib/libcpu/sparc、c/src/lib/libbsp/sparc/leon2 希望能对喜欢rtems或者sparc的人有所帮助,共勉!

2012-08-13

GNU autoconf automake and libtool

GNU Autoconf, Automake, and Libtool By Vaughan, V. Gary, Ben Elliston, Tom Tromey, Ian Lance Taylor

2011-07-24

java_swing.chm

java_swing程序设计.chm 介绍swing各个组件

2010-04-30

mysql-connector-java-5.1.5-bin.jar

mysql-connector-java-5.1.5.jar

2010-04-30

数据库系统概念课后答案

数据库系统概念课后practice和exercise答案

2009-11-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除