1. Inter-process Communication (IPC)
IPC의 목표: 협력
- 정보 공유 : 공유 파일, …
- 계산 속도 향상 : 다중 CPU 또는 I/O
- 모듈화 : 시스템 기능 분할
- 편의성 : 병렬로 편집, 인쇄, 컴파일
IPC models
- Message passing model : 프로세스 간 통신을 위해 메시지를 보내고 받는 모델
- 메시지 큐를 사용하여 메시지를 저장하고 전송
- 메시지 큐는 커널 내부에 존재 (커널은 우체국 같은 역할을 한다.)
- 프로세스는 시스템 콜을 사용하여 메시지 큐에 메시지를 보내고, 받는다.
- 장점 : 프로세스 간의 독립성과 안전성을 보장
- Shared-memory model : 프로세스 간 통신을 위해 동일한 메모리 영역을 공유하는 모델
- 공유 메모리 영역을 생성하고, 해당 영역을 사용하여 데이터를 읽고 쓰는 작업을 직접 수행
- 장점 : Message passing model에 비해 더 높은 성능을 가짐
2. Shared-Memory Systems
- 두 개 이상의 프로세스가 공유할 수 있는 특수 메모리 공간
- 데이터의 형태와 위치는 OS에 의해 결정되는 것이 아니라, 이러한 프로세스에 의해 결정
- 프로세스는 스스로 동시에 쓰는 것을 피해야 한다.
- 장점 : 빠르다 -> 대용량 데이터에 적합
*problem : producer-consumer problem
3. Producer-Consumer Problem
Producer와 consumer가 공유 메모리를 통해 정보(항목)를 전달
- Producer: 소비자를 위한 정보를 생산
- Consumer: 생산자가 작성한 정보를 소비
Two types of buffer
- Unbounded buffer
- 버퍼 크기에 대한 실질적인 제한 없음
- 생산자는 항상 생산할 수 있다.
- Bounded buffer
- 버퍼가 가득 찬 경우 생산자는 기다려야 합니다
4. Producer-Consumer Problem using Bounded Buffer
Representation of buffer
버퍼는 circular queue로 표현될수 있다.
#define BUFFER_SIZE 6
typedef struct {
. . .
} item;
item buffer[BUFFER_SIZE];
int in = 0; // tail or rear
int out = 0; // head or front
마지막 한칸을 비워둬야 한다 -> full / empty 구별하기 위해서
Empty/full condition
- in == out: // 버퍼가 비어있다. 둘이 같으면 아무것도 안들어갔다.
- (in+1)%BUFFER_SIZE == out: // 버퍼가 가득찼다. 한칸앞에 있는 이유는 full / empty 구별 위해
- Cf. 버퍼는 최대 BUFFER_SIZE – 1개 항목까지 저장 가능
Circular Queue
Circular queue: 논리 구조가 원형인 고정 크기 버퍼
마지막 요소 다음에 첫 번째 요소가 나온다.
Inserting an item
buffer[in] = newItem;
in = (in + 1) % n;

Extracting an item
item = buffer[out];
out = (out + 1) % n;

[ Producer ]
item nextProduced;
while (1) {
// produce an item in nextProduced
while (((in + 1) % BUFFER_SIZE) == out); // waiting
buffer[in] = nextProduced; // 현재 위치에 넣고
in = (in + 1) % BUFFER_SIZE; // 한칸 앞으로 보내쟝
}
[ Consumer ]
item nextConsumed;
while (1) {
while (in == out); // waiting (비어있으면 기다려라)
nextConsumed = buffer[out];
out = (out + 1) % BUFFER_SIZE;
// consume the item in nextConsumed
}
5. Message-Passing Systems
OS에서 제공하는 Message-passing 시설을 통한 프로세스 통신
장점 : 충돌이 없다 -> 적은 양의 데이터에 적합, 서로 다른 컴퓨터의 프로세스 간 통신
message passing의 경우 프로세스 간에 통신 링크가 존재해야 합니다
Essential operations
- send(message)
- receive(message)
(Logical) Implementation methods (구현방법)
- Direct/indirect
- Synchronous/asynchronous
- Buffering
6. Direct/Indirect Communication
Direct communication : 데이터를 직접 주고 받는 방법
Indirect communication : 데이터 교환에 사용되는 버퍼 영역을 거쳐서 주고 받는 방법
7. Buffering
데이터를 주고 받을 때 버퍼링 처리 방식
통신 중 메시지는 temporary queue (buffer)에 저장됩니다
Three kinds of buffer capacity (3가지 버퍼 용량)
- Zero capacity : 전송 차단만 가능
- Bounded capacity : 버퍼의 길이가 n개로 제한됨
- 버퍼가 가득 찬 경우 보낸 사람을 차단해야 한다.
그렇지 않으면 보낸 사람이 다시 시작할 수 있다.
- 버퍼가 가득 찬 경우 보낸 사람을 차단해야 한다.
- Unbounded capacity : 버퍼의 용량 무한
- 보낸 사람 차단하지않음
'Study > 운영체제' 카테고리의 다른 글
4. Threads - Overview (0) | 2023.04.12 |
---|---|
3. Processes - Example of IPC system (0) | 2023.04.11 |
3. Processes - Operations on processes (0) | 2023.04.11 |
3. Processes - Process scheduling (0) | 2023.04.11 |
3. Processes - Overview (0) | 2023.04.11 |