운영체제

경쟁상태(Race Condition)

rnrwk0502 2024. 8. 17. 00:14

경쟁상태(Race Condition)란?

- 두 개 이상의 프로세스가 공통 자원을 병행적으로(concurrently) 읽거나 쓰는 동작을 할 때, 공용 데이터에 대한 접근이 어떤 순서에 따라 이루어 졌는지에 따라 그 실행 결과가 달라지는 상황을 말한다.

 Race의 뜻 그대로, 간단히 말하면 경쟁하는 상태, 즉 두 개의 스레드가 하나의 자원을 놓고 서로 사용하려고 경쟁하는 상황을 말한다. 

 

경쟁상태가 발생하는 경우

  1. 커널 작업을 수행하는 중에 인터럽트 발생
    • 문제점 : 커널모드에서 데이터를 로드하여 작업을 수행하다가 인터럽트가 발생하여 같은 데이터를 조작하는 경우
    • 해결법 : 커널모드에서 작업을 수행하는 동안, 인터럽트를 disable시켜 CPU제어권을 가져가지 못하도록 한다.
  2. 프로세스가 'System call'을 하여 커널모드로 진입하여 작업을 수행하는 도중 문맥교환이 발생할 때
    • 문제점 : 프로세스1이 커널모드에서 데이터를 조작하는 도중, 시간이 초과되어 CPU제어권이 프로세스2로 넘어가서 같은 데이터를 조작하는 경우 ( 프로세스2가 작업에 반영되지 않음 )
    • 해결법 : 프로세스가 커널모드에서 작업을 하는 경우 시간이 초과되어도 CPU제어권이 다른 프로세스에게 넘어가지 않도록 한다.
  3. 멀티 프로세서 환경에서 공유 메모리 내의 커널 데이터에 접근할 때
    • 문제점 : 멀티 프로세서 환경에서 2개의 CPU가 동시에 커널 내부의 공유 데이터에 접근하여 조작하는 경우
    • 해결법 : 커널 내부에 있는 각 공유 데이터에 접근할 때마다, 그 데이터에 대한 lock/unlock을 한다.

 

임계 영역(Critical Section)이란?

- 운영체제에서 여러 프로세스가 데이터를 공유하면서 수행될 때 각 프로세스에서 공유 자원에 접근하는 프로그램 코드

- 프로세스 간에 공유 자원을 접근하는 것에 있어 문제가 발생하지 않도록 공유 자원의 독점을 보장해줘야 하는 영역이다.

 

임계 영역 문제를 해결하기 위해서는 아래의 3가지 조건을 충족해야 한다.

  • Mutual Exclusion (상호 배제) : 한 프로세스가 자신의 임계 영역이면, 다른 프로세스들은 임계 영역에 진입할 수 없다.
  • Progress (진행) : 아무도 임계 영역에 있지 않다면, 진입하고자 하는 프로세스를 진입하게 해줘야한다. 즉 임계 영역에 아무도 진입하지 못하고 있으 안되며, 다음에 어떤 프로세스가 임계 영역에 진입해야 하는지 일정 시간 내에 결정되야 한다.
  • Bounded Waiting (유한 대기) : 프로세스가 임계 영역에 진입하기 위해 무한정으로 기다리는 현상(Starvation)이 발생해서는 안된다.

임계 영역 해결방법

1. 유저모드의 동기화

- 커널의 힘을 빌리지 않는(커널 코드가 실행되지 않는) 동기화 기법 (ex.피터슨 알고리즘)

 

2. 커널모드의 동기화

- 커널에서 제공하는 동기화 기능을 활용하는 방법

 커널 모드로의 변경이 필요하므로 성능 저하가 있지만 다양한 기능 활용이 가능하다.

 각 프로세스들 안의 스레드들끼리의 동기화도 가능하다. 세마포, 뮤텍스, 모니터 등의 방법이 있다.

 

출처

https://velog.io/@yh_lee/Race-Condition%EA%B2%BD%EC%9F%81%EC%83%81%ED%83%9C

 

Race Condition(경쟁상태)

임계구역, 경쟁상태, 세마포어, 뮤텍스

velog.io

https://velog.io/@klloo/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EA%B2%BD%EC%9F%81-%EC%83%81%ED%83%9C-Race-Condition

 

[운영체제] 경쟁 상태 (Race Condition)

공유 자원에 대해 여러 프로세스가 동시에 접근을 시도할 때, 타이밍이나 순서 등이 결과값에 영향을 줄 수 있는 상태공유 자원에 여러 프로세스가 동시에 접근할 때 자료의 일관성을 해치는 결

velog.io

https://gyoogle.dev/blog/computer-science/operating-system/Race%20Condition.html

 

경쟁 상태(Race Condition) | 👨🏻‍💻 Tech Interview

경쟁 상태(Race Condition) 공유 자원에 대해 여러 프로세스가 동시에 접근할 때, 결과값에 영향을 줄 수 있는 상태 동시 접근 시 자료의 일관성을 해치는 결과가 나타남 Race Condition이 발생하는 경우

gyoogle.dev