选择特殊符号
选择搜索类型
请输入搜索
在单处理机环境中可以使用特定的原子级汇编指令swap和test_and_set实现进程互斥,(Swap指令:交换两个内存单元的内容;test_and_set指令取出内存某一单元(位)的值,然后再给该单元(位)赋一个新值,关于为何这两条指令能实现互斥我们不在赘述,读者可以了解其算法) 这些指令涉及对同一存储单元的两次或两次以上操作,这些操作将在几个指令周期内完成,但由于中断只能发生在两条机器指令之间,而同一指令内的多个指令周期不可中断,从而保证swap指令或test_and_set指令的执行不会交叉进行.
但在多处理机环境中情况有所不同,例如test_and_set指令包括“取”、“送”两个指令周期,两个CPU执行test_and_set(lock)可能发生指令周期上的交叉,假如lock初始为0, CPU1和CPU2可能分别执行完前一个指令周期并通过检测(均为0),然后分别执行后一个指令周期将lock设置为1,结果都取回0作为判断临界区空闲的依据,从而不能实现互斥。
为在多CPU环境中利用test_and_set指令实现进程互斥,硬件需要提供进一步的支持,以保证test_and_set指令执行的原子性. 这种支持多以“锁总线”(bus locking)的形式提供的,由于test_and_set指令对内存的两次操作都需要经过总线,在执行test_and_set指令之前锁住总线,在执行test_and_set指令后开放总线,即可保证test_and_set指令执行的原子性,用法如下:
算法4-6:多处理机互斥算法(自旋锁算法)
do{
b=1;
while(b){
lock(bus);
b = test_and_set(&lock);
unlock(bus);
}
临界区
lock = 0;
其余部分
}while(1)
总之,自旋锁是一种对多处理器相当有效的机制,而在单处理器非抢占式的系统中基本上没有作用。自旋锁在SMP系统中应用得相当普遍。在许多SMP系统中,允许多个处理机同时执行目态程序,而一次只允许一个处理机执行操作系统代码,利用一个自旋锁可以很容易实现这种控制.一次只允许一个CPU执行核心代码并发性不够高,若期望核心程序在多CPU之间的并行执行,将核心分为若干相对独立的部分,不同的CPU可以同时进入和执行核心中的不同部分,实现时可以为每个相对独立的区域设置一个自旋锁.
事实上,自旋锁的初衷就是:在短期间内进行轻量级的锁定。一个被争用的自旋锁使得请求它的线程在等待锁重新可用的期间进行自旋(特别浪费处理器时间),所以自旋锁不应该被持有时间过长。如果需要长时间锁定的话, 最好使用信号量。
1自旋锁实际上是忙等锁
当锁不可用时,CPU一直循环执行“测试并设置”该锁直到可用而取得该锁,CPU在等待自旋锁时不做任何有用的工作,仅仅是等待。因此,只有在占用锁的时间极短的情况下,使用自旋锁才是合理的。当临界区很大或有共享设备的时候,需要较长时间占用锁,使用自旋锁会降低系统的性能。
自旋锁可能导致系统死锁
引发这个问题最常见的情况是递归使用一个自旋锁,即如果一个已经拥有某个自旋锁的CPU 想第二次获得这个自旋锁,则该CPU 将死锁。此外,如果进程获得自旋锁之后再阻塞,也有可能导致死锁的发生。copy_from_user()、copy_to_user()和kmalloc()等函数都有可能引起阻塞,因此在自旋锁的占用期间不能调用这些函数。代码清单7.2 给出了自旋锁的使用实例,它被用于实现使得设备只能被最多一个进程打开。
何谓自旋锁?它是为实现保护共享资源而提出一种锁机制。其实,自旋锁与互斥锁比较类似,它们都是为了解决对某项资源的互斥使用。无论是互斥锁,还是自旋锁,在任何时刻,最多只能有一个保持者,也就说,在任何时刻最多只能有一个执行单元获得锁。但是两者在调度机制上略有不同。对于互斥锁,如果资源已经被占用,资源申请者只能进入睡眠状态。但是自旋锁不会引起调用者睡眠,如果自旋锁已经被别的执行单元保持,调用者就一直循环在那里看是否该自旋锁的保持者已经释放了锁,"自旋"一词就是因此而得名。
你好,自旋转喷头的优点是不用人在喷头下面转来转去的,但是自动旋转喷头有个缺点就是很容易漏水,如果不洗头的话就很不好用,但是要洗头洗澡一起的话就很好用了,还是很有好处的。
a锁b锁c锁外观上不明显。简单来说下吧,A级是最原始也是最不安全的锁芯,防盗时间2-5分钟,是单排槽,B级是较安全的是双排槽,防盗时间15-30分,超B级是目前来说最安全的一侧为双一侧是曲线槽,防盗时...
电气那块的话1 所谓自锁,即依靠接触器自身的辅助触点而使其线圈保持通电的现象。 2 电器控制或机械操作机构用语。比如电器控制中同一个电机的“开”和“关”两个点动按钮应实现互锁控制,即按下其中一个按...
跟互斥锁一样,一个执行单元要想访问被自旋锁保护的共享资源,必须先得到锁,在访问完共享资源后,必须释放锁。如果在获取自旋锁时,没有任何执行单元保持该锁,那么将立即得到锁;如果在获取自旋锁时锁已经有保持者,那么获取锁操作将自旋在那里,直到该自旋锁的保持者释放了锁。由此我们可以看出,自旋锁是一种比较低级的保护数据结构或代码片段的原始方式,这种锁可能存在两个问题:
死锁。试图递归地获得自旋锁必然会引起死锁:递归程序的持有实例在第二个实例循环,以试图获得相同自旋锁时,不会释放此自旋锁。在递归程序中使用自旋锁应遵守下列策略:递归程序决不能在持有自旋锁时调用它自己,也决不能在递归调用时试图获得相同的自旋锁。此外如果一个进程已经将资源锁定,那么,即使其它申请这个资源的进程不停地疯狂“自旋”,也无法获得资源,从而进入死循环。
过多占用cpu资源。如果不加限制,由于申请者一直在循环等待,因此自旋锁在锁定的时候,如果不成功,不会睡眠,会持续的尝试,单cpu的时候自旋锁会让其它process动不了. 因此,一般自旋锁实现会有一个参数限定最多持续尝试次数. 超出后, 自旋锁放弃当前time slice. 等下一次机会。
由此可见,自旋锁比较适用于锁使用者保持锁时间比较短的情况。正是由于自旋锁使用者一般保持锁时间非常短,因此选择自旋而不是睡眠是非常必要的,自旋锁的效率远高于互斥锁。信号量和读写信号量适合于保持时间较长的情况,它们会导致调用者睡眠,因此只能在进程上下文使用,而自旋锁适合于保持时间非常短的情况,它可以在任何上下文使用。如果被保护的共享资源只在进程上下文访问,使用信号量保护该共享资源非常合适,如果对共享资源的访问时间非常短,自旋锁也可以。但是如果被保护的共享资源需要在中断上下文访问(包括底半部即中断处理句柄和顶半部即软中断),就必须使用自旋锁。自旋锁保持期间是抢占失效的,而信号量和读写信号量保持期间是可以被抢占的。自旋锁只有在内核可抢占或SMP(多处理器)的情况下才真正需要,在单CPU且不可抢占的内核下,自旋锁的所有操作都是空操作。
上面简要介绍了自旋锁的基本原理,以下将给出具体的例子,进一步阐释自旋锁在实际系统中的应用。上面我们已经讲过自旋锁只有在内核可抢占或SMP(多处理器)的情况下才真正需要,下面我们就以SMP为例,来说明为什么要使用自旋锁,以及自旋锁实现的基本算法。
自旋锁的基本形式如下:
spin_lock(&mr_lock);
//临界区
spin_unlock(&mr_lock);
因为自旋锁在同一时刻只能被最多一个内核任务持有,所以一个时刻只有一个线程允许存在于临界区中。这点很好地满足了对称多处理机器需要的锁定服务。在单处理器上,自旋锁仅仅当作一个设置内核抢占的开关。如果内核抢占也不存在,那么自旋锁会在编译时被完全剔除出内核。
简单的说,自旋锁在内核中主要用来防止多处理器中并发访问临界区,防止内核抢占造成的竞争。另外自旋锁不允许任务睡眠(持有自旋锁的任务睡眠会造成自死锁——因为睡眠有可能造成持有锁的内核任务被重新调度,而再次申请自己已持有的锁),它能够在中断上下文中使用。
死锁:假设有一个或多个内核任务和一个或多个资源,每个内核都在等待其中的一个资源,但所有的资源都已经被占用了。这便会发生所有内核任务都在相互等待,但它们永远不会释放已经占有的资源,于是任何内核任务都无法获得所需要的资源,无法继续运行,这便意味着死锁发生了。自死琐是说自己占有了某个资源,然后自己又申请自己已占有的资源,显然不可能再获得该资源,因此就自缚手脚了。
土层自旋锚杆锚固技术研究
在对砂土层螺旋锚杆进行锚固机理分析的基础上,把锚叶阻力和砂土摩擦阻力结合考虑,对原来螺旋锚杆的锚固段进行改进。采用高密度挤压摩擦锚固的理念设计锚杆和自攻旋进安装工艺。通过在西安地区5个典型的砂土层进行可行性试验后设计出适合砂土层的自旋锚杆。在西安地铁2#线TJSG-4标段的基坑支护中经过工业试验,证明了理论与实践的可靠性。
基坑工程自旋式可回收土锚设计和应用
基坑工程自旋式可回收土锚设计和应用——作为一种新型的基坑支护措施,自旋式可回收土锚在西安地铁基坑中使用,该种土锚采用等间距螺旋式锚叶,在安装过程中进行排土,对土层扰动较小。本文给出土锚的结构设计、详细的下锚方法和回收方法。通过对土锚的拉拔试验...
1.如何将自旋电流从铁磁电极S高效率地注入半导体?——这可利用“磁性半导体”来实现,这种半导体可通过较低电压来控制它在非磁状态和铁磁状态这两种状态之间进行转换(自旋开关),并且可用作为自旋过滤器(让一种自旋状态通过, 阻止另一种自旋状态通过)。但是磁性半导体的制备尚不成熟。
2.半导体自旋电子器件对磁性半导体的基本要求是:电子的自旋极化状态在穿越半导体或进入另一种材料时, 要能很好地保持不变, 即自旋极化丧失的速度要慢, 自旋电流的极化要能长时间维持——自旋相干时间要长。
自旋锚管是一种基于螺旋锚固技术基础上新的全功能锚杆。
自旋锚管扬弃传统螺旋锚杆的大锚叶阻力结构,采用连续小旋丝质量分散中空结构。在这种基本结构的基础上改变中空结构或增加不同的钻眼装置就派生出一系列适应于不同地质和施工情况的全功能锚杆体系。自旋锚管能够实现树脂锚杆、普通砂浆锚杆、中空注浆锚杆、自钻锚杆、让压锚杆和喷浆锚杆的功能,特别适应于松软破碎岩土工程。
自旋锚管最大的优点是在同等级抗拉能级锚杆的基础上抗剪能力提高5倍以上。抗弯能力提高10倍以上,而且自旋锚管可以采用钻锚一次完成的快速施工工艺。使得该品种锚杆能够适应于任何岩土地层。
自旋锚管现在已经成为一个新的锚杆体系:Self-screwed Tube Bolting System(STBS"para" label-module="para">
1.1 工程范畴
自钻、自旋、自锚固——任何地层都适应
注浆、喷浆、旋喷浆——任何情况都有效
主要应用到复杂边坡、破碎围岩隧道、煤矿巷道顺槽、地铁基坑工程或地下工程的明挖桩锚和暗挖超前支护领域,具有快速及时锚固和可回收的功能。
2 自旋锚管体系Self-screwed Tube Bolting System(STBS©)
(自旋锚管〓普通锚杆 自钻锚杆 注浆锚杆)
2.1 自攻旋进锚管Self-screwed Drilling Tube Bolt(SDTB©)
在岩体钻孔中自攻旋进安装不使用锚固剂软岩中锚固力50KN/m,在土层中无需钻孔直接挤压旋进安装锚固力20KN/m
创新点:土层中不钻眼,不使用锚固剂的全长锚固锚杆
优点:成本低,施工速度快,挤压强化土体结构使土体承载力大大提高。
缺点:各项参数配合恰当。钻机扭矩要求大,个别情况下单位锚固力小。
2.2 自旋注浆锚管Self-screwed Slip Casting Tube Bolt(SSCTB©)
在钻孔中安装结束后利用自旋锚管注浆就成为具有初锚力的自旋注浆锚杆
创新点:具有初锚力且是全长锚固的注浆锚杆
优点:具有一定初锚力,适应于各种松软岩土体
缺点:注浆程序占用时间,施工环境差,速度受限制
2.3 自旋树脂锚管Self-screwed Resin Tube Bolt(SRTB©)
在钻孔中安装的同时自旋锚管将树脂药卷搅拌具有初锚力的自旋树脂锚杆
创新点:药卷搅拌结束立即施加预应力的树脂锚杆
优点:锚固可靠,适应性广
缺点:锚杆安装需要专用钻具
2.4 自钻旋进锚管Self-screwed Rod Drilling Tube Bolt(SRDTB©)
在自旋锚管中空内放入钻杆使钻眼安装一次完成是具有初锚力的自钻锚杆
创新点:钻眼安装一次完成且具有初锚力的自钻锚杆
优点:有一定的初锚力,安装快速,适应于任何岩土层
缺点:施工需要专用钻具
2.5 自旋喷浆锚管Self-screwed Full Injecting Tube Bolt(SFITB©)
在土层中边喷浆边钻进安装锚注一次完成锚固力35KN/m
创新点:钻眼安装和注浆一次完成的土层锚杆
优点:适应于松散岩土体
缺点:不能用于岩体破碎带松散体2100433B
自旋锚管扬弃传统螺旋锚杆的大锚叶阻力结构,采用连续小旋丝质量分散中空结构。在这种基本结构的基础上改变中空结构或增加不同的钻眼装置就派生出一系列适应于不同地质和施工情况的全功能锚杆体系。自旋锚管能够实现树脂锚杆、普通砂浆锚杆、中空注浆锚杆、自钻锚杆、让压锚杆和喷浆锚杆的功能,特别适应于松软破碎岩土工程。
自旋锚管最大的优点是在同等级抗拉能级锚杆的基础上抗剪能力提高5倍以上。抗弯能力提高10倍以上,而且自旋锚管可以采用钻锚一次完成的快速施工工艺。使得该品种锚杆能够适应于任何岩土地层。
自旋锚管现在已经成为一个新的锚杆体系:Self-screwed Tube Bolting System(STBS?)
1.1 工程范畴
自钻、自旋、自锚固--任何地层都适应
注浆、喷浆、旋喷浆--任何情况都有效
主要应用到复杂边坡、破碎围岩隧道、煤矿巷道顺槽、地铁基坑工程或地下工程的明挖桩锚和暗挖超前支护领域,具有快速及时锚固和可回收的功能。
2 自旋锚管体系Self-screwed Tube Bolting System(STBS©)
(自旋锚管〓普通锚杆+自钻锚杆+注浆锚杆)
2.1 自攻旋进锚管Self-screwed Drilling Tube Bolt(SDTB©)
在岩体钻孔中自攻旋进安装不使用锚固剂软岩中锚固力50KN/m,在土层中无需钻孔直接挤压旋进安装锚固力20KN/m
创新点:土层中不钻眼,不使用锚固剂的全长锚固锚杆
优点:成本低,施工速度快,挤压强化土体结构使土体承载力大大提高。
缺点:各项参数配合恰当。钻机扭矩要求大,个别情况下单位锚固力小。
2.2 自旋注浆锚管Self-screwed Slip Casting Tube Bolt(SSCTB©)
在钻孔中安装结束后利用自旋锚管注浆就成为具有初锚力的自旋注浆锚杆
创新点:具有初锚力且是全长锚固的注浆锚杆
优点:具有一定初锚力,适应于各种松软岩土体
缺点:注浆程序占用时间,施工环境差,速度受限制
2.3 自旋树脂锚管Self-screwed Resin Tube Bolt(SRTB©)
在钻孔中安装的同时自旋锚管将树脂药卷搅拌具有初锚力的自旋树脂锚杆
创新点:药卷搅拌结束立即施加预应力的树脂锚杆
优点:锚固可靠,适应性广
缺点:锚杆安装需要专用钻具
2.4 自钻旋进锚管Self-screwed Rod Drilling Tube Bolt(SRDTB©)
在自旋锚管中空内放入钻杆使钻眼安装一次完成是具有初锚力的自钻锚杆
创新点:钻眼安装一次完成且具有初锚力的自钻锚杆
优点:有一定的初锚力,安装快速,适应于任何岩土层
缺点:施工需要专用钻具
2.5 自旋喷浆锚管Self-screwed Full Injecting Tube Bolt(SFITB©)
在土层中边喷浆边钻进安装锚注一次完成锚固力35KN/m
创新点:钻眼安装和注浆一次完成的土层锚杆
优点:适应于松散岩土体
缺点:不能用于岩体破碎带松散体