프로그래밍/운영체제(OS)

프로세스 동기화(Process Synchronization)란 무엇인가?

병인 2020. 12. 29. 01:00

경쟁 상황(race condition)

  • 동시에 여러 개의 프로세스가 동일한 자료를 접근하여 조작하고, 그 실행 결과가 접근이 발생한 특정 순서에 의존하는 상황
  • 이를 해결하기 위해 프로세스들이 동기화 될 수 있도록 할 필요가 있다.

임계구역 문제(Critical-Serction Problem)

  • 프로세스 동기화에 대한 논의는 임계구역 문제라고 불리는 문제부터 시작한다.
  • 한 프로세스가 자신의 임계구역에서 수행하는 동안에는 다른 프로세스들은 그들의 임계구역에 들어갈 수 없다 라는 특징이 있다.
  • 진입을 요청하는 코드를 진입 구역(entry section)이라고 부른다.
  • 코드의 나머지 부분을 나머지 구역(remainder section)이라고 부른다.

임계구역 문제의 해결 방법

  • 임계 구역 문제는 다음의 세 가지 요구조건을 충족하면 해결할 수 있다.
  1. 상호 배제(mutual exclusion): 프로세스 P1이 자기의 임계구역에서 실행된다면, 다른 프로세스들은 그들의 임계구역에서 실행될 수 없다.
  2. 진행(progress): 자신의 임계구역에서 실행되는 프로세스가 없고, 그들 자신의 임계구역으로 진입하려고 하는 프로세스들이 있다면, 나머지 구역에서 실행 중이지 않은 프로세스들만 다음에 누가 그 임계구역으로 진입할 수 있는 지를 결정하는 데 참여할 수 있으며, 이 선택은 무한정 연기될 수 없다.
  3. 한정된 대기(bounded waiting): 프로세스가 자기의 임계구역에 진입하려는 요청을 한 후부터 그 요청이 허용될 때까지 다른 프로세스들이 그들 자신의 임계구역에 진입하도록 허용되는 횟수에 한계가 있어야 한다.
  • 운영체제 내에서 임계구역을 다루기 위해 선점형 커널과 비선점형 커널이 사용된다.
    • 선점형 커널: 프로세스가 커널 모드에서 수행되는 동안 선점되는 것을 허용한다.
    • 비선점형 커널: 커널 모드에서 수행되는 프로세스의 선점을 허용하지 않고 커널 모드 프로세스는 커널을 빠져 나갈 때까지 또는 Lock될 때까지 또는 자발적으로 CPU의 제어를 양보할 때까지 계속 수행된다.