728x90
✔️ Race Condition(경쟁 상태) 정의
Race Condition(경쟁 상태) 이란?
경쟁 상태란 두 개 이상의 쓰레드가 공유자원에 대해 접근하려고 서로 경쟁하는 것이다.
다르게 말하면, 공유 자원에 대해 여러 쓰레드가 동시에 접근할 때, 접근 순서에 따라 결과값에 영향을 줄 수 있는 상태이다.
✔️ Critical Section(임계 영역) 정의
Critical Section(임계 영역) 이란?
임계 영역이란 Race Condition이 일어날 수 있는 영역으로, 하나의 쓰레드가 특정 공유 자원을 사용할 때 다른 쓰레드가 접근하지 못 하는 구역이다.
이 영역을 여러 쓰레드가 동시에 접근할 때 잘못된 결과를 만들 수 있다.
✔️ Race Condition 발생하는 경우 및 해결책
1. 커널 작업을 수행하는 중 Interrupt(인터럽트) 발생
- 문제점 : 커널모드에서 데이터를 로드하여 작업을 수행하다가 인터럽트가 발생하여 같은 데이터를 조작하는 경우
- 해결책 : 커널모드에서 작업을 수행하는 동안, interrupt를 불가능하게 하여 CPU 제어권을 가져가지 못하도록 한다.
2. 프로세스가 System Call(시스템 콜)을 하여 커널 모드로 작업을 수행 중 Context Switching(문맥 교환) 발생
- 문제점 : 프로세스 A이 커널모드에서 데이터를 조작하는 도중, 시간이 초과되어 CPU 제어권이 프로세스 B로 넘어가 같은 데이터를 조작하는 경우
- 해결책 : 프로세스가 커널모드에서 작업을 하는 경우 시간이 초과되어도 CPU 제어권이 다른 프로세스에게 넘어가지 않도록 함.
3. 멀티 프로세서 환경에서 공유 메모리 내의 커널 데이터에 접근할 때
- 문제점 : 멀티 프로세서 환경에서 2개의 CPU가 동시에 커널 내부의 공유 데이터에 접근하여 조작하는 경우
- 해결책 : 커널 내부에 있는 각 공유 데이터에 접근할 때 마다, 그 데이터에 대해 lock/unlock 하여 데이터에 접근하지 못 하도록 함.
임계 영역(Critical Section)에 대한 경쟁 상태(Race Condition)를 제거하기 위해,
공유자원에 대해 한 쓰레드에만 접근을 허락하도록 하는 상호배제(Mutual Exclusion)을 사용하여 경쟁상태를 막는다.
#참고
https://gyoogle.dev/blog/computer-science/operating-system/Race%20Condition.html
728x90
'CS 지식 > 운영체제' 카테고리의 다른 글
[운영체제] Paging(페이징) 과 Segmentation(세그먼테이션) (0) | 2024.08.25 |
---|---|
[운영체제] Semaphore(세마포어) & Mutex(뮤텍스) (0) | 2024.08.24 |
[운영체제] 데드락(DeadLock) (0) | 2024.08.22 |
[운영 체제] CPU Scheduling (1) | 2024.08.22 |
[운영 체제] PCB & Context Switching (0) | 2024.08.21 |