5. 프로세스 동기화

2023. 4. 14. 21:45운영체제

728x90

1.  프로세스 간 통신

 

1-1. 통신의 종류

프로세스 내부 통신

  • 하나의 프로세스 내에서 스레드 사이 통신
  • 전역 변수나 파일을 이용

프로세스 간 통신

  • 같은 컴퓨터 내 여러 프로세스 사이 통신
  • 공용 파일 또는 운영체제가 제공하는 파이프를 사용

네트워크 이용한 통신

  • 여러 컴퓨터가 네트워크로 연결되어 있을 때 통신
  • 소켓을 이용

1-2  통신 방향에 따른 분류

양방향 통신

  • 데이터를 동시에 양쪽 방향으로 전송할 수 있는 구조
  • 예) 소켓 통신

반양방향 통신

  • 양쪽 방향으로 전송할 수 있지만 동시 전송은 불가능하고 특정 시점에 한쪽 방향으로만 전송
  • 예) 무전기

단방향 통신

  • 한쪽 방향으로만 데이터를 전송할 수 있는 구조
  • 예) 파이프, 전역 변수

1-3  통신 구현 방식에 따른 분류

 

동기화를 지원하는 통신 방식

  • 데이터를 받는 쪽은 데이터가 도착할 때까지 자동으로 대기 상태에 머물러 있음
  • 예) 파이프, 소켓

동기화를 지원하지 않는 통신 방식

  • 데이터를 받는 쪽은  데이터가 도착했는지 여부를 직접확인
  • 예) 전역 변수, 파일

 

전역 변수를 이용한 통신

  • 보내는 쪽에서는 전역 변수에 값을 쓰고, 받는 쪽에서는 읽음

파일을 이용

  • 보내는 쪽에서는 파일에 값을 쓰고, 받는 쪽에서는 읽음

파이프 이용

  • 양방향 통신을 하려면 파이프 2개 사용
    -> 하나는 읽기용, 하나는 쓰기용
  • 일반 파이프는 부모와 자식 프로세스 사이에서만 통신가능
    -> 익명 파이프라고도 함
  • FIFO는 서로 관련 없는 프로세스 간 통신에 사용
    -> 지명 파이프라고도 함

소켓 이용

  • 통신하고자 하는 프로세스는 자신의 소켓과 상대의 소켓을 연결


 

2. 공유 자원과 임계영역

2-1 공유 자원의 접근

경쟁 조건 (Race Condition)

  • 2 개 이상의 프로세스가 공유 자원을 동시에 읽거나 쓰는 상황
  • 공유 자원 접근 순서에 따라 실행 결과가 달라질 수 있음

 


2-2  임계 구역

  • 공유 자원 접근 순서에 따라 실행 결과가 달라지는 프로그램의 영역
  • 임계구역에서는 프로세스들이 동시에 작업하면 안 됨

 

2-3 임계 구역 해결 조건

상호 배제(Mutual Exclusion)

  • 한 프로세스가 임계구역에 들어가면 다른 프로세스는 임계구역에 들어갈 수 없는 것

한정 대기 

  • 어떤 프로세스도 무한 대기하지 않아야 함

 

3. 임계구역 해결 방법

피터슨 알고리즘

  • 2 개의 프로세스만 사용 가능하다는 한계가 있음

 

데커 알고리즘

  • 1. 프로세스 P1은 잠금을 검
  • 2. 프로세스 p2의 잠금이 걸렸는지 확인
  • 3. 만약 프로세스 p2도 잠금을 걸었다면 누가 먼저인지 확인
    p1의 차례라면 임계구역으로 진입, p2의 차례라면 4번으로 이동
  • 4. 프로세스 p1은 잠금을 풀고 프로세스 p2가 작업을 마칠 때까지 기다림
    p2가 작업을 마치면 잠금을 걸고 임계구역으로 진입

 

세마포어

  • 임계구역에 진입하기 전에 스위치를 사용 중으로 놓고 임계구역으로 들어감
  • 이후에 도착하는 프로세스는 앞의 프로세스가 작업을 마칠 때까지 기다림
  • 프로세스가 작업을 마치면 다음 프로세스에 임계구역을 사용하라는 동기화 신호를 보냄

 

모니터

  • 공유 자원을 내부적으로 숨기고 공유 자원에 접근하기 위한 인터페이스만 제공함으로써 
    자원을 보호하고 프로세스 간에 동기화를 시킴
  • 임계구역으로 지정된 변수나 자원에 접근하고자 하는 프로세스는 직접 wait(), wake_up()
    를 사용하지 않고 모니터에게 작업 요청
  • 모니터는 요청받은 작업을 모니터 큐에 저장한 후 순서대로 처리하고 그 결과만 해당 프로세스에게 알려줌

 

728x90

'운영체제' 카테고리의 다른 글

물리 메모리 관리  (0) 2023.06.01
교착상태 (deadlock)  (1) 2023.05.29
4. CPU 스케줄링  (0) 2023.04.14
3. 프로세스와 스레드  (2) 2023.04.13
2. 컴퓨터 구조와 성능 향상  (2) 2023.04.13