학사 나부랭이
IPC(Inter-Process Communication) 본문
IPC란 무엇일까요?
서로 다른 프로세스 p1, p2가 있는데 p1이 작업 중에 문제가 생겨 p2의 메모리 공간을 침범(write)해버리면 프로세스가 개발자나 사용자의 의도대로 돌아가지 않겠죠? 이것을 비정상 공유가 이뤄졌다고 하는데 커널은 비정상 공유를 막기 위해 프로세스가 다른 프로세스의 주소공간에 접근하는 것을 금지하는 Protection을 해요. 그러고 커널만이 모든 프로세스의 메모리에 접근할 수 있도록 해요. 그래서 커널을 잘못 건드리면 전체 시스템이 오염될 수 있어요. 그럼 여기서 프로세스 사이에 통신을 하고 싶은데 어떻게 하면 될까요?
아 그래서 IPC는 언제 설명해줄거예요?
프로세스 사이의 통신은 IPC(Inter-Process Communication)를 통해서 해요. 커널은 프로세스 통신을 위해 다양한 IPC 메커니즘을 제공해요.
자, 그럼 어떨 때 IPC가 필요할까요?
카톡 메시지를 디스플레이에 출력할 때
클립보드에 복사한 텍스트를 메모장에 붙여 넣을 때
등등 조금 어렵게 설명하자면 다른 프로세스에게 영향을 주고받는 프로세스를 구현하기 위해서는 반드시 필요해요.
이런 IPC에는 두 가지 모델이 있어요.
공유 메모리(Shared memory)
서로 다른 프로세스가 주소 공간의 일부 공유하여 커널의 관여 없이 거기에 읽기/쓰기를 통해 통신을 수행해요.
커널이 직접 통신시키는 것보다 더 빠르게 처리할 수 있고 프로세스 레벨에서 통신 기능을 제공해서 자유로운 통신이 가능해요.
그리고 여기서 IPC는 프로세스가 CPU를 사용하는 행위이므로 한다고 해서 컨텍스트 스위칭이 많이 일어나지는 않아요.
그러나 구현하기 어렵고 메모리 영역에 동시 접근이 일어나 교착 상태에 빠지는 것을 예방하기 위한, locking이나 세마포어 같은 접근 제어 방법이 필요해요. 또 커널이 동기화를 제공하지 않아 부가적인 방법이 필요해요.
@@@@@@@@@@@@@@@@@@@@@@@@@@@참고 자료@@@@@@@@@@@추가하기추가추가추가@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
blog.naver.com/PostView.nhn?blogId=bycho211&logNo=220985701140
blog.naver.com/PostView.nhn?blogId=green187&logNo=110130416319
gist.github.com/MinJunKweon/84ce1a0dfce7c2571486995485ab9a7c
'自習' 카테고리의 다른 글
SQL - Opening (0) | 2021.05.14 |
---|---|
How to Crack - Hash (0) | 2021.03.27 |