1. 프로세스 통신
프로세스들 사이에 서로 데이터를 주고받는 기법
(1) 프로세스 통신의 필요성
- 프로세스들은 각각은 독립적인 메모리 공간을 가지고 있다.
- 프로세스가 다른 프로세스의 메모리에 직접 접근한다면 문제가 발생한다.
- 하지만 프로세스들 간에 병렬적으로 처리할 때 프로세스들 간에 통신이 필요한다.
- 여러 가지 IPC를 이용해서 프로세스들 간에 통신이 이루어진다.
(2) IPC의 종류
- 파이프 방식
- 세마포어
- 공유 메모리
- 메시지 패싱
- 소켓
2. 공유메모리 (Shared-Memory)
메모리의 일정 부분을 공유해서 여러 프로세스들이 접근할 수 있게 하는 방법
- process A, process B는 각자 고유한 메모리 공간을 가진다.
- 특정 메모리 공간에 OS가 공유 메모리 공간으로 할당한다.
- 처음 생성할 때만 시스템 호출을 사용하기 때문에 속도가 빠르다.
- 공유메모리의 접근은 커널이 필요 없다.
- 속도가 빠르기 때문에 많은 양의 데이터를 전달하는 경우에 많이 사용된다.
- 공유 메모리 공간에 대한 접근 제어가 필요한다.
- 동기화(synchronize)를 관리해야 하다.
3. 메시지 전달 (message passing)
프로세스가 메시지를 커널을 통해서 다른 프로세스에게 전달한다.
- 동기화(synchronize)를 신경 쓸 필요 없다.
- 그러나 성능이 shared memory보다 떨어진다.
4. 파이프 (PIPE)
통신을 위한 메모리 공간(버퍼)을 생성하여 프로세스 간 데이터의 통신을 하게 한다.
- PIPE는 읽기/쓰기가 동시에 가능하지 않다. (단방향 통신)
- 통신선로가 파일로 존재하므로 하나를 읽기 전용을 열고 다른 하나를 쓰기 전용으로 열어주어야 한다.
- 통신을 위해서는 두 개의 FIFO 파일이 필요하다.
(1) 익명 파이프(Anonymous Pipe)
- 부모 프로세스와 자식 프로세스 사이에서만 통신이 가능하다.
(2) 지명 파이프(Named Pipe)
- 부모 프로세스와 무관하게 전혀 다른 모든 프로세스들 사이에서 통신이 가능하다.
반응형
'OS(운영체제)' 카테고리의 다른 글
CPU Scheduling Criteria(스케줄링 기준) (0) | 2021.12.09 |
---|---|
CPU 스케줄링(CPU Scheduling) (0) | 2021.12.09 |
프로세스 스케줄링 (Process Scheduling) (0) | 2021.12.09 |
프로세스(Process) (메모리, PCB, 상태) (0) | 2021.12.09 |
운영체제 서비스 (Operating System Service) (0) | 2021.10.21 |
댓글