반응형

문맥 교환?

문맥교환이 이루어지면 프로세스의 상태를 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
반응형
블로그 이미지

아상관없어

,