HJW's IT Blog

OS:Cooperating Process 본문

OS

OS:Cooperating Process

kiki1875 2023. 4. 6. 17:32

Cooperating Process란?

Cooperating Process(협력 프로세스)란 여러개의 프로세스가 서로 상호자용하여 동시에 실행되는 경우를 말한다. 

 

협력 프로세스는 여러 자원을 서로 공유하게 되며 서로 접근하고 수정할 수 있게 된다. 

  • 파일, 데이터베이스, 공유 메모리 등등

여러 프로세스가 공유자원을 동시에 사용하게 될 때, concurrency problem(동시성 문제) 가 발생하게 된다.

 

이러한 문제를 해결하기 위해 critical section을 한 프로세스가 사용중일때, 다른 프로세스가 사용하지 못하도록 하는 SW적 알고리즘이 필요하다.

 

장점

  • Cooperating process는 여러개의 컴퓨터, 네트워크에 분산되어 실행 될 수 있다. 즉, 작업의 처리 속도를 높일 수 있다
  • Cooperating process는 각각 독립적인 모듈로 구성되어 있으므로, 시스템의 유지보수 및 업그레이드가 용이하다
  • Cooperating process는 작업을 독립적으로 수행하므로 여러개의 작업을 동시에 처리할 수 있다. 즉, 처리시간 단축 및 시스템의 사용률 증가

 

단점

  • Cooperating process는 각각의 프로세스들이 공유 자원에 동시 접근 할 경우 동기화 문제가 발생할 수 있다
  • Cooperating process는 프로세스간의 통신과 동기화 작업 등을 위한 오베헤드가 발생할 수 있다
  • Cooperating process는 여러 개의 프로세스가 협력하며 상호작용해야 하기 때문에 시스템 구조가 복잡해진다.

 

Producer-Consumer Problem

Producer-consumer problem은 데이터를 생성하는 producer 와 소비하는 consumer 간의 동시 접근 문제를 해결하기 위한 동기화 문제이다. 

 

Producer: 데이터를 생성하여 버퍼에 저장

Consumer: 데이터를 버퍼에서 접근

 

그렇기에 생산자와 소비자의 실행을 조율하여 데이터를 안전하게 교환해야 한다.

 

Blocking send & Blocking receive

  • Blocking send: 보내는 측 process가 메세지를 전송하고난 후, 메세지를 받을때 까지 대기하는것. 
  • Blocking receive: 수신측 process가 메세지를 받을때 까지 대기하는것.
  • Producer-Consumer problem의 해결책중 하나.
    • Producer는 blocking send를 사용하여 큐에 데이터를 보내고 consumer 은 blocking receive를 사용하여 큐에서 데이터를 받는다. 
    • 이때, consumer는 producer가 큐에 데이터를 보내기 전까지 큐에 접근할 수 없다.
    • Producer는 데이터를 보내고 나서 blocking send에 의해 블록된다.
    • Blocking send 상태가 풀리려면 consumer가 큐에서 데이터를 가져가 producer에게 신호를 보내야 한다.

'OS' 카테고리의 다른 글

OS: Synchronization  (0) 2023.04.11
Process & Thread  (0) 2023.04.08
CPU Scheduler  (0) 2023.04.03
Frame Pointer, Stack Pointer  (0) 2023.04.02
OS: Process  (0) 2023.04.02