Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Tags
- 일급 객체
- factory
- builder
- Google OAuth
- java
- OAuth 2.0
- spring security
- Spring
- 일급 컬렉션
- synchronized
- Volatile
- lombok
- Dependency Injection
Archives
- Today
- Total
HJW's IT Blog
OS:Cooperating Process 본문
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 |