요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
기본 lock과 동시성 규칙
index.rst:8-20| 문서 | 핵심 질문 |
|---|---|
| locktypes | sleeping, CPU-local, spinning lock을 어떻게 구분하고 중첩하는가 |
| mutex-design | mutex의 owner field와 fast, optimistic-spin, sleep 경로는 어떻게 동작하는가 |
| spinlocks | interrupt context를 포함한 shared data를 spinlock으로 어떻게 보호하는가 |
| seqlock | writer가 드문 데이터에서 reader retry로 일관된 snapshot을 얻는 방법은 무엇인가 |
| lockdep-design, lockstat | deadlock 가능성과 lock contention을 어떻게 관찰하는가 |
| locktorture | lock 구현을 장시간 부하와 경쟁 조건 아래에서 어떻게 검증하는가 |
실시간 lock과 futex
index.rst:12-27rt-mutex 문서들은 priority inheritance가 필요한 이유와 실제 PI chain walk를 설명합니다. mutex owner가 다른 mutex에서 다시 막힐 수 있으므로 priority boost는 단일 owner에서 끝나지 않고 chain 전체로 전파되어야 합니다.
- rt-mutex-design: waiter tree, task PI tree, owner bit와 slow path
- rt-mutex: owner pointer의 low bit, fast path와 pending owner 규칙
- pi-futex, futex-requeue-pi: user space futex와 kernel rt_mutex의 연결
- robust-futexes, robust-futex-ABI: task 종료 시 user-space lock owner 사망을 복구하는 ABI
- ww-mutex-design: 여러 buffer reservation lock을 잡을 때 wound/wait로 순환 대기를 피하는 방법
권장 독해 순서
index.rst:8-34먼저 locktypes에서 실행 문맥과 nesting 규칙을 익힌 뒤 spinlocks와 mutex-design을 읽는 편이 좋습니다. 그 다음 seqlock처럼 reader가 lock을 잡지 않는 기법을 보고, 마지막에 rt-mutex-design과 futex 계열로 넘어가면 owner, waiter, wakeup 관계가 선명해집니다.
lock 이름만 보고 atomic context 여부를 단정하면 안 됩니다. 특히 PREEMPT_RT에서는 spinlock_t와 rwlock_t가 rt_mutex 기반 sleeping lock으로 바뀌지만 raw_spinlock_t와 bit spinlock은 계속 실제 spinning lock입니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
.. SPDX-License-Identifier: GPL-2.0
=======
Locking
=======
.. toctree::
:maxdepth: 1
locktypes
lockdep-design
lockstat
locktorture
mutex-design
rt-mutex-design
rt-mutex
seqlock
spinlocks
ww-mutex-design
preempt-locking
pi-futex
futex-requeue-pi
hwspinlock
percpu-rw-semaphore
robust-futexes
robust-futex-ABI
.. only:: subproject and html
Indices
=======
* :ref:`genindex`
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
Locking 문서
1-33Locking 문서 묶음은 다음 문서를 포함한다.
- Lock 형식
- Lockdep 설계
- Lock 통계와 lock torture test
- Mutex, RT mutex와 ww-mutex 설계
- Seqlock과 spinlock
- Preemption과 locking
- PI futex와 futex requeue PI
- Hardware spinlock
- Percpu rw semaphore
- Robust futex와 그 ABI
HTML subproject로 만들 때는 전체 색인도 함께 표시한다.
이 문서 묶음이 다루는 범위
index.rst:1-7Documentation/locking/은 단순히 lock API 목록을 모아 놓은 곳이 아닙니다. 어떤 실행 문맥에서 잠들 수 있는지, interrupt와 preemption을 언제 막아야 하는지, lock을 어떤 순서로 중첩할 수 있는지, PREEMPT_RT에서 같은 이름의 lock이 어떻게 다른 구현으로 바뀌는지를 설명합니다.
Lock 선택은 보호할 데이터의 범위만으로 결정되지 않습니다. critical section의 길이, 호출 가능한 context, CPU 간 공유 여부, reader와 writer 비율, priority inversion 허용 범위, object lifetime을 함께 따져야 합니다.