Brain
Science
root
/
학습 노트
/
Study Note
/
2: 운영체제 (Operating System)
/
4. 프로세스 동기화 및 임계구역
4. 프로세스 동기화 및 임계구역
221. 경쟁 조건 (Race Condition) - 실행 순서에 따라 결과가 달라지는 현상
2026-03-22
222. 임계 구역 (Critical Section) - 공유 데이터 접근 코드 영역
2026-03-22
223. 임계 구역 문제 해결의 3조건 - 상호 배제(Mutual Exclusion), 진행(Progress), 한정된 대기(Bounded Waiting)
2026-03-22
224. 선점형 커널 (Preemptive Kernel) vs 비선점형 커널 (Non-preemptive Kernel)
2026-03-22
225. 피터슨의 해결책 (Peterson's Algorithm) - 플래그(flag)와 턴(turn) 변수 활용, 2 프로세스 한정
2026-03-22
226. 메모리 장벽 (Memory Barrier / Memory Fence) - 메모리 연산 순서 보장 명령어
2026-03-22
227. 하드웨어 명령어 기반 동기화
2026-03-22
228. Test-and-Set 명령어 - 원자적(Atomic) 읽기-수정
2026-03-22
229. Compare-and-Swap (CAS) 명령어
2026-03-22
230. 원자적 변수 (Atomic Variable) - Lock-free 프로그래밍 기초
2026-03-22
231. 뮤텍스 락 (Mutex Lock / Mutual Exclusion Lock)
2026-03-22
232. acquire() / release() 함수
2026-03-22
233. 스핀락 (Spinlock) - 바쁜 대기(Busy Waiting), 다중 코어에서 문맥 교환 오버헤드 없음
2026-03-22
234. 세마포어 (Semaphore) - S 정수 변수, wait(P), signal(V) 원자적 연산
2026-03-22
235. 이진 세마포어 (Binary Semaphore) = 뮤텍스와 유사
2026-03-22
236. 카운팅 세마포어 (Counting Semaphore) - 유한한 자원 풀 관리
2026-03-22
237. 블로킹 세마포어 - 대기 큐 (Sleep & Wakeup) 사용, 바쁜 대기 없음
2026-03-22
238. 모니터 (Monitor) - 추상 자료형 구조, 상호 배제 자동 보장 (High-level 구조)
2026-03-22
239. 조건 변수 (Condition Variable) - x.wait(), x.signal()
2026-03-22
240. 모니터 시그널 의미론 - Signal and Wait vs Signal and Continue
2026-03-22
241. 라이브락 (Livelock) - 진행은 하나 유효한 작업 불가 (양보만 반복)
2026-03-22
242. 우선순위 역전 (Priority Inversion) - 하위 프로세스가 락을 쥐고 있어 상위 프로세스 대기
2026-03-22
243. 우선순위 상속 (Priority Inheritance Protocol) - 락을 쥔 프로세스에 임시로 우선순위 부여
2026-03-22
244. 우선순위 올림 (Priority Ceiling Protocol)
2026-03-22
245. 고전적 동기화 문제들
2026-03-22
246. 유한 버퍼 문제 (Bounded-Buffer Problem) / 생산자-소비자 (Producer-Consumer) 문제
2026-03-22
247. 독자-저자 문제 (Readers-Writers Problem) - 제1유형(독자 우선), 제2유형(저자 우선)
2026-03-22
248. 식사하는 철학자 문제 (Dining-Philosophers Problem) - 교착상태 및 기아 상태 예방
2026-03-22
249. 자바 동기화 - synchronized 키워드, 모니터 락, wait()/notify()
2026-03-22
250. Pthreads 동기화 - pthread_mutex_t, pthread_cond_t, 스핀락, 배리어
2026-03-22
251. 윈도우 동기화 - 크리티컬 섹션 객체(유저모드), 디스패처 객체(커널모드 - 이벤트, 뮤텍스, 세마포어)
2026-03-22
252. 이벤트 객체 (Event Object) - 스레드 간 신호 전달
2026-03-22
253. 리눅스 동기화 - 원자적 정수, 스핀락, 세마포어, 락 메커니즘
2026-03-22
254. RCU (Read-Copy-Update) - 리눅스 고성능 동기화 (읽기는 락 프리, 쓰기는 복사 후 갱신)
2026-03-22
255. SeqLock (순차 락) - 읽기-쓰기 락의 대안, 카운터 기반
2026-03-22
256. 락-프리 (Lock-free) 자료구조 - CAS 연산 적극 활용
2026-03-22
257. 웨이트-프리 (Wait-free) 알고리즘
2026-03-22
258. 스케줄러 일드 (sched_yield) - 락 경합 시 자발적 CPU 양보
2026-03-22
259. ABA 문제 - CAS 연산 시 값이 변경되었다가 원복된 것을 인지하지 못하는 오류
2026-03-22
260. ABA 문제 해결책 - 태그/버전 관리
2026-03-22
261. 장벽 (Barrier) 동기화 - 여러 스레드가 특정 지점에 도달할 때까지 대기
2026-03-22
262. 양방향 랑데부 (Rendezvous)
2026-03-22
263. 티켓 락 (Ticket Lock) - FIFO 보장 스핀락
2026-03-22
264. 큐잉 스핀락 (MCS Lock / qspinlock) - NUMA 환경 스핀락 최적화
2026-03-22
265. 낙관적 병행성 제어 (Optimistic Concurrency Control)
2026-03-22
266. 비관적 병행성 제어 (Pessimistic Concurrency Control)
2026-03-22
267. 원자적 트랜잭션 (Atomic Transaction) 개념
2026-04-05
268. 소프트웨어 트랜잭셔널 메모리 (STM)
2026-04-05
269. 하드웨어 트랜잭셔널 메모리 (HTM - Intel TSX)
2026-03-22
270. 락 엘리전 (Lock Elision) - 하드웨어 지원 락 우회
2026-04-05
271. 스레드 풀 스케줄링 락 경합 (Work Stealing)
2026-04-05
272. 더블 체크드 락킹 (Double-Checked Locking) 안티패턴 및 해결 (volatile)
2026-04-05
273. 세큐어 코딩에서의 동기화 약점 (TOCTOU: Time of Check to Time of Use)
2026-04-05
274. 임계 구역 크기 최소화 기법
2026-03-22
275. 락 경합 (Lock Contention) 모니터링 도구
2026-04-05
276. 데드락 회피를 위한 Lock Hierarchy (락 순서화)
2026-04-05
277. 세마포어를 이용한 순서 제어 (Ordering)
2026-03-22
278. 이진 세마포어 vs 뮤텍스 차이 (소유권 유무)
2026-04-05
279. 재진입 가능 락 (Reentrant Lock / Recursive Lock)
2026-04-05
280. 읽기-쓰기 락 (Read-Write Lock) - 다중 읽기 허용, 쓰기 배타적
2026-03-22