둠치킨
코딩하는 둠치킨
둠치킨

블로그 메뉴

  • 홈
  • 분류 전체보기 (218)
    • BOJ (171)
      • 스택 (14)
      • 큐 (5)
      • 덱 (4)
      • 그래프 (30)
      • 배열 (8)
      • 재귀 (12)
      • 브루트 포스 (2)
      • 그리디 알고리즘 (7)
      • 다이내믹 프로그래밍 (13)
      • 백트래킹 (24)
      • 기하학 (4)
      • 트리 (4)
      • 구현 (14)
      • 수학 (3)
      • 맵 (1)
      • 다익스트라 (2)
      • 누적합 (5)
    • 자료구조 (14)
      • 스택 (3)
      • 큐 (5)
      • 덱 (2)
      • 그래프 (1)
      • 트리 (1)
      • 힙 (1)
      • 정렬 (1)
    • C++ (11)
      • 모두의코드 (2)
      • Effective C++ (3)
      • C++ STL (6)
    • 컴파일러 (1)
    • OS (17)
    • 컴퓨터 구조 (2)
    • Unreal Engine 5 (2)

공지사항

전체 방문자
오늘
어제

인기 글

최근 글

태그

  • BFS
  • boj
  • Bruteforce
  • C
  • C++
  • C++ STL
  • Cache Memory
  • deadlock
  • DFS
  • Effective C++
  • java
  • Mutex
  • next_permutation
  • os
  • Process
  • rotate
  • semaphore
  • spin lock
  • STL
  • STL C++
hELLO · Designed By 정상우.
둠치킨

코딩하는 둠치킨

OS

경쟁 조건(Race Condition)이란?

2025. 6. 24. 19:42

경쟁 조건(Race Condition)이란?

경쟁 조건(Race Condition)은 둘 이상의 스레드 또는 프로세스가 동시에 동일한 공유 자원에 접근할 때,
실행 순서나 타이밍에 따라 프로그램의 결과가 달라지는 현상을 말한다.

이러한 현상은 공유 자원에 대한 접근이 적절히 동기화되지 않았을 때 발생하며,
예상치 못한 동작, 논리 오류, 데이터 손상 등으로 이어질 수 있다.


경쟁 조건의 특징

  • 멀티스레드 또는 멀티프로세싱 환경에서 주로 발생
  • 재현이 어렵고 디버깅이 매우 까다로운 대표적인 동시성 버그
  • 프로그램 테스트 중에는 잘 나타나지 않다가 실제 환경에서 간헐적으로 터지는 경우가 많음
  • 공유 자원: 변수, 메모리, 파일, 소켓 등

경쟁 조건 예시

이전 글 "임계영역이란?"에 나오는 카운터 예제 참고.


경쟁 조건 해결 방법

경쟁 조건을 방지하려면 공유 자원 접근을 동기화(synchronization)해야 한다. 이를 위한 대표적인 기법은 다음과 같다.

1. 뮤텍스, 2. 세마포어, 3. 스핀락, 4. std::atomic 등. 자세한 내용은 동기화 객체에 대한 포스트에서 다룰 예정이다.

저작자표시 (새창열림)

'OS' 카테고리의 다른 글

다양한 OS 스케줄링 기법  (0) 2025.06.24
쓰레드와 프로세스 (Thread & Process)  (0) 2025.06.24
파편화 (Fragmentation)  (0) 2025.06.24
동기화 객체란?  (0) 2025.06.23
데드락(Deadlock)이란?  (0) 2025.06.23
    'OS' 카테고리의 다른 글
    • 다양한 OS 스케줄링 기법
    • 쓰레드와 프로세스 (Thread & Process)
    • 파편화 (Fragmentation)
    • 동기화 객체란?
    둠치킨
    둠치킨
    코딩 공부를 위한 코딩 블로그 기록 일기

    티스토리툴바