인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

수뼈님의 프로필 이미지

작성한 질문수

그림으로 쉽게 배우는 운영체제

프로세스 간 통신

IPC 통신 중 파일을 이용한 방법이 정확히 어떤 건가요?

해결된 질문

작성

·

69

0

https://dar0m.tistory.com/233

IPC에 대해 가장 잘 정리된 것처럼 보이는 걸 가져왔습니다. 질문 전에 이거 말고 몇 개 더 읽긴 했습니다.

 

강사님께서 "파일과 파이프를 이용하는 방법"이라 하셨으니, '파일을 이용하는 방법'이라 함은 파이프를 이용하는 방법과 네트워크 통신을 빼면 메시지 큐를 이용한 방법이랑 공유 메모리를 활용하는 방식 둘 중 하나 혹은 둘 다를 말하는 걸로 이해했습니다.

 

근데 위 링크 정리 부분을 읽어 봐도, https://m.blog.naver.com/demonic3540/221669173818 이걸 읽어 봐도 강의에서 설명한 예시가 Pipe 방식인 것 같습니다.

 

근데 이러면 또 문제가, 이 섹션? 의 후속 강의에서 Race Condition과 Synchronization 방법론이 나오는데... 파이프 방식은 애초에 최대 쌍방향 통신이라 동기화가 필요할 일이 공유 메모리 방식보다 훨 적은 것 같아서... 사실상 공유 메모리 방식 통신을 전제로 하신 게 아닐까 생각했습니다. 암튼 좀 혼란스러워서 정리해 주시면 좋겠습니다.

답변 1

0

감자님의 프로필 이미지
감자
지식공유자

링크에서 정리된 IPC의 종류와 강의의 IPC의 종류가 조금 다릅니다.
실제로는 IPC의 종류가 여러가지입니다.(공유 메모리, 파일, 파이프, 소켓, 메시지큐, 시그널,메모리맵...)
주된 내용으로 파이프를 설명한 것이 맞습니다.
다만 파일을 이용한 IPC 메커니즘도 있지만, 다른 IPC 방식보다 단점이 많아 잘 사용하지 않는 방식이라 정리되어있지 않나 싶습니다.
공유메모리와 마찬가지로 파일로 통신을 할 때 변수와 파일이 공유자원이 됩니다.
따라서 파일을 이용한 통신을 할 때도 동기화 이슈가 발생할 수 있습니다.

파이프 메커니즘에서 사용하는 양방향 파이프는 일반적으로 단방향 파이프 두 개를 이용해 읽기/쓰기를 나눠져 동시에 접근하는 공유자원이 없기 때문에 동기화 이슈가 발생하지 않습니다.

이후 나오는 동기화 이슈는 공유자원에 접근해 발생하는 상황을 다루고 있습니다.
애초에 동기화 이슈가 공유자원에 동시에 접근해 발생하는 문제이기 때문이죠.
동기화 이슈는 공유메모리, 파일, 소켓, RPC 모두 동기화 이슈가 발생할 수 있습니다.

특정 IPC라기 보다는 공유자원의 존재 유무로 동기화 이슈가 발생할 수 있는지 생각하시면 혼란이 적으실 것 같습니다.

수뼈님의 프로필 이미지

작성한 질문수

질문하기