2019년 4월 19일
경쟁 조건/자원 경합 (Race Condition)
I. 동시 수행의 위험, 자원 경합의 의미
가. 자원 경합의 정의
- 공유 자원에 대해 여러 개의 프로세스가 동시에 접근을 시도하여 일관성 보장이 어려운 상태
나. 자원 경합의 특징
특징 | 설명 |
---|---|
예측 불가 | – 발생 현상, 빈도 등 예측이 전혀 불가능 |
비 균등 | – 성능 변화가 불균등하여 일관성이 없음 |
분석 난해 | – 연관 요인에 의해 원인분석 어려움 |
- 일반적이지 않은 현상이 나타나므로 발생 조건 및 해결방안 찾기 어려움
II. 자원 경합의 발생 조건
가. 구조적 측면의 자원 경합 발생 조건
항목 | 설명 |
---|---|
발생 조건 | – 처리하는 내용에 관계없이 프로세스의 동작이 단일 자원을 할당 받으려는 경우 발생 |
발생 사례 | – 복수 프로세스가 동시에 파일 할당 요청 – 복수 프로세스 동일 메모리 주소 할당 요청 |
나. 처리적 측면의 자원 경합 발생 조건
발생 조건 | 설명 |
---|---|
발생 조건 | – 복수 프로세스가 명령을 처리하기 위해 동시에 단일 자원을 사용하려는 경우 발생 |
발생 사례 | – 복수 프로세스가 외부 I/O 사용 시 발생 – 복수 프로세스가 시리얼 포트 접근 시 발생 |
III. 자원 경합 발생 시 해결 방안
구분 | 방안 | 설명 |
---|---|---|
상호 배제 | 피터슨 알고리즘 | – 피터슨 알고리즘으로 임계 구역의 상호 배제, 진행 조건, 한계 대기 충족 |
HW 방법 | – 시스템에서 제공하는 명령어 사용하여 자원 의 상태를 점검하고 변경 | |
동기화 | 세마 포어 | – 임계 구역과 P, V 명령에 의한 자원 할당의 독립성 부여 |
Spin Lock | – 지속적으로 Lock을 시도하면서 CPU를 점유하기 위한 기법 |
- 공유 자원 할당의 독립성을 부여하여 자원경합 발생 방지