728x90
1. IPC
1) IPC ⭐️
- Inter Process Communication
- 프로세스는 독립적인 주소 공간을 가지고 있어서 다른 프로세스와 데이터를 주고 받을 수 없는데 이런 문제를 해결하기 위한 기법
- IPC를 통해 프로세스간 통신이 가능하게 만들어줌
- IPC는 크게 공유 메모리 방식과 메시지 전달 방식으로 나눠짐
2. 공유 메모리
1) 공유 메모리
- 프로세스들이 주소 공간의 일부를 공유하고 공유된 메모리 영역에 읽기와 쓰기를 하면서 통신하는 방식
- 프로세스가 공유 메모리 할당을 커널에 요청하면 커널은 해당 프로세스에 메모리 공간을 할당해줌
- 메모리는 스택-힙-데이터-코드영역으로 이루어져있지만 공유 메모리를 할당 받으면 스택-힙-데이터-공유메모리-코드 이렇게 메모리 공간에 공유 메모리 공간이 추가가 됨
2) 공유 메모리 형성 과정
- 프로세스가 공유 메모리 할당을 커널에 요청
- 커널이 해당 프로세스에 메모리 공간을 할당
3) 공유 메모리 특징
- 공유 메모리 영역이 구축된 이후에는 모든 접근이 일반적인 메모리 접근으로 취급되기 때문에 더 이상 커널의 도움없이도 각 프로세스들이 해당 메모리 영역에 접근할 수 있음
- 한 번 공유 메모리가 형성되면 다음엔 커널의 도움이 없어도 각 프로세스들이 메모리 영역에 접근할 수 있기 때문에 IPC 속도가 빠름
- 공유 메모리 방식은 프로세스간의 통신을 수월하게 만들지만, 동시에 같은 메모리 위치에 접근하게 되면 일관성 문제가 발생할 수 있고, 커널은 이 부분에 대허 관여하지 않기 때문에 프로세스끼리 직접 공유 메모리 접근에 대한 동기화 문제를 책임져야함
3. 메시지 전달
1) 메시지 전달
- 시스템 콜을 이용하여 구현
- 커널을 통해 데이터를 전달(데이터를 전달함에 있어 중간에 커널이 중개 역할)
- 커널을 통해 send(message)와 receive(message)라는 두 가지 연산을 제공받음
- 예를 들어 프로세스1이 커널로 메시지를 보내면, 커널이 프로세스2에게 메시지를 보내주는 방식으로 동작
2) 메시지 전달 과정
- 프로세스 A가 프로세스 B에게 보낼 데이터를 커널에 보낸다.
- 커널은 프로세스 A한테 온 메시지를 받고 프로세스 B한테 보내준다.
3) 메시지 전달 특징
- 메시지 전달은 커널을 무조건 거쳐야 한다는 점 때문에 첫 과정을 제외한 나머지는 직접 메모리에 접근이 가능한 공유 메모리와는 달리 속도가 느림
- 충돌을 회피할 필요가 없기 때문에 적은양의 데이터를 교환하는 데 유용하며, 구현(pipe, socket, message queue 등)하기가 쉬움
4. IPC 방식 비교 ⭐️
공유메모리 | 메시지전달 | |
장점 | 속도빠름 | 안전, 동기화 제공 |
단점 | 동기화 문제 (여러 프로세스가 동시에 메모리 접근) |
속도 느림 (터널을 통해 제어) |
더보기
참고
728x90