Skip to content

Latest commit

 

History

History
21 lines (11 loc) · 1.75 KB

File metadata and controls

21 lines (11 loc) · 1.75 KB

동기화 (Syncronization)

  • 프로세스 혹은 스레드의 동기화 목적은 공유 데이터에 대한 경쟁 상태를 제어하기 위함이다.

  • 경쟁 상태의 문제점을 실 서비스에서 생각해보면 입금과 출금이라는 두 작업이 동시에 일어나지 않고 입금을 처리하는 로직의 스레드 실행 도중 출금을 처리하는 로직의 스레드로 문맥 교환이 일어나서 처리가 제대로 되지 않아 고객의 자산에 손해를 끼칠 수도 있다.

임계 영역 문제 (The Critical Section Problem)

  • 특정 코드 영역을 임계 영역으로 설정하고 해당 영역에 한 프로세스 혹은 스레드가 접근한 상태라면 다른 프로세스 혹은 스레드는 접근하지 않도록 하는 방법으로 데이터를 동기화하는 방법이다.

  • 임계 영역을 설정하여 경쟁 상태를 해결하기 위해서는 필요한 요소 3가지가 있다.

  • 상호 배제 (Mutual Exclusion) - 한 프로세스가 임계 영역에서 실행 중이라면 다른 프로세스는 임계 영역을 실행할 수 없다.

  • 교착 상태 방지 - 여러 프로세스가 교착 상태에 빠져 무한대로 임계 영역에 진입하려고 대기하는 상황을 방지해야 한다.

  • 기아 방지 - 몇몇 프로세스가 우선 순위에서 밀려 임계 영역에 계속 접근하지 못하는 상황을 방지해야 한다.

선점형 커널 vs 비선점형 커널

  • 비선점형 커널은 경쟁 상태가 발생하지 않는다. 선점형 커널은 선점이 가능하기 때문에 프로세스 혹은 스레드 간 경쟁 상태가 발생할 수 있다. 그렇지만 응답성이 더 좋기 때문에 선점형 커널을 사용하고 경쟁 상태를 해결하는 방법이 채택되었다.