이론

Race Condition

월러비 2024. 4. 5. 20:56

Race Condition이란?

  • 여러 프로세스가 동일한 데이터에 동시에 액세스하며, 실행 결과는 액세스의 특정 순서에 따라 달라진다.

Race Condition 특징

  • 동기화가 필요하다.
    • 레이스 상황을 방지하기 위해 한 번에 하나의 프로세스만 공유 데이터를 조작한다.
  • 다중 코어 시스템의 중요성이 증가한다.
    • 멀티 스레드 애플리케이션이 서로 다른 프로세싱 코어에서 병렬로 실행 중이다,.
  • OS는 많은 커널 모드 프로세스가 활성 상태이기 때문에 몇 가지 가능한 경쟁 조건을 따른다.

Critical Section (임계 영역)

  • 프로세스가 공유 데이터에 접근하거나 조작하는 코드 세그먼트다.
  • 프로세스에는 코드의 중요한 섹션 세그먼트가 있다.
    • 공통변수 변경, 테이블 업데이트, 파일 작성 등의 프로세스가 있을 수 있다.
    • 하나의 프로세스가 임계 섹션에 있을 때, 다른 프로세스가 임계 섹션에 없을 수 있다.
  • 크리티컬 섹션 문제는 이를 해결하기 위한 프로토콜을 설계하는 것이다.
  • 프로세스는 입력 섹션에 중요 섹션 입력에 대한 허가를 요청해야 하며, 중요 섹션 뒤에 종료 섹션이 있을 수 있으며, 나머지 섹션이 있을 수 있다.

문제 해결

상호배제 (Mutual exclusion)

  • 프로세스 Pi가 해당 크리티컬 섹션에서 실행되는 경우, 다른 프로세스는 해당 크리티컬 섹션에서 실행될 수 없다.

진행상황 (Progress)

  • 해당 크리티컬 섹션에 프로세스가 실행되고 있지 않고 해당 크리티컬 섹션에 들어가려는 프로세스가 있는 경우, 다음에 크리티컬 섹션에 들어갈 프로세스의 선택을 무기한 연기할 수 없다. (즉, 진행할 수 있어야한다.)
  • 교착상태 및 라이브록 방지

제한대기 (Bounded waiting)

  • 프로세스가 해당 중요 섹션에 들어가도록 요청한 후 해당 요청이 승인되기 전에 다른 프로세스가 해당 프로세스의 중요 섹션에 들어가도록 허용된 횟수에 대한 제한이 존재해야 한다. (즉, 무한 대기는 없다. 라는 소리)

기아(Starvation) 문제 회피

'이론' 카테고리의 다른 글

직렬화  (0) 2024.04.06
마샬링  (0) 2024.04.05
Sprite Sheet  (0) 2024.04.03
Scriptable Object  (0) 2024.04.02
SerializeObject  (0) 2024.04.01