본문으로 바로가기

[리눅스] IPC란

category 운영체제/리눅스 2019. 12. 10. 21:53
728x90
반응형

A라는 프로세스와 B라는 프로세스가 있습니다.

두 프로세스들끼리 데이터를 주고 받으려고 합니다. 전역변수를 사용하여 두 프로세스가 같이 접근하고 싶으나, 안됩니다.

이 때 사용하는 기술이 바로 IPC입니다.

IPC ( Inter Process Communication )는 프로세스 사이에서 통신을 가능하게 하는 기술들입니다.

IPC 종류 많이들 들어보고 사용하셨을겁니다.

공유메모리, 세마포어, 메시지큐, 소켓, 파일 등이 있습니다.

 

 

 

1. 공유메모리

프로세스들이 접근할 수 있는 주소를 만들어, 직접 접근하여 변수처럼쉽게 사용합니다.

초기에 한번만 함수를 호출하고, 그 이외에는 함수를 콜할 필요없이 변수에 접근하면 됩니다.

이러한 장점이 있지만, 공유메모리에 접근할 프로세스들 간의 락 메커니즘이 필요합니다.

또한, 공유메모리 생성, 삭제 등에 대한 것들은 제대로된 설계가 필요합니다.

동시에 접근하면 문제가 있기 때문입니다.

락 메커니즘으로는 세마포어, 뮤텍스 등이 있습니다.

2. 세마포어

상호 배제의 개념에서 출발 했으며, 지금도 널리사용합니다.

보통은 락 메커니즘에서 사용하지만, IPC로도 사용됩니다.

세마포어는 값에 따라서 동작이 달라집니다.

세마포어의 값이 0이라면 더 이상 사용할 자원이 없으므로, 프로세스는 대기 큐에 들어갑니다.

세마포어의 값이 1이라면, 사용할 자원이 1개 있으므로, 먼저 접근한 프로세스가 사용하거나, 대기 큐에 제일 먼저 들어온 프로세스가 자원을 사용합니다.

쉽게말하면, 은행 창구와 비슷한 역할을 합니다.

 

 

 


3. 메시지큐

메시지 큐는 짧은 메시지(1~2kb)를 주고 받는데 특화되어 있습니다.

즉, 짧은 메시지에 대해서는 속도가 가장 빠릅니다.

소켓과 비교해 봤을 때, 큰 메시지는 소켓, 작은 메시지는 메시지큐가 효율적입니다.

자료구조에서 익히 들었던 그 큐를 사용하여 프로세스 간의 메시지를 전달합니다.

A프로세스가 메시지큐에 메시지를 전달하면, B프로세스는 메시지큐에 들어온 데이터를 읽어 처리합니다.

오늘 포스팅은 여기까지입니다.

728x90
반응형

'운영체제 > 리눅스' 카테고리의 다른 글

[리눅스] systemd? systemctl?  (0) 2020.01.16
[리눅스] I/O 인터페이스  (0) 2019.12.16
[리눅스] ulimit 명령어  (0) 2019.12.06
[리눅스] yum local repository 설정  (3) 2019.11.04
[리눅스] fork 란  (0) 2019.10.22