Linux
文章平均质量分 88
南瓜_
这个作者很懒,什么都没留下…
展开
-
Linux内核同步-基本概念
在linux内核中,为驱动等内核模块提供了互斥与同步的内核机制。如果运行的系统中自始至终只有一个执行路径,那么无须考虑互斥与同步的问题。现在的系统不仅支持多进程而且自持多处理器。当多个执行路径并发执行时需要保证对共享资源的安全访问。一般来讲,互斥是对资源的排他性安排,而同步则要对进程执行的先后顺序做出妥善的安排。我们对共享的资源进行访问的代码段称为临界区(critical section),而导致原创 2014-11-08 14:27:16 · 432 阅读 · 0 评论 -
Linux procfs详解
1.0 proc文件系统总览 在类Unix系统中体现了一种良好的抽象哲学,就是几乎所有的数据实体都被抽象成一个统一的接口--文件来看待,这样我们就可以用一些简单的基本工具完成大量复杂的操作。在Linux中存在着一类 特殊的伪文件系统,用于使用与文件接口统一的操作来完成各种功能,例如ptyfs、devfs、sysfs和procfs。而procfs就是其中应用最广泛的一种伪文件系统。 proc转载 2014-11-08 14:05:36 · 544 阅读 · 0 评论 -
linux内核同步(2)--原子操作
内核同步方法主要有:原子操作、自旋锁、读写自旋锁、信号量、读写信号、完成变量等。内核提供了两组原子操作接口:一是对整数进行操作;而是对位进行操作。在linux支持的所有体系接口上都实现了这两组接口:要么支持简单的原子操作;要么为单步执行提供锁内存总线的指令。在include\linux\types.h中对原子变量atomic_t进行了定义:[cpp] view plai原创 2014-11-08 14:28:21 · 477 阅读 · 0 评论 -
定位Oops的具体代码行
(来自Linus Torvalds的讨论:https://groups.google.com/group/linux.kernel/browse_thread/thread/b70bffe9015a8c41/ed9c0a0cfcd31111又,http://kerneltrap.org/Linux/Further_Oops_Insights) 例如这转载 2014-10-30 15:26:33 · 602 阅读 · 0 评论 -
linux内核同步(5)--其它同步方法
其他的同步方法:完成变量DKL大内核锁禁止抢占顺序和屏障等 禁止抢占 由于内核的可抢占性,意味着一个任务与被抢占的任务可能会在同一个临界区内运行。为避免这种情况,内核抢占代码会使用自旋锁作为非抢占区域的标记。即如果一个自旋锁被持有,内核便不能进行抢占。 但是有一种情况,不需要自旋锁,但是仍需要关闭内核抢占:原创 2014-11-08 14:31:06 · 548 阅读 · 0 评论 -
linux内核同步(3)--自旋锁
自旋锁最多只能由一个可执行线程执有,因此其可以防止多于一个的执行线程同时进入临界区。自旋锁因为占用处理器资源,所以不应该被长时间执有。与自旋锁相比,信号量会有两次明显的上下文切换,阻塞的线程要换出与换入,因此执有自旋锁的时间最好要小于两次上下文切换耗时。 自旋锁可以用在中断处理程序中,但是信号量不可以,因为会信号量会导致中断睡眠。在中断中使用spin_lock时,一原创 2014-11-08 14:29:33 · 700 阅读 · 0 评论 -
linux内核同步(4)--信号量
任务获取一个已经被占用的信号量,信号量将其推进一个等待队列,然后让其睡眠,CPU去执行其他代码。当持有信号量的进程将信号释放,处于等待队列汇总的任务被唤醒,并获取信号量。 信号量会引起睡眠,所以在中断上下文中不能使用信号量。一般在进程上下文中使用。一个进程占用信号量的同时不能同时占用自旋锁,因为占用信号量会引起睡眠,而占用自旋锁是不允许睡眠的。信号量原创 2014-11-08 14:30:20 · 553 阅读 · 0 评论 -
进程上下文与中断上下文
进程上下文和中断上下文是操作系统中很重要的两个概念,这两个概念在操作系统课程中不断被提及,是最经常接触、看上去很懂但又说不清楚到底怎么回事。造成这种局面的原因,可能是原来接触到的操作系统课程的教学总停留在一种浅层次的理论层面上,没有深入去研究。处理器总处于以下状态中的一种:1、内核态,运行于进程上下文,内核代表进程运行于内核空间;2、内核态,运行于中断上下文,内核代表硬转载 2014-11-08 14:34:04 · 481 阅读 · 0 评论