728x90
개념
: 프로세스 간 통신 (IPC, Inter Process Communication)
- 종류
- 공유 메모리, 공유 파일을 이용한 통신
- 일정한 메모리 영역이나 파일을 공유하고 이를 통해 데이터를 주고받음
- 가장 원시적인 방법. 데이터를 주고받는 방법을 프로세스끼리 알아서 결정해야 함
- 파이프를 이용한 통신
- 프로세스 간 통신을 위해 운영체제가 제공하는 통신 기법
- 보통, fork()로 만들어진 부모 자식 간에 사용
- 소켓을 이용한 통신
- 컴퓨터 외부. 네트워크로 연결된 컴퓨터에서 데이터를 주고받기 위한 통신 기법
- 분류 (통신방향)
- 양방향 통신(duplex communication) : 양쪽 방향으로 동시 정송 가능 (소켓 통신, 전화)
- 반양방향 통신(halfduplex communication) : 양쪽 방향으로 전송할 수 있지만 동시전송은 불가능 (무전기)
- 단방향 통신(simplex communication) : 한쪽 방향으로만 전송 가능 (공유 메모리/ 공유파일, 파이프, 모스부호)
- 분류 (통신 구현)
- 대기가 있는 통신(blocking communication) : 동기화 지원o, 받는 쪽은 데이터가 도착할 때 까지 대기 (파이프, 소켓, 전화)
- 대기가 없는 통신(non-blocking communication) 동기화 지원x, 받는 쪽은 바쁜 대기를 사용해 도착여부를 직접 확인 (공유메모리/파일, 전보)
종류
- 파일을 이용한 통신
- 파일 열기
- open("com.txt", O_RDWR) : com.txt파일을 읽기와 쓰기를 할 수 있는 형태로 준비
- 파일이 열리면 com.txt 파일에 접근 할 수 있는 권한인 파일기술자 fd를 사용자에게 반환
- 파일 쓰기 또는 읽기
- write(fd, “Test”, 5) : fd, com.txt 파일에 Test라는 문자열을 쓰라는 뜻
- read(fd, buf, 5) : fd, 즉 com.txt 파일에서 5B를 읽어 변수 buf에 저장
- 파이프 이용한 통신
- 운영체제가 제공하는 동기화 통신 방식
- 양방향 통신 하려면 파이프 2개 사용
- 이름없는 파이프 (anonymous pipe) : 일반적으로 파이프라고할 때 이 이름없는 파이프를 가리킴
- 이름있는 파이프 (named pipe) : fifo라 불리는 특수 파일을 이용해 관련없는 프로세스간 통신에 사용
- 소켓을 이용한 통신
- 여러 컴퓨터에 있는 프로세스끼리 통신하는 방법
728x90