1 /dev 该目录下放的是设备文件,是应用程序和内核的交互文件,应用程序通过对这些文件的读写和控制(open、write、,poll等),可以访问实际的设备。应用程序通过mknod创建的文件,如果底层驱动对mknod的设备号有对应的驱动,那么应用程序open "/dev/**"时,就会调用到底层的 ...
分类:
系统相关 时间:
2020-05-19 22:33:10
阅读次数:
130
LDD:linux device driver ,在操作系统作用下,应用程序必须要通过设备驱动程序操作设备 驱动程序:应用程序和设备之间必须通过驱动程序 应用程序 ——> write(ioctl)驱动程序——>(write)设备 应用程序 <——read(ioctl)驱动程序——>(read)设备 ...
分类:
系统相关 时间:
2020-02-11 11:56:41
阅读次数:
98
Linux 设备驱动以Kernel Module形式存在,Linux Kernel Module可以动态加载到内核中。 - lsmod Show the status of modules in the Linux Kernel - modinfo Show information about a ...
分类:
系统相关 时间:
2020-01-26 22:08:43
阅读次数:
106
内核一般通过jiffies来获取当前时间,该数值表示的是最近一次系统启动到当前的时间间隔,它和设备驱动程序无关,因为它的声明期只限于系统的运行期;但是驱动程序可以用jiffies来计算不同事件之间的间隔;通常,利用jiffies值来测量时间间隔已经足够了,如果要测量更短的时间差,只能使用处理器特定的 ...
分类:
系统相关 时间:
2019-10-29 20:06:38
阅读次数:
220
自旋锁可以再不能休眠的代码中使用,比如中断处理例程;在正确使用的情况下,自旋锁通常可以提供比信号量更高的性能; 一个自旋锁是一个互斥设备,它只能由两个值,锁定和解锁;通常实现为某个整数值中的单个位;希望获得特定锁的代码测试相关位,如果锁可用,则锁定位被设置,而嗲吗继续进入临界区;相反,如果锁被其他人 ...
分类:
系统相关 时间:
2019-10-29 20:05:13
阅读次数:
128
使用非阻塞IO的应用程序经常使用select,poll,epoll系统调用;它们的功能本质上是一样的:都允许进程决定是否可以对一个或者多个打开的文件做非阻塞的读取或者写入;这些电泳也会阻塞进程,直到给定的文件描述符中的任何一个可读取或者写入;因此,它们常常用于那些需要使用多个输入或者输出流而又不会阻 ...
分类:
系统相关 时间:
2019-10-29 20:01:01
阅读次数:
110
读取-复制-更新(read-copy-update,RCU)是一种高级的互斥机制,在正确的条件下,可以获得高的性能; RCU对它保护的数据结构做了一些限定,它针对经常发生读而很少发生写的情况做了优化,被保护的资源应该通过指针访问,而对这些资源的引用必须仅由原子代码拥有,在RCU保护的代码范围内不能进 ...
分类:
系统相关 时间:
2019-10-29 20:00:48
阅读次数:
175
当一个进程被置入休眠时,它会被标记为一种特殊状态,并从调度器的运行队列中移走;直到某些情况下修改了这个状态,进程才会在任意cpu上调度,即运行该进程;休眠中的进程会被搁置在一边,等待将来的某个时间发生; 为了将进程以一种安全方式进入休眠,需要牢记下面的规则: 第一条规则,永远不要在原子上下文中进入休 ...
分类:
系统相关 时间:
2019-10-29 19:59:45
阅读次数:
159
当要保护的资源很小,很简单,会频繁的被访问而且写入访问很少的且必须快速时(即读不允许让写饥饿),就可以使用顺序锁(seqlock);从本质上讲,顺序锁会允许读取者对资源的自由访问,但需要读取者检查是否和写入者发生冲突,当这种冲突发生时,就需要重试对资源的访问; 顺序锁通常不能用于保护包含指针的数据结 ...
分类:
系统相关 时间:
2019-10-29 19:56:42
阅读次数:
105
有些驱动程序需要延迟比较长的时间,即长于一个时钟滴答; 如果想把执行延迟若干个时钟滴答,或者对延迟的精度要求不高,最简单的实现方法就是一个监视jiffies计数器的循环;这种忙等待的实现方法通常具有下面形式,其中j1是延迟终止的jiffies值: 对cpu_relax的调用将以架构相关的方式执行,其 ...
分类:
系统相关 时间:
2019-10-29 19:51:47
阅读次数:
90