自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

转载 大话Linux内核中锁机制之RCU、大内核锁

大话Linux内核中锁机制之RCU、大内核锁在上篇博文中笔者分析了关于完成量和互斥量的使用以及一些经典的问题,下面笔者将在本篇博文中重点分析有关RCU机制的相关内容以及介绍目前已被淘汰出内核的大内核锁(BKL)。文章的最后对《大话Linux内核中锁机制》系列博文进行了总结,并提出关于目前Linux内核中提供的锁机制的一些基本使用观点。十、RCU机制本节将讨论另一种重要锁机制

2012-06-17 12:11:20 1932

转载 大话Linux内核中锁机制之完成量、互斥量

大话Linux内核中锁机制之完成量、互斥量在上一篇博文中笔者分析了关于信号量、读写信号量的使用及源码实现,接下来本篇博文将讨论有关完成量和互斥量的使用和一些经典问题。 八、完成量下面讨论完成量的内容,首先需明确完成量表示为一个执行单元需要等待另一个执行单元完成某事后方可执行,它是一种轻量级机制。事实上,它即是为了完成进程间的同步而设计的,故而仅仅提供了代替同步信号量的一种解

2012-06-17 12:10:38 828

转载 大话Linux内核中锁机制之信号量、读写信号量

大话Linux内核中锁机制之信号量、读写信号量在上一篇博文中笔者分析了关于内存屏障、读写自旋锁以及顺序锁的相关内容,本篇博文将着重讨论有关信号量、读写信号量的内容。 六、信号量关于信号量的内容,实际上它是与自旋锁类似的概念,只有得到信号量的进程才能执行临界区的代码;不同的是获取不到信号量时,进程不会原地打转而是进入休眠等待状态。它的定义是include\linux\sema

2012-06-17 12:09:27 824

转载 大话Linux内核中锁机制之内存屏障、读写自旋锁及顺序锁

大话Linux内核中锁机制之内存屏障、读写自旋锁及顺序锁    在上一篇博文中笔者讨论了关于原子操作和自旋锁的相关内容,本篇博文将继续锁机制的讨论,包括内存屏障、读写自旋锁以及顺序锁的相关内容。下面首先讨论内存屏障的相关内容。三、内存屏障不知读者是是否记得在笔者讨论自旋锁的禁止或使能的时候,提到过一个内存屏障函数。OK,接下来,笔者将讨论内存屏障的具体细节内容。我们首先来看

2012-06-17 12:08:34 1163

转载 大话Linux内核中锁机制之原子操作、自旋锁

大话Linux内核中锁机制之原子操作、自旋锁很多人会问这样的问题,Linux内核中提供了各式各样的同步锁机制到底有何作用?追根到底其实是由于操作系统中存在多进程对共享资源的并发访问,从而引起了进程间的竞态。这其中包括了我们所熟知的SMP系统,多核间的相互竞争资源,单CPU之间的相互竞争,中断和进程间的相互抢占等诸多问题。通常情况下,如图1所示,对于一段程序,我们的理想是总是美好的,

2012-06-17 12:07:43 1446

转载 浅析Linux下PCI设备驱动的访问

浅析Linux下PCI设备驱动的访问本文主要是基于笔者最近在实现Linux系统中PCI设备驱动过程中的一些学习总结,总共分成三部分,下面依次对这三部分进行介绍。一、PCI总线众所周知,PCI总线体系结构是一种层次式的体系结构,而在这种结构中,PCI桥设备则占据着重要的位置,它将父总线与子总线连接在一起,从而使整个系统看起来像一颗倒置的树形结构。树的顶端是系统的CPU,它通过

2012-06-17 12:06:40 835

转载 linux驱动程序中的并发控制

现代操作系统有三大特性:中断处理、多任务处理和多处理器。这些特性导致当多个进程、线程或者CPU同时访问一个资源时,可能发生错误,这些错误是操作系统运行所不允许的。在操作系统中,内核需要提供并发控制机制,对共享资源进行保护。  在操作系统中,并发是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。并发容易

2012-06-14 16:01:27 466

转载 linux设备驱动程序中的阻塞机制

阻塞与非阻塞是设备访问的两种方式。在写阻塞与非阻塞的驱动程序时,经常用到等待队列。一、阻塞与非阻塞  阻塞调用是指调用结果返回之前,当前线程会被挂起,函数只有在得到结果之后才会返回。  非阻塞指不能立刻得到结果之前,该函数不会阻塞当前进程,而会立刻返回。  对象是否处于阻塞模式和函数是不是阻塞调用有很强的相关性,但并不是一一对应的。阻塞对象上可以有非阻塞的调用方式,我们可以通过

2012-06-14 16:00:15 462

转载 Linux高级字符设备之Poll操作

在用户程序中,select()和poll()也是与设备阻塞与非阻塞访问息息相关的,使用非阻塞I/O的应用程序通常会使用select和poll系统调用查询是否可对设备进行无阻塞的访问。select系统调用最终会引发设备驱动中的poll函数被执行。一、select()系统调用:用于多路监控,当没有一个文件满足要求时,select将阻塞调用进程。1.select()原型:in

2012-06-14 15:59:09 304

转载 Linux设备驱动之mmap设备操作

1.mmap系统调用void *mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset);功能:负责把文件内容映射到进程的虚拟地址空间,通过对这段内存的读取和修改来实现对文件的读取和修改,而不需要再调用read和write;参数:addr:映射的起始地址,设为NULL由系统指定;len

2012-06-14 15:56:20 524

转载 Linux设备驱动之I/O端口与I/O内存

一、统一编址与独立编址该部分来自于:http://blog.chinaunix.net/space.php?uid=21347954&do=blog&id=443670,感谢mason_hu的分享。  从CPU连出来一把线:数据总线、地址总线、控制总线,这把线上挂着N个接口,有相同的,有不同的,名字叫做存储器接口、中断控制接口、DMA接口、并行接口、串行接口、AD接口……一个设备要想接

2012-06-14 15:54:22 797

转载 linux设备驱动之Ioctl控制

大部分驱动除了需要具备读写设备的能力之外,还需要具备对硬件控制的能力。 一、在用户空间,使用ioctl系统调用来控制设备,原型如下:int ioctl(int fd,unsigned long cmd,...);/*fd:文件描述符cmd:控制命令...:可选参数:插入*argp,具体内容依赖于cmd*/  用户程序所作的只是通过命令码告诉驱动程序它想做什么,

2012-06-14 15:47:45 776

空空如也

空空如也

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

TA关注的人

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