콘텐츠로 바로가기

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

  1. Atomic Guard: 한 번에 한 명만 들어갈 수 있는 물리적 출입문(Lock)을 설치합니다.
  2. Signal & Wait: "준비됐어"라는 전기 신호로 다른 잠든 작업자를 물리적으로 깨우는 로직을 익힙니다.
  3. Data Pipeline: 메모리 조각을 바구니(Queue)에 담아 옆 칸으로 안전하게 나르는 과정을 배웁니다.
  4. 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)이 없을 때 왜 결과값이 튀는지 분석 실습
    • 세마포어 P/VP/V 연산 시 CPU 레지스터와 RAM의 플래그 값이 변하는 과정 추적
  • Implement: 현재 점유자 정보와 대기 큐 포인터를 포함하는 커널 동기화 객체 구조 설계

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): 하드웨어 지원 원자적 인스트럭션(SWP,LDREX/STREXSWP, LDREX/STREX)의 파이프라인 거동
  • 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

Term (EN / ko, abbr) 1문장 정의 단계(기본/권장/실무/심화) 역할/맥락 관련 개념 유사/대비/함께 사용 오해 포인트 Evidence(Primary/Secondary/Industry) Flags(core)
Atomic Operator 하드웨어 명령어 하나로 실행되어 중간에 절대 끊길 수 없는 최소 단위의 물리 연산입니다. 기본 동기화 기초 RMW / Lock Instruction '속도가 빠른 것'과 무관 P1:CS2023/Parallelism core
Mutex 자원 사용권을 가진 단 한 명의 태스크만이 자원을 해제할 수 있는 권한 기반의 물리 잠금 소자입니다. 추천 배타 제어 Ownership Semaphore '단순한 신호등'이 아님 Industry Std core
Message Queue 태스크 간 비동기 데이터 전달을 위해 커널이 관리하는 물리적 완충 저장 통로입니다. 실무 정보 전달 Buffer / IPC Pipe '파일 저장소'와 혼동 주의 P2:SWEBOK/Foundations core
IPI 한 CPU 코어가 물리적인 전기 신호를 직접 보내 다른 코어의 하드웨어 예외를 유도하는 격동 기술입니다. 심화 협력 제어 Mailbox / Core Trap '소프트웨어 알림'보다 하단 Industry Arch core

8. References

Primary

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)' 명령어가 물리적 정합성을 위해 필수적인지 기술할 수 있는 가?