경쟁상태(Race Condition)

Q. 경쟁상태(Race Condition)이란 무엇인가요?

  • 프로세스가 어떤 순서로 데이터에 접근하느냐에 따라 결과값이 달라질 수 있는 상황을 말합니다.
  • 둘 이상의 입력이나 조작이 동시에 일어나 의도하지 않은 결과를 가져오는 경우를 말합니다.
  • 동시 접근 시 자료의 일관성을 해치는 결과가 나타날 수 있습니다.
  • 경쟁 상태도 교착상태의 종류 중에 하나입니다.

 

교착상태(DeadLock)

Q. 데드락(교착상태)이 무엇인가요? 발생 조건에 대해 말해주세요

  • 데드락은 프로세스가 자원을 얻지 못해서 다음 처리를 하지 못하는 상태를 말하며, 시스템적으로 한정된 자원을 여러 곳에서 사용하려고 할 때 발생합니다.
  • 발생 조건으로는 상호 배제, 점유 대기, 비선점, 순환 대기 모두가 성립해야 합니다.
    • 상호 배제 : 자원은 한 번에 한 프로세스만 사용할 수 있음
    • 점유 대기 : 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용하고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 존재해야 함
    • 비선점 : 다른 프로세스에 할당된 자원을 사용이 끝날 때까지 강제로 빼앗을 수 없음
    • 순환 대기 : 프로세스 집합에서 순환 형태로 자원을 대기하고 있어야 함

 

Q. 회피 기법인 은행원 알고리즘이 무엇인가요?

  • 운영체제를 안전상태를 유지할 수 있는 요구만을 수락하고 불안전 상태를 초래할 사용자의 요구는 나중에 만족될 수 있을 때까지 계속 거절합니다.

+ 안전상태와 불안전상태

안전상태 불안전상태
교착상태가 일어날 가능성 없음
프로세스가 요구한 양만큼 자원 할당 가능
안전 순서열 존재함
교착상태가 일어날 가능성 있음
프로세스가 요구한 양만큼 자원 할당 불가능
안전 순서열 존재안함

시스템은 안전상태에서 불안정 상태로 변할 수 있다.

 

Q. 교착상태 해결방안은 무엇이 있나요?

  • 교착상태 예방, 회피, 탐지, 회복이 있습니다.
    • 예방 : 교착 상태 발생 조건 중 하나를 제거하면서 해결한다(자원 낭비 심함)
    • 회피 : 교착 상태 발생 시 피해나가는 방법
    • 탐지 : 자원 할당 그래프를 통해 교착 상태를 탐지해 그에 대한 오버헤드 발생함
    • 회복 : 교착 상태를 일으킨 프로세스를 종료하거나, 할당된 자원을 해제시켜 회복시키는 방법

 

세마포어(Semaphore)와 뮤텍스(Mutex)

Q. 세마포어(Semaphore)와 뮤텍스(Mutex)의 공통점과 차이점은 무엇인가요?

  • 둘 다 병행 처리를 위한 프로세스 동기화 기법입니다. (여러 프로세스나 쓰레드가 공유 자원에 접근하는 것을 제어하기 위한 방법)
  • 세마포어는 공유 자원에 세마포어의 변수만큼의 프로세스(or 쓰레드)에 접근할 수 있습니다. 반면에 뮤텍스는 오직 1개만의 프로세스(or 쓰레드)만 접근할 수 있습니다.
  • 현재 수행중인 프로세스가 아닌 다른 프로세스가 세마포어를 해제할 수 있습니다. 하지만 뮤텍스는 락(lock)을 획득한 프로세스가 반드시 그 락을 해제해야 합니다.

세마포어 P(임계 구역 들어가기 전에 수행),V(임계 구역에서 나올 때 수행) 연산

뮤텍스 : 접근 조율을 위해 락(lock)과 해제(unlock) 사용, 상태가 1과 0로 이진 세마포어로 부르기도 함

세마포어와 뮤텍스 참고자료

 

Q. 임계구역(Critical Section)이란 무엇인가요?

  • 각 프로세스에서 공유 데이터를 접근하는 프로그램 코드 부분으로 한 프로세스가 임계 구역을 수행할 때는 다른 프로세스가 접근하지 못하도록 해야 합니다.

반응형

+ Recent posts