发布时间:2013-05-16 10:54:45
内核空间:需要包含头文件#include<linux/vmalloc.h> #include<string.h> #include<slab.h>1、kmalloc() -- kfree()申请函数:void *kmalloc(size_t size,int flags);第一个参数是要分配的块的大小第二个参数是分配标志。此函数申请的内存位于物理内存映射区域,而且在物理上也是连续的它们与真实的物理地址只有.........【阅读全文】
发布时间:2013-05-10 14:40:05
阻塞操作是指,在执行设备操作时,若不能获得资源,则进程挂起直到满足可操作的条件再进行操作。非阻塞操作的进程在不能进行设备操作时,并不挂起。被挂起的进程进入sleep状态,被从调度器的运行队列移走,直到等待的条件被满足。 在Linux 关于上述例程,我们补充说一点,如果将驱动程序.........【阅读全文】
发布时间:2013-05-03 10:44:12
放了一个五一,回来工作就没状态。在拿起spin lock时候才发现里面实现的还是比较复杂的。话说互斥和同步有semaphore , mutex等等。但是呢semaphore的性能没mutex好(对于为什么mutex比semaphore好,可以参看mutex-design.txt),而且比mutex大。所以现在广泛的使用mutex。看了mutex的结构体后发现里面其实使用了spin,.........【阅读全文】
发布时间:2013-04-29 18:38:50
所谓原子操作,就是该操作绝不会在执行完毕前被任何其他任务或事件打断。这种情况一般出现在一个变量会被多个线程使用。那么在其使用时需要避免中断。具体下面原子操作的概念可以参考《linux内核设计与实现》第八章 内核同步方法。在Linux里面提供了原子操作typedef struct {volatile int counter;} atomic_t;.........【阅读全文】