경쟁 조건/자원 경합 (Race Condition)

I. 동시 수행의 위험, 자원 경합의 의미

가. 자원 경합의 정의

  • 공유 자원에 대해 여러 개의 프로세스가 동시에 접근을 시도하여 일관성 보장이 어려운 상태

나. 자원 경합의 특징

특징설명
예측 불가– 발생 현상, 빈도 등 예측이 전혀 불가능
비 균등– 성능 변화가 불균등하여 일관성이 없음
분석 난해– 연관 요인에 의해 원인분석 어려움
  • 일반적이지 않은 현상이 나타나므로 발생 조건 및 해결방안 찾기 어려움

 

II. 자원 경합의 발생 조건

가. 구조적 측면의 자원 경합 발생 조건

항목설명
발생 조건– 처리하는 내용에 관계없이 프로세스의 동작이 단일 자원을 할당 받으려는 경우 발생
발생 사례– 복수 프로세스가 동시에 파일 할당 요청
– 복수 프로세스 동일 메모리 주소 할당 요청

나. 처리적 측면의 자원 경합 발생 조건

발생 조건설명
발생 조건– 복수 프로세스가 명령을 처리하기 위해 동시에 단일 자원을 사용하려는 경우 발생
발생 사례– 복수 프로세스가 외부 I/O 사용 시 발생
– 복수 프로세스가 시리얼 포트 접근 시 발생

 

III. 자원 경합 발생 시 해결 방안

구분방안설명
상호 배제피터슨 알고리즘– 피터슨 알고리즘으로 임계 구역의 상호 배제, 진행 조건, 한계 대기 충족
HW 방법– 시스템에서 제공하는 명령어 사용하여 자원 의 상태를 점검하고 변경
동기화세마 포어– 임계 구역과 P, V 명령에 의한 자원 할당의 독립성 부여
Spin Lock– 지속적으로 Lock을 시도하면서 CPU를 점유하기 위한 기법
  • 공유 자원 할당의 독립성을 부여하여 자원경합 발생 방지

콘텐츠 사용 시 출처 표기 부탁 드리고, 댓글은 큰 힘이 됩니다^^