-
Operating System - 경쟁 상태(Race Condition)Computer Science/Operating System 2022. 1. 24. 13:00
경쟁 상태(Race Condition)
경쟁 상태란?
ㆍ 프로세스가 어떤 순서로 데이터에 접근하느냐에 따라 결괏값이 달라질 수 있는 상황을 말한다.
ㆍ 둘 이상의 입력이나 조작이 동시에 일어나 의도하지 않은 결과를 가져오는 경우를 말한다.
ㆍ 공유 자원에 여러 프로세스가 동시에 접근할 때 자료의 일관성을 해치는 결과가 나타날 수 있다.
ㆍ 경쟁 상태로 교착상태의 종류 중에 하나이다.
경쟁 상태가 발생하는 상황
커널 작업을 수행하는 중에 인터럽트가 발생하는 경우
ㆍ 문제점 : 커널 모드에서 데이터를 로드하여 작업을 수행하다가 인터럽트가 발생하여 같은 데이터를 조작하는 경우에 발생한다.
ㆍ 해결법 : 커널 모드에서 작업을 수행하는 동안, 인터럽트를 disable 시켜 CPU 제어권을 가져가지 못하게 한다.
프로세스가 System Call을 하여 커널 모드로 진입해 작업 수행 도중 문맥 교환이 발생하는 경우
ㆍ 문제점 : Process 1이 커널 모드에서 데이터를 조작하던 도중 시간이 초과되어 CPU 제어권이 Process 2로 넘어가 같은 데이터를 조작하는 경우를 말한다.
ㆍ 해결법 : 프로세스가 커널 모드에서 작업을 하는 경우 시간이 초과되어도 CPU 제어권이 다른 프로세스에게 넘어가지 않도록 한다.
멀티 프로세서 환경에서 공유 메모리 내의 커널 데이터에 접근하는 경우
ㆍ 문제점 : 멀티 프로세서 환경에서 2개의 CPU가 동시에 커널 내부의 공유 데이터에 접근하여 조작하는 경우 발생한다.
ㆍ 해결법 : 커널 내부에 있는 각 공유 데이터에 접근할 때마다 해당 데이터에 대해 lock 또는 unlock을 함으로써 해결할 수 있다.
728x90'Computer Science > Operating System' 카테고리의 다른 글
Operating System - 페이징(Paging) & 세그멘테이션(Segmentation) (0) 2022.01.26 Operating System - 세마포어(Semaphore) & 뮤텍스(Mutex) (0) 2022.01.25 Operating System - 데드락(DeadLock) (0) 2022.01.24 Operating System - CPU Scheduling (0) 2022.01.14 Operating System - IPC (0) 2022.01.12