TSL机制分析(自旋锁,多处理器)

What is TSL

TSL是Test and Set Lock的缩写。

硬件指令:

TSL RX, LOCK

该指令所做的事情:

  • 读取Lock的值
  • 把读到的值存入寄存器RX中
  • 然后给LOCK设置一个非0的值(设置到LOCK对应的内存中)

以上三个步骤是一个不可拆分的原子操作,执行该指令的CPU将会锁住内存总线(memory bus),所以在该指令执行完成之前其他CPU是无法访问内存的。

TSL和中断屏蔽的区别

当一个CPU将中断屏蔽后,只影响当前屏蔽中断的CPU,其他CPU还是依然可以照样访问内存的(想要中断)。唯一一个当一个CPU在访问内存时阻止其他CPU访问内存的方法就是将内存总线锁住,这个需要硬件的支持,TSL可以达到该目的。(此处需要深入理解:单处理器中使用中断屏蔽,即可在PSW中打开/关闭中断标志位,而由于上述原因,中断屏蔽对于多处理器根本没有效果

 

只有在有理由认为等待时间非常短的情形下,才只用忙等待。用于忙等待的锁,称为自旋锁。

深入理解:需要区别忙等待和让权等待:

忙等待:连续测量一个变量直到某个值出现是为止。

让权等待:临界区外运行的进程不得阻塞其他进程,出让cpu

深入理解:区别自旋锁和互斥锁

自旋锁:表示一直在原地旋转,并未去睡眠。可能存在的问题:死锁,过多占用cpu资源

互斥锁:如果资源被占用,资源申请者就会进入睡眠状态

TSL机制分析(自旋锁,多处理器)_第1张图片

TSL机制分析(自旋锁,多处理器)_第2张图片

下附2016年真题:

TSL机制分析(自旋锁,多处理器)_第3张图片

分析:写了这么一大串,现在看这道题就很轻松了。A选项说唤醒,人家压根就没睡好吗????

B选项即为忙等的意思,为正确选项。

C选项正好和B相反,它说:没有资源赶紧离开。

D是单处理器的,而TSL是多处理器的。

你可能感兴趣的:(操作系统)