Task Synchronization & IPC Physics
실시간 작업들이 데이터를 안전하게 교환하고 순서를 맞추기 위해 사용하는 세마포어, 큐, 이벤트의 물리적 공유 메커니즘과 경합 제어를 다 다루는 학습 노드입니다.
sys.entry
M
Me
hyunyoun's Blog
posts7 min read
1. Overview
태스크 동기화 및 IPC 물리(Task Synchronization & IPC Physics, TSI)는 프로세서 내부의 파편화된 실행 흐름들을 하나의 유기적인 오케스트라로 엮어주는 '데이터 물류 및 지휘' 기법입니다.
멀티태스킹 환경에서 두 작업이 동시에 같은 메모리를 건드리면 물리적 충돌이 발생합니다. 학습자는 데이터 오염을 막기 위한 **상호 배제(Mutual Exclusion)**의 하드웨어적 보증 방법과, 작업 간 소통 통로인 메시지 큐(Message Queue) 및 공유 메모리의 전송 원리를 배웁니다. 특히 실시간 시스템에서 동기화 도구가 유발하는 **대기 지연(Blocking Latency)**을 물리적으로 어떻게 정량화하고 통제할지 익힘으로써, 단순한 통신을 넘어 시스템 전체의 안전성과 정시성을 담보하는 통신 인프라 설계 능력을 확보합니다.
2. Scope & Boundaries
In-Scope
- Synchronization Primitives: 세마포어(Semaphore), 뮤텍스(Mutex), 이벤트 플래그 물리 로직
- IPC Mechanisms: 메시지 큐, 공유 메모리(Shared Memory), 파이프(Pipe)의 물리적 사상
- Critical Section Physics: 인터럽트 비활성화, 스케줄러 잠금(Locking)을 통한 하드웨어 격리
- Inter-core IPC: 멀티코어 환경의 메일박스(Mailbox)와 인터코어 인터럽트(IPI) 물리
Out-of-Scope
- 네트워크 소켓 통신 및 분산 시스템 IPC (08. Network 영역으로 위임)
- 고수준 프로그래밍 언어의 락-프리(Lock-free) 알고리즘 상세 (04. Algorithms 영역으로 위임)
Boundaries
- TSI vs. Logic Consistency: 논리적 일관성이 '데이터 값이 맞는가'를 따진다면, TSI는 '데이터가 전달되는 시점과 순서가 결정론적인가'라는 물리적 측면을 함께 다룹니다.
3. Counterexample
- 단순히 "데이터를 주고받는다"는 설명은 TSI 학습이 아닙니다. 왜 IPC 전송 중 태스크의 우선순위가 바뀌지 않으면 메시지 처리에 **Nondeterministic(비결정론적)**인 지연이 동반되는지 물리적 이유를 지적해야 하며, 동기화 도구가 하드웨어의 **캐시 일관성(Cache Coherence)**과 충돌하여 발생하는 '메모리 가시성(Visibility)' 문제의 물리적 해법을 서술하지 못한다면 TSI의 실체를 간과한 것입니다.
4. Prerequisites
- RTOS Kernel Scheduling Mechanics (Basic): 태스크 상태 전이 기초가 필수입니다. (02-06-01 RKS)
- Priority Inversion & Inheritance Physics (Recommended): 자원 경합 해결 경험이 권장됩니다. (02-06-02 PIP)
5. Learning Map
- Atomic Guard: 한 번에 한 명만 들어갈 수 있는 물리적 출입문(Lock)을 설치합니다.
- Signal & Wait: "준비됐어"라는 전기 신호로 다른 잠든 작업자를 물리적으로 깨우는 로직을 익힙니다.
- Data Pipeline: 메모리 조각을 바구니(Queue)에 담아 옆 칸으로 안전하게 나르는 과정을 배웁니다.
- Core Harmony: 서로 다른 코어에 있는 작업자들이 인터럽트 벨을 눌러 소통하는 물리 기술을 완성합니다.
6. Learning Topics
Basic
Core: 상호 배제와 세마포어의 물리적 동작 (Sync Foundations)
- Why to Learn: 여러 작업이 동시에 연산 장치를 쓸 때 데이터가 찢어지는(Tearing) 현상을 막고 질서를 세워야 하기 때문입니다.
- What to Learn:
- Mutex vs Semaphore: 소유권 여부에 따른 물리적 잠금 장치의 차이
- Binary/Counting Semaphore: 사건 발생 알림과 자원 개수 카운팅 물리
- Blocking behavior: 자원을 얻지 못했을 때 태스크가 'Wait List'로 이동하는 하드웨어 시퀀스
- How to Learn:
- 공유 변수 하나를 두 태스크가 동시에 증가시키는 코드를 짜고, 하드웨어 원자적 연산(Atomic Ops)이 없을 때 왜 결과값이 튀는지 분석 실습
- 세마포어 연산 시 CPU 레지스터와 RAM의 플래그 값이 변하는 과정 추적
- Implement: 현재 점유자 정보와 대기 큐 포인터를 포함하는 커널 동기화 객체 구조 설계
Recommended
Core: 메시지 큐와 데이터 복사 물리 (Message Queue Mechanics)
- Why to Learn: 작업 간의 결합도를 낮추고 비동기적으로 데이터를 흘려보내기 위해서입니다.
- What to Learn:
- Queue Buffer: 커널 메모리에 할당된 원형 버퍼(Circular Buffer)의 물리 구조
- Copy-by-value vs Copy-by-reference: 데이터 통째 전송과 주소 전달의 물리적 오버헤드 차이
- Overrun & Underrun: 데이터가 넘치거나 부족할 때 하드웨어 예외가 발생하는 시점
- How to Learn:
- 100바이트 메시지를 보낼 때, RAM에서 RAM으로 데이터가 복사되는 클록 사이클 수리적 분석 실습
- 큐가 가득 찼을 때 송신 태스크가 'Sleep' 상태로 빠지는 스케줄러 상호작용 분석
- Implement: 고정 크기 블록들을 연결하여 메시지를 쌓고 빼는 원형 큐 관리 로직
Practical
Core: 임계 구역 보호의 물리적 수단 (Zero-latency Barriers)
- Why to Learn: 소프트웨어 동기화 도구보다 더 빠르고 확실한 물리적 차단벽이 필요할 때가 있기 때문입니다.
- What to Learn:
- Interrupt Masking: CPU 코어의 인터럽트 수신 핀을 잠시 무력화하여 원격 침범 차단
- Scheduler Lock: 인터럽트는 허용하되 문맥 교환만 막아 처리량을 유지하는 기법
- Read-Modify-Write (RMW): 하드웨어 지원 원자적 인스트럭션()의 파이프라인 거동
- How to Learn:
- 인터럽트를 끄고 켜는 명령어가 전체 시스템 응답 지연(Jitter)에 미치는 파괴적인 영향력 측정 실습
- RMW 연산 도중 버스가 가로채기 당하지 않도록 하드웨어가 'Lock Signal'을 내보내는 과정 입증
- Implement: 특정 구역 진입 시 인터럽트를 끄고 정보를 저장한 뒤, 탈출 시 복구하는 'Critical Section' 매크로 세트
Advanced
Core: 인터코어 IPC와 메일박스 시스템 (Inter-core Coordination)
- Why to Learn: 물리적으로 떨어진 다른 CPU 코어에게 명령을 내리고 데이터를 넘겨주기 위해서입니다.
- What to Learn:
- Hardware Mailbox: 코어 간 짧은 데이터를 주고받도록 설계된 전용 하드웨어 레지스터
- IPI (Inter-Processor Interrupt): 한 코어가 다른 코어의 인터럽트 핀을 강제로 찌르는 물리 기술
- Memory Barrier in Multi-core: 코어 간 데이터 가시성 확보를 위한 물리적 메모리 정렬(Fence)
- How to Learn:
- 코어 0에서 데이터를 공유 램에 쓴 직후, 코어 1에게 IPI를 날려 데이터를 읽게 하는 'Handover' 시나리오 분석 실습
- 멀티코어 환경에서 스핀락(Spinlock)의 효율성과 버스 트래픽 과부하 현상 연구
- Implement: 타겟 코어 ID와 메시지를 입력하면 하드웨어 인터럽트를 발생시켜 원격 작업을 수행시키는 인터코어 통신 드라이버
7. Terminology
8. References
Primary
- [P2] SWEBOK v4.0 - Computing Foundations / Concurrent and Parallel Programming — Structural standards.
- [P1] CS2023 - AR/Embedded Systems (IPC and Synchronization) — Core requirements.
Secondary
- [The Art of Concurrency] Clay Breshears — Practical sync patterns.
- [Real-Time Concepts for Embedded Systems] Qing Li — Chapters on IPC physics.
Industry
- [ARMv8-A Memory Model & Barriers Whitepaper] — Multi-core sync essentials.
- [FreeRTOS: Task Notifications & Event Groups internals] — Efficient synchronization in practice.
9. Final Checklist
Primary
- '세마포어' 획득에 실패한 태스크가 왜 즉시 CPU를 반납하고 'Blocked' 리스트로 가야 하는지 시스템 효율 관점에서 설명 가능한가? (P1)
- 두 태스크가 데이터를 주고받을 때 '공유 메모리' 방식이 '메시지 큐' 방식보다 물리적 복사 오버헤드가 왜 적은지 입증할 수 있는 가? (P2)
Secondary
- 하드웨어 'Inter-core Interrupt (IPI)'가 발생했을 때 수신 측 코어의 파이프라인이 어떤 물리적 단계를 거쳐 중단되는지 소통 가능한가?
- 데이터 오염을 막기 위해 '인터럽트를 끄는 방식'이 '뮤텍스를 쓰는 방식'보다 응답성(Latency) 측면에서 왜 더 위험할 수 있는지 분석 가능한가?
Industry
- 실시간 오디오 처리 시스템 설계 시, 태스크 간 데이터 지연을 최소화하기 위한 '락-프리(Lock-free)' 하드웨어 큐 적용 방안을 제안할 수 있는 가? (SFIA)
- 멀티코어 환경에서 공유 자원 접근 전후에 왜 하드웨어 '메모리 베리어(Memory Barrier)' 명령어가 물리적 정합성을 위해 필수적인지 기술할 수 있는 가?