由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - embedded Linux ,面试了几次,都问这个问题了。不知道答案??
相关主题
怎么才是 精简,准确呢? spinlock VS semaphore 的 区别??问个OS里面spin lock的问题。
人生中第一次面试面经+一点个人体会
multi thread复习请教某start-up on-site 小感
谁给讲讲test-and-set怎么实现mutex?问一道multithreading的题
embedded software engineer面经请问pure storage 的那道用spin lock and flags to implement mutex怎么做
请教大牛用mutex lock实现reader writer lockRe: 别了,纽约 (转载)
请问C++ threading w/ lock free algorithmsFLAG rej/offer 求比较
failed bloomberg phone interviewpure storage一道面试题
相关话题的讨论汇总
话题: mutex话题: semaphore话题: spinlock话题: lock话题: linux
进入JobHunting版参与讨论
1 (共1页)
y****1
发帖数: 58
1
spinlock 和 semaphore, mutex 的 区别????
可是感觉没有回答到点上。
spinlock: 1,hold lock 时间短,2,busy wait, 中断里用
semaphore 和 mutex: 1, hold lock 时间长, 2,block wait,中断里不可用
不知道还有其他吗??
谢谢!!
m**********0
发帖数: 356
2
Here is what I found:
spinlock:
It is a big CPU sucker and its biggest risk is being interrupted by OS
scheduler while holding the lock.
One needs to be very careful during implementation to reduce unnecessary
busy waiting
In general, works only with hardware atomic support such as test-and-set
mutex: resource can be accessed only by 1 at a time
semaphore: # of accessors to the resource at a time depending on the
initialization of the semaphore. When it is initialized to 1, it has same
effect as using mutex.

【在 y****1 的大作中提到】
: spinlock 和 semaphore, mutex 的 区别????
: 可是感觉没有回答到点上。
: spinlock: 1,hold lock 时间短,2,busy wait, 中断里用
: semaphore 和 mutex: 1, hold lock 时间长, 2,block wait,中断里不可用
: 不知道还有其他吗??
: 谢谢!!

b***m
发帖数: 5987
3
楼主确实没答到点子上。
s********k
发帖数: 6180
4
spin lock和mutex相比,前者busy waiting,后者可能被context switch出去,跟hold
时间长短没关系,spin lock用得不好一样hold时间长,造成很大的性能损失。但是有
些时候你急需lock,比如很多系统里面的维护heartbeat什么,mutex不如spin lock快。
mutex和semaphore,很多人都会说一个是binary,一个可以是any number,但是这个其
实不是根本区别。mutex只能被获取它的process/thread释放,而semaphore可以被其他
的process/thread释放(经常在embedded里面比如某个timer interrupt建立或者释放
semaphore然后其余thread去access,用来保证某个时间段里面某种资源最多被调用多
少次)。所以mutex应该说是用在mutual exclusion,而semaphore多用在sync
s*****s
发帖数: 157
5
另外, mutex 和 semaphore, 一个可以recursive, 一个不行
j*****I
发帖数: 2626
6
看了一下,好像spinlock和mutex的一个主要区别是后者是系统维护,前者是thread自
己check. short waiting的情况下,前者比较efficient.
mutex和semaphore的区别你研究的太深了吧。any number和binary一般足够了。说多了
反而容易露马脚吧。

hold
快。

【在 s********k 的大作中提到】
: spin lock和mutex相比,前者busy waiting,后者可能被context switch出去,跟hold
: 时间长短没关系,spin lock用得不好一样hold时间长,造成很大的性能损失。但是有
: 些时候你急需lock,比如很多系统里面的维护heartbeat什么,mutex不如spin lock快。
: mutex和semaphore,很多人都会说一个是binary,一个可以是any number,但是这个其
: 实不是根本区别。mutex只能被获取它的process/thread释放,而semaphore可以被其他
: 的process/thread释放(经常在embedded里面比如某个timer interrupt建立或者释放
: semaphore然后其余thread去access,用来保证某个时间段里面某种资源最多被调用多
: 少次)。所以mutex应该说是用在mutual exclusion,而semaphore多用在sync

s********k
发帖数: 6180
7
更正一下,spin lock也可以被context switch出去,这样更危险,因为如果thread没
有释放spinlock就被INT了,其他的thread也拿不到这个资源。基本相当于系统锁死了。

【在 j*****I 的大作中提到】
: 看了一下,好像spinlock和mutex的一个主要区别是后者是系统维护,前者是thread自
: 己check. short waiting的情况下,前者比较efficient.
: mutex和semaphore的区别你研究的太深了吧。any number和binary一般足够了。说多了
: 反而容易露马脚吧。
:
: hold
: 快。

B*******1
发帖数: 2454
8
弱问,spin lock就是在spin,还会被switch吗?

了。

【在 s********k 的大作中提到】
: 更正一下,spin lock也可以被context switch出去,这样更危险,因为如果thread没
: 有释放spinlock就被INT了,其他的thread也拿不到这个资源。基本相当于系统锁死了。

s********k
发帖数: 6180
9
比如好几个thread同时access某段代码做spinlock,某个thread拿到了之后,但是耗得
时间太多了,被kernel重新schedule INT了,就被context switch出去了,但是它的
spinlock还没有释放,其他同时access spinlock threads就会一直busy waiting,直
接拖死系统了。

【在 B*******1 的大作中提到】
: 弱问,spin lock就是在spin,还会被switch吗?
:
: 了。

Q*******e
发帖数: 939
j*****I
发帖数: 2626
11
文档说spinlock适合那种short waiting.你说的这种情况应该是典型不符合。

【在 s********k 的大作中提到】
: 比如好几个thread同时access某段代码做spinlock,某个thread拿到了之后,但是耗得
: 时间太多了,被kernel重新schedule INT了,就被context switch出去了,但是它的
: spinlock还没有释放,其他同时access spinlock threads就会一直busy waiting,直
: 接拖死系统了。

1 (共1页)
进入JobHunting版参与讨论
相关主题
pure storage一道面试题embedded software engineer面经
攒人品。面试经历(1)请教大牛用mutex lock实现reader writer lock
为啥说semaphore是进程间的一种通信机制?请问C++ threading w/ lock free algorithms
昨天onsite被问到的 multithreading 题目failed bloomberg phone interview
怎么才是 精简,准确呢? spinlock VS semaphore 的 区别??问个OS里面spin lock的问题。
人生中第一次面试面经+一点个人体会
multi thread复习请教某start-up on-site 小感
谁给讲讲test-and-set怎么实现mutex?问一道multithreading的题
相关话题的讨论汇总
话题: mutex话题: semaphore话题: spinlock话题: lock话题: linux