IPC : 서로 다른 프로세스 간의 통신
시험 : 모두 주관식
1. 프로세스 간 통신(IPC)의 종류
IPC : Inter Process Communication

프로세스 내부 데이터 통신
- 하나의 프로세스 내에 2개 이상의 스레드가 존재하는 경우, 스레드가 전역변수나 파일을 이용하여 데이터를 주고받는 통신
- 공유메모리 or 공유파일을 이용한 통신
- 일정 메모리 영역이나 파일을 공유하고 이를 통해 데이터를 주고받음
프로세스 간 데이터 통신
- 같은 컴퓨터에 있는 여러 프로세스끼리 통신하는 경우로, 공용 파일이나 파이프를 사용하여 통신한다.
- 파이프 통신
- 프로세스 간 통신을 위해 운영체제가 제공하는 통신기법
네트워크를 이용한 데이터 통신
- 여러 컴퓨터가 네트워크로 연결되어 있을 때 소켓을 이용하여 데이터를 주고받는다.
- 소켓통신
- 네트워크로 연결된 컴퓨터에서 데이터를 주고받기 위한 통신기법
- 초기화할 내용도 많고 시스템 자원도 많이 사용하므로 같은 컴퓨터 내에서 소켓으로 통신하는것은 비효율적
1) 통신 방향에 따른 분류
- 양방향 통신(duplex)
- 데이터를 동시에 양방향으로 전송할 수 있는 구조
- 프로세스간 통신(IPC)에서는 소켓 통신이 양방향 통신에 해당
- 반양방향 통신(halfduplex)
- 단방향 통신(simplex)
- 공유 메모리나 공유 파일 이용 통신, 파이프 이용 통신
2) 통신 구현방식에 따른 분류 → 매우 중요!!!!!
- 대기가 있는 통신(blocking communication)
- 동기화를 지원하는 통신 방식
- 데이터를 받는 쪽은 데이터가 도착할 때까지 자동으로 대기상태에 머물러 있음(ex. 파이프, 소켓)
- 대기가 없는 통신(non-blocking) → 효율적
3) 프로세스 통신의 종류
- 전역변수를 이용한 통신
- 공동으로 관리하는 메모리를 사용해 데이터를 주고받는 것
- 직접적으로 관련이 있는 프로세스 간에 사용(ex. 부모프로세스, 자식프로세스) → 부모프로세스가 전역변수를 선언한 후 자식 프로세스를 만들면 통신 가능
- 전역변수의 값이 변할 때까지 바쁜대기가 필요, 동기화 문제
- 파일을 이용한 통신 → IPC에서 이용하기 가장 쉬운 방식
- 파일 열기(open → low level, fopen → high level)
- open : com.txt 파일을 읽기와 쓰기를 할 수 있는 형태로 준비
- 파일이 열리면 open함수는 그 파일에 접근할 수 있는 권한인 파일 기술자 fd를 사용자에게 반환
- 파일 쓰기 or 읽기
- 파일 닫기
- 특징
- 부모-자식 관계 프로세스 간 통신에 많이 사용
- 동기화를 제공하지 않음
- 파이프를 이용한 통신
- 운영체제가 제공하는 동기화 통신 방식, 파일 입출력과 같이 open()함수로 기술자를 얻고 작업 후 close()로 닫음
- 단방향 통신이므로 양방향 통신을 위해선 파이프 2개를 사용해야 함
- 이름없는 파이프(부모와 자식 간의 관계면 이름이 필요 없음)
- 일반적으로 파이프라고 하면 이름 없는 파이프를 가리킴
- 이름있는 파이프
- FIFO라 불리는 특수 파일을 이용하여 서로 관련없는 프로세스 간 통신에 사용