본문 바로가기

이것저것 스터디📚/CS 스터디

경쟁 상태(Race Condition)란?

- 경쟁 상태(Race Condition) : 여러 개의 프로세스가 공유 자원에 동시 접근할 때 실행 순서에 따라 결과값이 달라질 수 있는 현상이다.

- 즉, 공유 자원에 여러 프로세스가 동시에 접근할 때 자료의 일관성을 해치는 결과나 나타날 수 있다.

 

- 경쟁 상태의 문제를 해결하기 위해 공유 메모리를 쓰는 프로세스끼리 "동기화"를 해줘야 한다.

- 동기화 : 쓰레드의 순차적 실행을 보장하는 것

- 동기화를 예를 들어서 설명하면, 탈의실을 생각해볼 수 있다. 탈의실은 한번에 한명만 이용할 수 있고 다른 사람은 사용중인 탈의실의 사용을 기다려야 한다.

- 동기화에서는 탈의실을 임계 구역(Critical Section)이라고 하고, 오직 한번에 한명만 들어갈 수 있는 것을 상호 배제(Mutually exclusive)라고 한다.

- 임계구역 : 경쟁상태가 발생할 수 있는 코드의 조각 혹은 쓰레드 또는 프레스스간 공유하고 있는 변수가 있는 코드 조각.

- 임계구역에서 경쟁상태가 발생하면 "임계구역 문제(Critical Section Problem)이라고 한다.

- 임계구역은 아래의 세 가지 요구조건을 만족시켜야 유효한 알고리즘이 된다.

1. Mutal Exclusion(상호 배제) : 하나의 자원에는 하나의 프로세스만 접근할 수 있다.

2. Progress(진행) : 임계구역이 비었으면 자원을 사용할 수 있어야 한다.

3. Bounded Waiting(유한 대기) : 대기하면 언젠가는 임계구역에 진입할 수 있어야 하며 무한정으로 대기하면 안된다.


학습 단계로 잘못된 정보가 있을 수 있습니다. 잘못된 부분에 대해 알려주시면 정정하도록 하겠습니다.

참고 : 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

https://charles098.tistory.com/88

 

'이것저것 스터디📚 > CS 스터디' 카테고리의 다른 글

HTTP GET과 POST 차이  (0) 2023.11.14
Context Switch  (1) 2023.11.13
뮤텍스(Mutex)와 세마포어(Semaphore)  (0) 2023.11.13
쿠키와 세션  (0) 2023.10.24
교착상태  (1) 2023.10.23