1. PCB(Process Control Block)
프로세스는 각각 자신의 PCB를 갖고 있으며 PCB는 프로세스에 대한 모든 정보를 포함한다.
2. IPC(Inter-Process Communication)
프로세스는 기본적으로 서로에게 간섭할 수 없고 독립적이지만 필요에 따라 협력할 수 있고, 이유는 다음과 같다.
1) 정보교환
2) 계산 가속화 : 특정 Task를 sub task들로 나누어 가속화하기 위해 병렬로 처리
3) 모듈성 : 기능에 따라 별도의 프로레스 또는 스레드로 나누어 모듈식 형태로 시스템을 구성하기를 바랄 때
4) 편의성 : 개별 사용자들이 동시에 작업할 많은 Task를 병렬로 처리하기 위해
3. IPC Model
1) Shared memory
- 프로세스가 OS에게 명확하게 공유할 메모리를 생성/참여하기를 요청
- OS가 shared memory를 만들어 준 후 통제권은 다시 프로세스에게 넘긴다.
* 즉, 프로세스들은 스스로 동일한 위치에 쓰지 않아야하며 이를 보장할 책임이 있다.
- 공유 메모리 영역은 공유 메모리 세그먼트를 생성하는 프로세스의 주소 공간에 위치한다.
따라서 이를 이용하기 위해선(Shared memory에 참여하기 위해선) 자신의 주소 공간에 이 세그먼트를 추가해야한다.
- 주요 이슈는 Sync
2) Message Passing
- OS가 통제하며 OS-provided IPC facility를 통해 이루어진다. ex) massage queue
- 기본적으로 send/receive 연산을 제공한다.
cf) Microkernel이 Message Passing 모델을 가장 고려해서 만든 시스템
4. IPC Mechanism
1) Signal
- 같은 컴퓨터 내 프로세스 간 특정 event를 notify하는 것
- Sync or Async
- 프로세스는 Signal을 SignalAction을 통해 Handling하며 Handling함수는 Overriding할 수 있다.
2) RPCs(Remote Procedure Calls)
- 원격(다른 컴퓨터)에 있는 프로세스와 통신하는 것
cf) Endianess
- 컴퓨터마다 Data representation 방식이 다르다.
- 따라서 메세지를 보내기 전 맞춰주어야 하며 이를 위해 XDR(external data representation) 프로토콜을 사용한다.
3) Pipe
Pipe | Direction 관점 | uni-direcition | - 단방향 | |
bi-direction | half-duplex | - 양방향 - 한번에 하나의 operation 가능 |
||
full-duplex | - 한번에 두개 이상의 operation 가능 | |||
Relationship 관점 | ordinary pipe | - 부모-자식 프로세스 간 자동적으로 만들어지는 pipe - uni-direction |
||
named pipe | - 임의로 만드는 pipe - bi-direciton - 프로세스가 죽어도 pipe는 alive |
'CS > OS' 카테고리의 다른 글
[OS] CPU, Processor, Core, Process, Thread 그리고 관계 정리 (0) | 2020.11.04 |
---|---|
[OS] 5. Thread (0) | 2020.11.03 |
[OS] 3. 프로세스(1) (0) | 2020.10.30 |
[OS] 2. 시스템 구조 (0) | 2020.10.28 |
[OS] 1. 개요 (0) | 2020.10.28 |