동기와 비동기

 

 

 

동기

  • 직렬적으로 작업을 수행합니다. 즉, 작업은 순차적으로 실행되며 어떤 작업이 수행중이면 다른 작업은 대기하게 됩니다.
  • 서버에서 데이터를 가져와 화면에 표시하는 작업을 수행할 때, 서버에 데이터를 요청하고 응답이 올 때까지 이후의 작업들은 Blocking됩니다.

 

비동기

  • 병렬적으로 작업을 수행합니다. 즉, 작업이 종료되지 않은 상태라도 대기하지 않고 다음 작업을 실행합니다.
  • 서버에서 데이터를 가져와서 화면에 표시하는 작업을 수행할 때, 서버에 데이터를 요청하고 응답이 올 때까지 기다리지 않고(Non-Blocking) 이후의 작업을 수행합니다. 만약, 서버로부터 응답오게되면 이벤트가 발생하고 이벤트 핸들러가 데이터를 가지고 수행할 작업을 연속적으로 수행합니다.

 

 

프로세스 동기화

  • 프로세스는 서로 메세지를 보내고 프로세스 내부에서는 스레드끼리 자원을 공유하면서 동기화에 대한 문제가 항상 발생할 수 있습니다. 즉, 공유된 자원에 여러 프로세스, 여러 스레드가 동시에 접근하면서 문제가 발생합니다.

 

Critical Section(임계 구역)

  • Critical Section은 멀티 프로세스 환경에서 둘 이상의 프로세스가 동시에 접근해서는 안되는 공유 자원의 코드 영역입니다. Critical Section은 시간이 지나면 종료되며 어떤 프로세스가 Critical Section에 접근하기 위해서는 지정된 시간만큼 대기해야 합니다.
  • 이 때, 스레드나 프로세스가 사용권을 보장받기 위해서 세마포어 같은 동기화 메커니즘이 사용됩니다.

 

Critical Section 문제를 해결하기 위한 3가지 조건

  1. Mutual Exclusion(상호 배제)
    • 하나의 프로세스가 임계 구역에 들어가 있으면 다른 프로세스는 임계구역에 들어갈 수 없다.
  2. Progress (진행)
    • 임계 구역에 들어간 프로세스가 없다면 어떤 프로세스가 임계 구역에 들어갈지 선택해야한다.
  3. Bounded Waiting (한정 대기)
    • 기아 상태를 방지하기 위해 이미 한 번 들어간 프로세스는 다음에 들어갈 때 제한을 준다.

 

동기화를 제공하는 방법

  • Lock
    • 하드웨어 기반 해결책으로써 동시에 공유 자원에 접근하는 것을 막기 위해 Critical Section에 진입하는 프로세스는 Lock을 획득하고 Critical Section을 빠져나올 때 Lock을 풀어줌으로써 동시 접근이 불가능하게 합니다.
  • 세마포어
    • 동시에 리소스에 접근할 수 있는 허용 가능한 개수를 가지고있는 counter로 보면 됩니다. 
    • counter의 개수에 따라 1개일 경우 이진세마포어(뮤텍스), 2개 이상일 경우 카운팅 세마포어라고 부릅니다.
  • 세마포어와 뮤텍스의 차이
    • 공유 자원에 대한 접근권한, Lock이라는 키를 한개만 가지고 있는 것은 뮤텍스이고, 키를 여러개 가질 수 있는 것은 세마포어 입니다.

 

교착 상태(Deadlock)

  • 서로 상대방의 작업이 끝나기만을 기다리는 두 개 이상의 작업이 서로 종료되지 않아 작업 진행이 불가능한 상태를 말합니다.

 

교착 상태 발생 조건

  • Mutual Exclusion (상호 배제)
    • 한 번에 한 개의 프로세스만이 공유 자원을 사용할 수 있어야 한다.
  • Hold ans Wait (점유 대기)
    • 프로세스가 자원을 할당한 채로 다른 자원을 기다린다.
  • No Preemption (비선점)
    • 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없어야 한다.
  • Circular Wait (순환 대기)
    • 공유 자원을 사용하기 위해 대기하는 프로세스들이 원형으로 구성되어 있어 자신에게 할당된 자원을 점유하면서 앞이나 뒤에 있는 프로세스의 자원을 요구해야 한다.
  • 위의 네 가지 조건을 모두 충족시킬 때 교착 상태가 발생할 수 있습니다. 위 네 가지 조건 중 하나라도 충족되지 않으면 교착 상태는 발생하지 않습니다.

 

 

+ Recent posts