学习笔记
文章平均质量分 72
wangpengqi
这个作者很懒,什么都没留下…
展开
-
原子操作
原子操作所谓原子操作,就是该操作绝不会在执行完毕前被任何其他任务或事件打断,也就说,它的最小的执行单位,不可能有比它更小的执行单位,因此这里的原子实际是使用了物理学里的物质微粒的概念。原子操作需要硬件的支持,因此是架构相关的,其API和原子类型的定义都定义在内核源码树的include/asm/atomic.h文件中,它们都使用汇编语言实现,因为C语言并不能实现这样的操作。在linux中转载 2012-10-06 16:11:07 · 750 阅读 · 0 评论 -
原子位操作
原子位操作 操作函数的参数是一个指针和一个位号 原子位操作定义在文件中。令人感到奇怪的是位操作函数是对普通的内存地址进行操作的。原子位操作在多数情况下是对一个字长的内存访问,因而位号该位于0-31之间(在64位机器上是0-63之间),但是对位号的范围没有限制。 原子操作中的位操作部分函数如下:void set_bit(int nr, void *addr)转载 2012-10-07 18:19:22 · 1806 阅读 · 0 评论 -
内核同步机制-读写信号量(rw_semaphore)
四、读写信号量(rw_semaphore)读/写信号量适于在读多写少的情况下使用。如果一个任务需要读和写操作时,它将被看作写者,在不需要写操作的情况下可降级为读者。任意多个读者可同时拥有一个读/写信号量,对临界区代码进行操作。在没有写者操作时,任何读者都可成功获得读/写信号量进行读操作。如果有写者在操作时,读者必须被挂起等待直到写者释放该信号量。在没有写者或读者操作时,写者必须等待前面转载 2012-10-06 16:02:27 · 14035 阅读 · 0 评论 -
草稿
http://www.cnblogs.com/yanyansha/archive/2011/02/27/1966338.htmlhttp://www.linuxforum.net/forum/gshowflat.php?Cat=&Board=driver&Number=382745&page=0&view=collapsed&sb=5&o=all http://blog.163.com转载 2012-10-07 20:23:14 · 1023 阅读 · 0 评论 -
内核同步机制-信号量(semaphore)
三、内核信号量(semaphore) Linux的信号量是一种睡眠锁,这个不同于自旋锁.如果有一个任务试图获得一个已经被占用的信号量时,信号量会将其推进一个等待队列(具体可以参考进程的活动状态),然后让其睡眠,此时处理器能重获自由,而去执行其他代码.当持有信号量的进程将信号量释放后,处于等待队列中的那个进程会被唤醒,并获得该信号量.所以和自旋锁的区别是:1)信号量适用于锁会被长时间持有转载 2012-10-06 16:09:36 · 3919 阅读 · 1 评论 -
使用LD链接时候文件的顺序
将多个.o文件链接成可执行文件的时候。如果链接的顺序不对,会产生错误。《An introduction of gcc》里面有下面一段话:On Unix-like systems, the traditional behavior of compilers and linkersis to search for external functions from left to right转载 2012-12-10 20:48:29 · 1488 阅读 · 0 评论