Linux内核同步与互斥
文章平均质量分 91
分析Linux内核同步互斥源代码
业余程序员plus
分享知识,传播开源精神,致敬郝斌老师!
展开
-
spin_lock
1.概述1.1.自旋锁的由来自旋锁最初是为了SMP系统设计的,实现了在多处理器情况下保护临界区,所以在SMP系统中,自旋锁的实现是完整的,实现了真正的自旋(忙)等待。但是对于UP(单处理器)系统,自旋锁并没有自旋,而是通过关闭系统抢占来保护临界区。1.2.自旋锁的目的自旋锁的实现是为了保护一段短小的临界区操作代码,保证这个临界区的操作是原子的,从而避免并发的竞争风险。在内核中,可以看到许多内核数据结构中都嵌入了类型为spinlock_t的变量,这些变量用于保证访问共享数据结构的操作是原子的,即将临界原创 2021-03-14 15:47:38 · 786 阅读 · 0 评论 -
Linux中临界区、互斥量、信号量、自旋锁和事件的区别与联系
Linux中四种进程或线程同步互斥的控制方法 1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。 2、互斥量:为协调共同对一个共享资源的单独访问而设计的,互斥对象只有一个。 3、信号量:为控制一个具有有限数量用户资源而设计,只能在进程上下文中使用,适合长时间访问共享资源的情况 4、自旋锁:适合短时间访问共享资源的情况,如果锁被长时间持有,等待线程会消耗...原创 2018-03-25 11:11:57 · 4898 阅读 · 0 评论 -
Linux内核源码阅读之自旋锁的作用及其实现
作用: 内核中的自旋锁的作用是保护一段临界区域的操作是独占的,不能因为多个CPU或者多个进程同时访问破坏数据结构。在单核系统和多核系统中自旋锁的实现有所不同。 多核系统: 对于多核系统,主要考虑一个cpu进入临界代码区域之后,其它cpu不能再次进入这个临界代码区域。 单核系统: 对于单核系统,主要的情景是一个进程进入了临界区域后,不能被其它进程抢占,如果被其他进程抢占,会导致进程抢占的c...原创 2018-03-01 10:59:41 · 596 阅读 · 0 评论