ㅍㅍㅋㄷ

Linux namespace - IPC 본문

IT/Linux

Linux namespace - IPC

클쏭 2015. 7. 13. 17:56

IPC namespace






 최근 lightweight 한 가상화 플랫폼인 Docker나 Linux container LXC 가 주목을 받고 있는데, 여기에 사용된 기반 기술 중 하나로 namespace라는 것이 있다. namespace 에 대한 설명은 이전 포스팅 참고 ( Linux namespace ) 


 namespace 는 크게 6가지로 분류되는데, 이번 포스팅에는 IPC namespace에 대해 알아볼 예정이다. 


1. UTS namespace : hostname 을 변경하고 분할

2. IPC namespace : Inter-process communication. 프로세스간 통신 격리

3. PID namespace : PID (Process ID)를 분할 관리

4. NS namepsace : file system 의 mount 지점을 분할하여 격리

5. NET namespace : Network interface, iptables 등 network 리소스와 관련된 정보를 분할

6. USER namespace : user와 group ID를 분할 격리


 IPC 는 프로세스간 서로 데이터를 주고 받는 경로를 뜻한다. Linux 에서 사용되는 대표적인 IPC 방식은 Signal, Socket, pipe 등이 있다.

 IPC namespace는 이러한 IPC resource 를 격리 시켜 제공한다. 




Clone을 이용한 IPC namespace 구성 방법


IPC namespace 를 구성하는 방법은 매우 간단하다.


clone() 을 호출할때, flag로 CLONE_NEWIPC 만 추가 하면 끝이다. 


int child_pid = clone(child_main, child_stack+STACK_SIZE, CLONE_NEWIPC | SIGCHLDNULL);


다른 flag 와 함께 호출하는 것도 아래와 같이 | 를 이용하여 손쉽게 가능하다. 


int child_pid = clone(child_main, child_stack+STACK_SIZE, CLONE_NEWUTS | CLONE_NEWIPC | SIGCHLDNULL);





참고

  • https://blog.jtlebi.fr/2013/12/28/introduction-to-linux-namespaces-part-2-ipc/


'IT > Linux' 카테고리의 다른 글

Linux namespace - NET  (4) 2016.05.10
Linux namespace - NS (File System)  (0) 2016.05.04
Linux namespace - PID  (1) 2015.07.14
Linux namespace - UTS  (2) 2015.07.03
Linux namespace  (0) 2015.07.02
Comments