mutex lock vs spinlock ( 재현 상황 )
Post
원문 보기 →mutex lock vs spinlock ( 재현 상황 )
특정 함수나 콜스택 동작에서 lock을 두 번 획득하려고 했을 때 mutex lock과 spinlock 재현 상황은 아주 달라요. busy-waiting이라는 말을 들어보셨나요? spinlock은 lock을 획득하기 전까지 사채업자 같이 계속 특정 루프를 돌면서 계속 기다려요.ticket spinlock의 멤버 중에 owner와 next값이 있잖아요. owner가 next와 같으면 spinlock을 획득할 수 있는 조건이거든요.그 조건을 만족할 때 까지 계속 기다리죠. 계속 기다린다는 건 뭘 뜻할까요? 혹시나 spinlock_irq 함수를 호출하면요?preemption이 동작하지 않고 IRQ도 trigger되지 않게 되거든요. 대부분의 경우 spinlock 동작에 문제가 생기면 Watchdog Rese
Related Posts
3 posts[리눅스커널] 동기화: 큐드 스핀락(queued spinlock) 분석 - 1
큐드 스핀락은 왜 배워야 할까 Aarch64 아키텍처 기반 리눅스 커널에서 스핀락은 큐드 스핀락 방식이 적용됩니다.그 이유는 다음 링크를 보면 알 수 있습니다. 링크:git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=c11090474d70590170cf5fa6afe85864ab494b37 Will Deacon이란 Arm 사의 개발자가 'arm64: locking: Replace ticket lock implementation with qspinlock'이란 커밋 타이틀과 함께 큐드 스핀락 코드를 Arm64 코드에 적용했는데요. 그런데 다음과 같은 코드를 보면 흥미로운 사실을 알 수 있습니다. diff --git a/ar
[리눅스커널] 동기화: 스핀락과 뮤텍스 기법 차이점 알아보기
이번에는 스핀락과 뮤텍스의 자료구조와 함께 두 기법의 차이점을 살펴보겠습니다. 스핀락과 뮤텍스의 구현 방식의 차이점은 다음과 같습니다. 스핀락은 코드가 간결합니다. 다른 프로세스가 스핀락을 누군가 획득하고 있으면 밖에서 계속 기다리는 동작입니다. 뮤텍스는 스핀락에 비해 코드 복잡도가 높습니다. 다른 프로세스가 뮤텍스를 획득하면 휴면에 들어가고 깨어나는 추가 동작을 하기 때문입니다. 스핀락은 아키텍처에 의존적인 코드로 구현됐습니다. 대신 뮤텍스는 아키텍처에 의존적이지 않은 리눅스 커널 함수로 구현됐습니다. 이번에도 화장실에서 B 프로세스가 기다리는 상황을 그리면서 두 기법의 차이점을 알아보겠습니다. 자물쇠(락)가 잠겼는지 알아보는 방법 기법 특징스핀락: 스핀락 구조체 중 owner와 next 필드가
[리눅스커널] 동기화: 뮤텍스의 기본 개념 소개하기
뮤텍스 소개 스핀락과 더불어 커널에서 가장 많이 쓰이는 락(Locking) 기법은 뮤텍스입니다. 뮤텍스는 휴면을 지원하며 프로세스 컨택스트에서 주로 쓰는 락(Locking) 기법입니다. 먼저 뮤텍스의 기본 개념과 동작 원리를 설명합니다. 이후 스핀락과 차이점을 알아보면서 뮤텍스의 특징을 살펴보고 뮤텍스 관련 커널 함수를 분석합니다. 뮤텍스(mutex)는 상호 배제(mutual exclusion)의 약자로 임계 영역에 한 개의 프로세스만 접근하는 동기화 기법입니다. 뮤텍스(mutex)는 사실 리눅스 커널에서만 쓰이는 락(Locking) 기법은 아닙니다. 뮤텍스는 운영 체제에서 쓰는 용어입니다. 뮤텍스는 '임계 구역에 2개 프로세스가 동시에 접근하지 못하도록 막는 기법'인데 서로 다른 운영체제마다 달



![[CV] [Comi] 'ファイブスター物語'(더 파이브 스타 스토리즈) 19권. 연재분에서 벌어지는 '검성 대 검성'](https://img.zoomtrend.com/2026/06/06/1780766083-ECB2ABEB93B1EC9EA5EB8DB0ECBD94EC8AA4.jpg)