
Spinlock(스핀락) - spin_lock() vs spin_lock_irq() vs spin_lock_irqsave() - 분석 9. 커널 동기화(spinlock/mutex)
- 2017/12/26 19:49
- rousalome.egloos.com/9966342
- 덧글수 : 4

핑백
Linux Kernel(4.14) Hacks : Spinlock(스핀락) - 소개 2018-06-16 10:03:00 #
... #커널 동기화스핀락(Spinlock) - 소개스핀락(Spinlock) - Deadlock 시나리오스핀락(Spinlock) - spin_lock() vs spin_lock_irq() vs spin_lock_irqsave() - 분석스핀락(Spinlock) - spin_lock() vs spin_lock_irq() vs spin_lock_i ... more
Linux Kernel(4.14) Hacks : [Linux][Kernel]스핀락 Spinlock - Deadlock 시나리오 2018-06-16 10:03:45 #
... #커널 동기화스핀락(Spinlock) - 소개스핀락(Spinlock) - Deadlock 시나리오스핀락(Spinlock) - spin_lock() vs spin_lock_irq() vs spin_lock_irqsave() - 분석스핀락(Spinlock) - spin_lock() vs spin_lock_irq() vs spin_lock_i ... more
Linux Kernel(4.14) Hacks : Spinlock(스핀락) - spin_lock() vs spin_lock_irq() vs spin_lock_irqsave() - 코드 리뷰 2018-06-16 10:04:08 #
... #커널 동기화스핀락(Spinlock) - 소개스핀락(Spinlock) - Deadlock 시나리오스핀락(Spinlock) - spin_lock() vs spin_lock_irq() vs spin_lock_irqsave() - 분석스핀락(Spinlock) - spin_lock() vs spin_lock_irq() vs spin_lock_i ... more
Linux Kernel(4.14) Hacks : mutex lock vs spinlock ( 재현 상황 ) 2018-06-16 10:04:16 #
... #커널 동기화스핀락(Spinlock) - 소개스핀락(Spinlock) - Deadlock 시나리오스핀락(Spinlock) - spin_lock() vs spin_lock_irq() vs spin_lock_irqsave() - 분석스핀락(Spinlock) - spin_lock() vs spin_lock_irq() vs spin_lock_i ... more
덧글
-
NJY 2020/06/30 23:08 # 삭제 답글
안녕하세요. 잘 해석도 못하는 영어로 공부하는데 귀한 한글자료 올려 주셔서 너무 감사드립니다. 본문에 "spin_lock_irq() 혹은 spin_lock() 함수가 서브루틴에 많이 쓰게 되면 Interrupt가 disable 혹은 enable 되었는지 파악하기 어려운 경우"에 대한 설명이 있는데, spin_lock_irq쪽에는 하나의 쓰레드만 들어갈수 있는데 spin_lock_irq가 중첩해서 사용되는 이유가 뭔가요? spin_lock안에 또 spin_lock을 잡아야하는 상황이 뭔지 궁금합니다! 감사합니다 -
AustinKim 2020/07/01 11:13 #
질문에 답을 드리면,
리눅스 커널 소스 코드가 너무 방대해서 그런 것입니다.
우리가 드라이버를 작성할 때 spin_lock_irq() 함수를 사용해 특정 코드 구간(크리티컬 섹션)을 보호하는데,
이 코드 구간에서 커널의 세부 함수에서 spin_lock_irq() 함수가 다시 호출될 수 있습니다.
예를 들면;
spin_lock_irq(); // 인터럽트 비활성화
... // 크리티컬 섹션 코드 시작
커널 API 호출
...
...
... spin_lock_irq(); // 인터럽트 비활성화
또 다른 예로, 이미 spin_lock_irq() 함수를 호출되는 상황을 들 수 있어요.
spin_lock_irq(); // 인터럽트 비활성화
... // 크리티컬 섹션 코드 시작
디바이스 드라이버 관련 함수 실행
...
...
... spin_lock_irq(); // 우리가 작성한 드라이버 코드, 인터럽트 비활성화
... // 크리티컬 섹션 코드 시작 -
NJY 2020/07/01 14:43 # 삭제
답변 감사합니다! -
2020/07/01 11:13 # 답글
최근 덧글