본문 바로가기
CS/Operating System

프로세스 간 통신 & 임계 영역

by JHyun0302 2023. 8. 31.
728x90

프로세스 간 통신(inter-process communication, IPC)

1. pipe : 같은 컴퓨터 내 프로세스간 단방향 통신

 

pipe 2개 있어야 양방향 가능

 

 

2. named pipe (FIFO) : pipe와 유사

 

    ※ pipe 와 차이점    

  1. FIFO라는 파일을 거쳐야 프로세스 간 통신 가능
  2. 서로 독립된 프로세스간 통신 가능

 

 

 

3. socket : 다른 컴퓨터 내 프로세스 간 양방향 통신 (독립된 프로세스간 통신 가능)

 

 

Socket

 

 

 

 

 


임계영역 & 프로세스 동기화

 

 

경쟁 상태(race condition) : 여러 프로세스 or 스레드들이 공유자원에 동시 접근하여 읽/쓸 때 발생

 

문제 : 공유자원에 저장된 값이 달라짐

 

 

 

임계 영역 (Critical section) : 경쟁 상태가 발생하는 영역

→ 경쟁 상태를 막기 위해 한 프로세스 or 스레드가 임계영역에 접근

 

 

 

 

 

 

 

임계영역 해결 위한 조건

 

 

1. 상호 배제 (mutual exclusion, mutex)

  • 1 번에 1개 프로세스 또는 스레드가 임계영역에 접근(비선점)

 

 

2. 한정 대기(bounded waiting)

  • 임계영역에서 실행되기 위해 기다리는 시간은 정해져 있음

 

 

3. 진행의 융통성(progress flexibility)

  • 임계영역이 비었을 때 다른 프로세서는 임계영역에서 실행될 수 있음

 

 

 

 

 

 

 

임계영역 문제 해결 방법

→ 피터슨 알고리즘, 데커 알고리즘, 세마포어(semaphore)

 

 

 

 

 

 

 

 

 

프로세스 동기화 (= 스레드 동기화) : 상호 배제 가능하게 함 → 공유자원에 저장되는 값의 일관성 보장

 

 

 

 

 

 

 

 

 

 

 

 


semaphore

 

 

 

 

Semaphore(n);   //S = n;

P();            // if (S > 0 then S = S – 1;) else block(); 

// 임계영역(critical section)

V();           // S = S + 1;  wake_up();

 

 

 

1. Semaphore(n);

→ 임계영역에서 동시에 실행 가능한 프로세스 수(S)를 n으로 초기화

 

 

2. P();

→ 프로세스는 S > 0이 될 때까지 세마포어 큐에서 기다림

 

 

3. V();

→ 세마포어 큐에 있는 프로세스에게 임계영역에 진입해도 좋다는 신호를 보냄 (wake_up();)

 

 

 

 

 

 

 

 

※ Semaphore 종류

  1. Counting semaphore (S 초기값 1이상, S는 0이상)
  2. Binary semaphore (S 초기값 = 1, S = 0, 1)

 

반응형

'CS > Operating System' 카테고리의 다른 글

요구 페이징 & 페이지 교체 알고리즘  (0) 2023.08.31
메모리 주소 & 메모리 할당  (0) 2023.08.31
Process Priority  (0) 2023.08.31
Process & Thread  (0) 2023.08.30
컴퓨터의 구조  (0) 2023.08.30