- 경쟁 상태(Race Condition) : 여러 개의 프로세스가 공유 자원에 동시 접근할 때 실행 순서에 따라 결과값이 달라질 수 있는 현상이다.
- 즉, 공유 자원에 여러 프로세스가 동시에 접근할 때 자료의 일관성을 해치는 결과나 나타날 수 있다.
- 경쟁 상태의 문제를 해결하기 위해 공유 메모리를 쓰는 프로세스끼리 "동기화"를 해줘야 한다.
- 동기화 : 쓰레드의 순차적 실행을 보장하는 것
- 동기화를 예를 들어서 설명하면, 탈의실을 생각해볼 수 있다. 탈의실은 한번에 한명만 이용할 수 있고 다른 사람은 사용중인 탈의실의 사용을 기다려야 한다.
- 동기화에서는 탈의실을 임계 구역(Critical Section)이라고 하고, 오직 한번에 한명만 들어갈 수 있는 것을 상호 배제(Mutually exclusive)라고 한다.
- 임계구역 : 경쟁상태가 발생할 수 있는 코드의 조각 혹은 쓰레드 또는 프레스스간 공유하고 있는 변수가 있는 코드 조각.
- 임계구역에서 경쟁상태가 발생하면 "임계구역 문제(Critical Section Problem)이라고 한다.
- 임계구역은 아래의 세 가지 요구조건을 만족시켜야 유효한 알고리즘이 된다.
1. Mutal Exclusion(상호 배제) : 하나의 자원에는 하나의 프로세스만 접근할 수 있다.
2. Progress(진행) : 임계구역이 비었으면 자원을 사용할 수 있어야 한다.
3. Bounded Waiting(유한 대기) : 대기하면 언젠가는 임계구역에 진입할 수 있어야 하며 무한정으로 대기하면 안된다.
학습 단계로 잘못된 정보가 있을 수 있습니다. 잘못된 부분에 대해 알려주시면 정정하도록 하겠습니다.
'이것저것 스터디📚 > 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 |