프로세스 동기화

GwanMtCat·2023년 9월 18일
0

프로세스 간 통신

Inter Process Communication

프로세스는 시스템 내에서 독립적으로 실행되기도 하고, 데이터를 주고받으면 협업하기도 한다.
프로세스와 다른 프로세스가 데이터를 주고 받는 통신을 말한다.
여기서 통신은 네트워크로 연결된 다른 컴퓨터에 있는 프로세스와의 통신도 포함한다.


프로세스 간 통신의 분류

프로세스 간 통신의 종류

  • 프로세스 내부 데이터 통신

    • 2개 이상의 쓰레드가 존재하는 경우, 전역 변수나 파일을 이용
  • 프로세스 간 데이터 통신

    • 여러 프로세스끼리 통신하는 경우, 공용파일 또는 운영체제가 제공하는 파이프를 이용
  • 네트워크를 이용한 데이터 통신

    • 여러 컴퓨터가 네트워크를 이용하는 경우, 소켓, 원격 프로시저를 이용

통신 방향에 따른 분류

함수 호출도 데이터를 주고받는다는 의미에서 통신이라고 생각할 수 있으나, 함수는 하나의 프로세스 내에서 순차적으로 실행되기 때문에 포함되지 않음

프로세스 간 통신은 동시에 실행되는 프로세스끼리(2개 이상) 데이터를 주고받는 작업을 의미

  • 양방향(Duplex) 통신

    • 데이터를 동시에 양쪽 방향으로 전송할 수 있는 구조
    • 일반적인 통신은 모두 양방향
    • 소켓 통신
  • 반양방향(Half Duplex) 통신

    • 데이터를 양쪽 방향으로 전송할 수 있지만, 동시 전송이 불가능
    • 무전기
  • 단방향(Simplex) 통신

    • 한쪽 방향으로만 데이터 전송이 가능한 구조
    • 전역 변수 (2개 이상이면 양방향 가능), 파이프

통신 구현 방식에 따른 분류

전역 변수를 사용하는 통신 방식의 가장 큰 문제는 언제 데이터를 보낼지 데이터를 받는 쪽에서 모른다는 것
그러므로 데이터를 받는 쪽에서 반복적으로 전역 변수의 값을 체크해야 함
이렇게 반복문을 무한 실행하며 기다리는 것을 바쁜 대기(busy waiting) 이라고 함

이를 해결하기 위해서는 데이터가 도착했음을 알려주는 동기화(synchronization)을 사용함(메신저 알림)
(여러 프로세스/스레드를 동시에 실행해도 데이터의 일관성을 유지 하는것)

동기화 기능이 있느냐 없느냐에 따라 구분 할 수 있음

  • 대기가 있는 통신

    • 동기화를 지원하는 통신 방식, 데이터를 받는 쪽은 데이터가 도착할 때까지 자동으로 대기 상태에 머물러 있음
  • 대기가 없는 통신

    • 동기화를 지원하지 않는 통신 방식, 데이터를 받는 쪽은 바쁜 대기를 사용하여, 데이터가 도착했는지 여부를 직접 확인한다.

공유 자원과 임계구역

공유자원?

공유 자원(shared resource)는 여러 프로세스/쓰레드 가 공동으로 이용하는 변수, 메모리, 파일 등을 말한다.
프로세스들의 공유 자원 접근 순서를 정하여, 예상치 못한 문제가 발생하지 않도록 해야 한다.

2개 이상의 프로세스가 공유 자원을 병행적으로 읽거나 쓰는 상황을 경쟁 조건(race condition)이 발생했다고 한다.


임계구역?

공유 자원 접근 순서에 따라 실행 결과가 달라지는 프로그램의 영역을 임계구역(critical section)이라고 한다.
임계구역에서는 프로세스들이 동시에 작업하면 안된다.

전역 변수, 하드웨어 자원을 사용될 때 적용되는 개념으로 해결하기 위해서는 다음의 조건이 있다.

  • 상호 배제(mutual exclusion)

    • 한 프로세스가 임계구역에 들어가면, 다른 프로세스는 임계구역에 들어갈 수 없다.
  • 한정 대기(bounded waiting)

    • 어떤 프로세스도 무한대기 하지 않아야 한다. 이로 인해 다른 프로세스가 진입 못해서는 안 된다.
  • 진행의 융통성(progress flexibility)

    • 한 프로세스가 다른 프로세스의 진행을 방해해서는 안 된다는 것을 의미

0개의 댓글