프로세스 동기화

Solf·2023년 6월 30일
0

운영체제

목록 보기
8/13

프로세스나 스레드는 독립적으로 실행되기에 서로 협업하거 여러 데이터를 병렬로 처리하기 위해서는 데이터를 주고 받아야한다. 하나의 프로세스에 속한 스레드끼리 통신은 어렵지 않다. 그러나 프로세스끼리 통신은 쉽지 않다. 운영체제는 이런 프로세스끼리의 통신을 쉽게 할 수 있는 방법을 제공하는데 이를 프로세스간 통신(IPC, Inter Process Communication)이라고 한다.

프로세스간 통신의 종류

  • 공유 메모리나 공유 파일을 이용한 통신 : 가장 원시적인 방식
  • 파이프를 이용한 통신 : 하나의 컴퓨터 내에서 프로세스 간 통신에 많이 사용
  • 소켓을 이용한 통신 : 컴퓨터 대 컴퓨터가 네트워크로 연결된 경우 주로 사용

바쁜 대기: 공유파일 방식등에서 생기는 문제로 동기화를 위해 공유 메모리를 반복 조회하며 대기하는 것을 의미한다.

프로세스간 통신의 분류

  • 양방향 통신 (ex 전화)
  • 반양방향 통신 (ex 무전기)
  • 단방향 통신 (ex 모스부호)

공유자원

프로세스가 독립적으로 작업하는 것이 아닌 공유된 자원을 이용하는 경우가 발생한다.

임계 구역

프로세스간 공유자원을 병행해서 읽거나 쓴다면 경쟁 조건이 발생해 결과가 제대로 되었다고 보장할 수 없다. 이를 해결하기 위해 영역을 한번에 여러 프로세스가 접근하지 못하도록 하는 임계구역이 있다.

임계구역은 밑에 조건을 만족해야 문제가 없다.

  • 상호배제 : 허용치 개수의 프로세스만 임계구역에 들어갈 것
  • 한정대기 : 계속해서 임계구역을 기다리는 프로세스가 없도록 할 것
  • 진행의 융통성 : 공평하게 프로세스에게 임계구역을 배분할 것

이를 만족하는 대표적인 알고리즘은 아래와 같다.

  • 피터슨 알고리즘
  • 데커 알고리즘
  • 세마포어
  • 모니터

교착상태

임계구역을 잘 설계하더라도 어쩔 수 없이 임계구역을 사용하다보면 프로세스가 서로 대기하며 작업이 더 이상 진행되지 않는 교착상태에 빠지는 경우가 있다.

이때 교착 상태를 회피하는 대표적인 알고리즘이 은행원 알고리즘이다.

profile
CS/Back-End

0개의 댓글