一、前言 每一个Linux驱动工程师都知道这样一个准则:在中断上下文中不能睡眠。但是为什么interrupt context中不能调用导致睡眠的kernel API呢?如果驱动这么做会导致什么样的后果呢?这就是本文探讨的主题。为了理解这个主题,我们设计了一些非常简单的驱动程序和用户空间的程序,实际做 ...
分类:
系统相关 时间:
2018-02-13 23:39:41
阅读次数:
278
一、前言 在linux kernel的实现中,经常会遇到这样的场景:共享数据被中断上下文和进程上下文访问,该如何保护呢?如果只有进程上下文的访问,那么可以考虑使用semaphore或者mutex的锁机制,但是现在中断上下文也参和进来,那些可以导致睡眠的lock就不能使用了,这时候,可以考虑使用spi ...
分类:
系统相关 时间:
2018-02-13 22:55:45
阅读次数:
531
进程上下文与中断上下文的理解(感觉加个“进程由用户态切换到内核态时”反而不对,比较了下,感觉着讲的是错的) 又看了一些文章,首先CS(context switch)只会在内核态进行。而发生系统调用是会进入内核态,上下文已经发生变化了,即使回到用户态,未发生进程切换,也算是上下文切换。所以进程的上下文 ...
分类:
系统相关 时间:
2018-01-26 11:08:58
阅读次数:
340
1、前言 最近在学习linux内核方面的知识,经常会看到用户空间与内核空间及进程上下文与中断上下文。看着很熟悉,半天又说不出到底是怎么回事,有什么区别。看书过程经常被感觉欺骗,似懂非懂的感觉,很是不爽,今天好好结合书和网上的资料总结一下,加深理解。 2、用户空间与内核空间 我们知道现在操作系统都是采 ...
分类:
系统相关 时间:
2017-12-30 16:03:03
阅读次数:
301
内核基础 1、linux内核主要是由进程调度、内存管理、虚拟文件系统(字符设备驱动和块设备驱动)、网络接口(网络设备驱动)和进程通信5个子系统组成的。 1)进程调度控制系统中的多个进程对CPU的访问,使得多个进程能在CPU中"微观串行,宏观并行"地执行。 2)内存管理的主要作用就是控制多个进程安全的 ...
分类:
系统相关 时间:
2017-09-29 16:27:11
阅读次数:
255
alloc_skb--分配skb dev_alloc_skb--分配skb,通常被设备驱动用在中断上下文中,它是alloc_skb的封装函数,因为在中断处理函数中被调用,因此要求原子操作(GFP_ATOMIC) kfree_skb--减少skb引用,为0则释放,用于出错丢包时释放skb使用; dev ...
分类:
其他好文 时间:
2017-09-16 11:58:30
阅读次数:
284
一次简单网络读写的性能测试,TPS8W,vmstat监控到CS为12W,后来查阅资料这个CS具体包括哪些内容。大部分网络资料显示CS包括:模式切换(软中断),上下文切换。但后来一同志论证认为不正确,TPS8w,每个TPS有一次读写,就会发生16w的上下文切换。那CS应该只包括:上下文切换。什..
分类:
其他好文 时间:
2017-07-28 22:09:59
阅读次数:
120
转自:http://blog.csdn.net/lizuobin2/article/details/51791863 本文转载自:http://www.cnblogs.com/Anker/p/3269106.html 1、前言 最近在学习Linux内核方面的知识,经常会看到用户空间与内核空间及进程上 ...
分类:
系统相关 时间:
2017-06-24 21:54:22
阅读次数:
321
转自:http://www.cnblogs.com/Anker/p/3269106.html 1、前言 最近在学习linux内核方面的知识,经常会看到用户空间与内核空间及进程上下文与中断上下文。看着很熟悉,半天又说不出到底是怎么回事,有什么区别。看书过程经常被感觉欺骗,似懂非懂的感觉,很是不爽,今天 ...
分类:
系统相关 时间:
2017-06-15 10:41:12
阅读次数:
345
谈论进程上下文 、中断上下文 、 原子上下文之前,有必要讨论下两个概念: a -- 上下文 上下文是从英文context翻译过来,指的是一种环境。相对于进程而言,就是进程执行时的环境; 具体来说就是各个变量和数据,包括所有的寄存器变量、进程打开的文件、内存信息等。 b -- 原子 原子(atom)本 ...
分类:
系统相关 时间:
2017-06-11 18:19:42
阅读次数:
175