반응형
문맥 교환?
문맥교환이 이루어지면 프로세스의 상태를 pcb에 저장하고 저장된 프로세스를 불러온다.
이 과정은 시간이 소모된다.
(PCB = process control block)
count는 두 스레드에서 사용되므로 공유 변수이다. (공유 변수를 다루는 코드를 critical section = 임계영역 이라고 한다.)
만약, lock/unlock이 없을때
1번 스레드가 "if count == 0"까지 수행하고 스레드 2로 문맥교환이 이루어지고, 스레드 2는 "count++"를 하고 time out이 되어 다시 스레드 1이 수행될 경우 스레드 1은 "count++"를 하여 count의 값은 2가 되버리는 문제가 발생한다.
따라서 경쟁 조건 발생시 실행결과가 예측 불가하게 된다. 그러므로 mission-critical-system에서는 이러한 문제가 중요하다.
이 문제는 lock/unlock을 하거나 semaphore를 사용하여 동기화시켜주어 막을 수 있다.
경쟁 조건은 여러 프로세스들이 같은 데이터를 동시에 접근하려 할때 발생한다.
만약 특권 프로그램이 경쟁 상태를 가지면 공격자는 통제 불가능한 사건에 영향을 주어 특권 프로그램의 실행 결과에 영향을 줄 수 있다.
728x90
반응형