커널을 공부하는 초보입니다. 커널 동기화와 관련되서 질문드리고자 합니다.
spin lock 은 특정 데이터에 관련된 락 매커니즘으로 알고 있습니다.
그래서 다른 CPU 혹은 동일 CPU 에서 그 특정 데이터를 변경하려고 할때,
접근을 배제하는 처리를 하는 것으로 알고 있습니다.
local_bh_enable()/local_bh_disable() 같이 softirq 를 배제처리 하는 것은
같은 CPU 에 의한 것만 차단하고 다른 CPU 에서는 재진입을 허용하는 것으로 압니다.
왜 이렇게 하는 거죠??
같은 CPU에 의한 것만 막고 다른 CPU 는 허용하면 동기화에 문제가 안생기나요?
고수님들의 많은 조언 부탁드립니다.