Process & Concurrency Mechanics
프로그램의 실행 단위인 프로세스와 스레드의 생명주기, 그리고 멀티코어 환경에서의 효율적인 동시성 제어 기술을 다루는 학습 노드입니다.
sys.entry
M
Me
hyunyoun's Blog
posts6 min read
1. Overview
프로세스 및 동시성 메카니즘(Process & Concurrency Mechanics, PCM)은 정적인 프로그램이 살아있는 실행 객체로 변환되어 자원을 소모하는 역동적인 과정을 다룹니다.
운영체제는 수많은 프로세스가 동시에 실행되는 것처럼 보이게 하기 위해 시분할(Time-sharing)과 스케줄링을 수행합니다. 학습자는 프로세스 제어 블록(PCB)의 구조, 스레드(Thread) 간의 자원 공유 방식, 그리고 교착 상태(Deadlock)와 경쟁 상태(Race Condition)를 해결하는 동기화 기법을 익힙니다. 이를 통해 멀티코어 시대에 부합하는 고성능 병렬 시스템을 구축합니다.
2. Scope & Boundaries
In-Scope
- Unit of Execution: 프로세스와 스레드의 차이, LWP(Light Weight Process) 및 파이버(Fiber) 개념
- Process Lifecycle: 상태 전이 다이어그램 (Create, Ready, Running, Waiting, Terminate)
- Concurrency Control: 뮤텍스, 세마포어, 모니터(Monitor) 및 락-프리(Lock-free) 기초 이론
- Communication (IPC): 파이프, 메시지 큐, 공유 메모리, 소켓의 물리적 전송 메커니즘
Out-of-Scope
- 하이 레벨 병렬 프로그래밍 언어 문법 (05. Programming Languages 영역으로 위임)
- 분산 시스템 간의 원격 프로시저 호출(RPC) (07. System Architecture 영역으로 위임)
Boundaries
- PCM vs. Scheduling: PCM은 '실행 단위의 속성과 상호작용'에 집중하며, 스케줄링(03-02 내 세부 항목)은 '누구에게 CPU를 줄 것인가'라는 정책에 집중합니다.
3. Counterexample
- 단순히
pthread_create를 호출해 루프를 돌리는 것은 PCM 학습이 아닙니다. 스레드가 생성될 때 유저 스택과 커널 스택 중 어디에 TCB(Thread Control Block)가 할당되는지, 그리고 문맥 교환(Context Switch) 시 어떤 레지스터 셋이 백업되는지 물리적 비용을 계산할 수 있어야 합니다.
4. Prerequisites
- 커널 및 시스템 인터페이스 물리 (Basic): 시스템 콜을 통한 권한 전환 이해가 필요합니다. (03. KSIP)
- 컴퓨터 아키텍처 (Recommended): 캐시 일관성(Cache Coherence)과 메모리 배리어 기초가 권장됩니다. (02. Computer Architecture)
5. Learning Map
- Entities of Execution: 프로세스와 스레드의 생명주기 및 물리적 속성을 배웁니다.
- Threading Models: 커널 스레드와 유저 스레드의 사상 매커니즘을 이해합니다.
- CPU Scheduling: 프로세스 선택 알고리즘과 물리적 지연시간 최적화를 다룹니다.
- IPC Physics: 격리된 주소 공간 간의 데이터 교환 물리 시퀀스를 익힙니다.
6. Learning Topics
Basic
Core: 프로세스와 스레드 기초 (Execution Units)
- Why to Learn: 프로그램 실행의 최소 단위를 이해하고 적절한 추상화 수준을 선택하기 위함입니다.
- What to Learn:
- 프로세스(자원의 소유자) vs 스레드(실행의 단위) 관계
- PCB(Process Control Block)에 저장되는 메타데이터 종류
- 좀비(Zombie) 및 고아(Orphan) 프로세스의 발생 원리와 처리
- How to Learn:
ps또는top명령어를 통해 시스템 내 프로세스 트리 구조 관측- C 언어의
fork()와clone()시스템 콜 동작 차이 비교
- Implement: 부모가 자식을 생성하고 종료를 대기(
wait)하는 기본 프로세스 트리 코드
Recommended
Core: 동기화 프리미티브와 상호 배제 (Synchronization)
- Why to Learn: 다중 흐름이 동일한 메모리에 접근할 때 데이터의 일관성을 유지하기 위해서입니다.
- What to Learn:
- 임계 구역(Critical Section) 문제와 피터슨 알고리즘(Peterson's Algorithm)
- 하드웨어 도움: TSL(Test-and-Set Lock)과 Compare-and-Swap(CAS)
- 뮤텍스(Binary) vs 세마포어(Counting)의 수리적 개념
- How to Learn:
- 생산자-소비자(Producer-Consumer) 문제를 세마포어로 해결하는 로직 도식화
- 뱅커 알고리즘(Banker's Algorithm)을 이용한 자원 할당 상태 시뮬레이션
- Implement: 스핀락(Spinlock)의 동작 원리를 CAS 연산으로 직접 모사한 코드
Practical
Core: 효율적인 프로세스 간 통신 (IPC Mechanics)
- Why to Learn: 보안을 위해 격리된 프로세스들이 성능 손실 없이 협업하게 하기 위함입니다.
- What to Learn:
- 익명 파이프(Pipe)와 지명 파이프(FIFO)의 입출력 역학
- 공유 메모리(Shared Memory)의 물리적 오버헤드와 일관성 제어
- 시그널(Signal) 시스템의 비동기 처리 메커니즘
- How to Learn:
ipcs명령어를 이용하여 OS에 할당된 IPC 자원 현황 분석- 메모리 맵 파일(mmap)을 활용한 프로세스 간 대용량 데이터 공유 실습
- Implement: 공유 메모리와 세마포어를 조합하여 데이터를 주고받는 고속 통신 모듈
Advanced
Core: 멀티코어 확장성과 동시성 프로그래밍 (Scalable Concurrency)
- Why to Learn: 수백 개의 코어를 가진 현대 서버에서 병목 없이 작업을 처리하기 위해서입니다.
- What to Learn:
- 락 경합(Lock Contention) 분석과 세분화된 락킹(Fine-grained Locking)
- 락-프리(Lock-free) 및 웨이트-프리(Wait-free) 알고리즘 기초
- 리드-카피-업데이트(RCU) 메커니즘의 물리적 원리
- How to Learn:
- 멀티스레드 환경에서 락의 개수에 따른 성능 확장성(Scalability) 그래프 도출
- ABA 문제와 같은 락-프리 자료구조의 전형적인 결함 사례 연구
- Implement: CAS 연산을 이용한 간단한 락-프리 스택(Stack) 또는 큐(Queue)
7. Terminology
8. References
Primary References
- [P1] CS2023 - OS/Concurrency — Processes, threads, and synchronization.
- [P2] SWEBOK - Computing Foundations — Execution models and process management.
Secondary References
- [Operating Systems: Internals and Design Principles] William Stallings — In-depth concurrency logic.
- [The Art of Multiprocessor Programming] Maurice Herlihy — Advanced synchronization foundations.
Industry References
- [POSIX Threads (Pthreads) Standard] — Industrial threading interface reference.
- [Intel 64 and IA-32 Architectures Optimizer's Reference] — Hardware-level atomics guide.
9. Final Checklist
Primary Checklist
- 프로세스 상태 전이 다이어그램을 그리고 각 상태가 커널 자원(Ready Queue, Wait Queue)과 어떻게 매핑되는지 설명할 수 있는가? (P1)
- 데드락의 4가지 필요 조건을 식별하고 이를 예방하거나 회피하기 위한 전략을 제시할 수 있는가? (P1)
Secondary Checklist
- 스레드 안전(Thread-safe)한 라이브러리를 설계하기 위해 고려해야 할 동시성 원자적 단위를 식별 가능한가?
- 유저 스레드와 커널 스레드의 매핑 모델(M<1>1>, 1<1>1>, M
)의 장단점을 물리적 비용 관점에서 이해하는가?
Industry Checklist
-
strace또는pstack을 사용하여 실행 중인 프로세스의 시스템 콜 지연이나 락 교착 지점을 추적할 수 있는가? (SFIA) - 대규모 동시 요청 환경에서
select,poll,epoll의 물리적 확장성 차이를 PCM 관점에서 설명 가능한가?