운영체제/LINUX

[Linux] IPC 네임스페이스

benjykim 2019. 12. 13. 12:44
반응형

IPC 네임스페이스


  • IPC 네임스페이스는 프로세스가 자신의 System V IPC 객체와 POSIX 메시지 큐 자원을 가질 수 있게 한다. 그리고 `clone()` 또는 `unshare()` 시스템 호출을 사용할 때 `CLONE_NEWIPC`플래그를 설정하여 생성한다.
    • System V IPC 객체: 공유 메모리(shared memory), 세마포어(semaphore)
      • 공유 메모리: 여러 프로세스가 동일한 메모리 영역에 연결하여 메모리 변경 사항에 액세스할 수 있다.
      • 세마포어: 프로세스를 동기화하며 공유 메모리 영역에 대한 동시 액세스를 제어하는데 사용된다.
    • POSIX 메시지 큐: System V 메시지 큐의 새로운 버전. 함수의 이름과 종류는 다르지만 하는 일은 비슷하고 비교적 최근의 표준인 만큼 System V 기반의 메시지 큐 함수보다, 더 직관적이고 쓰기 편함.
      • 메시지 큐: 프로세스로 하여금 모든 프로세스가 메시지를 받을? 검색할(retrieve) 수 있는 큐에 메시지를 넣는데 사용된다.
  • A라는 IPC 네임스페이스에서 생성된 System V IPC 객체(공유 메모리, 세마포어, 메시지 큐)는 A 네임스페이스에 속한 프로세스들에게만 보인다. 다른 IPC 네임스페이스의 프로세스들은 A 네임스페이스 안에 있는 객체들을 볼 수 없다.
  • 프로세스 간 데이터 교환을 격리하고 프로세스와 쓰레드 간에 작업을 동기화하는 기능을 제공
    • IPC(Interprocess Communication): 프로세스간 서로 데이터를 주고받는 행위 또는 그에 대한 방법이나 경로
  • IPC에는 두 가지 표준이 있는데, System V IPC는 오래된 버전이고 POSIX IPC는 최근에 개발됐다.

System V IPC vs POSIX IPC

Question

  1. System V IPC와 POSIX IPC의 차이점은 무엇인가?
  2. 왜 2개의 표준이 있나?

Answer

  1. 우선 모두 세마포어, 공유 메모리, 메시지 큐를 동일하게 가지고 있다. 한가지 주목할만한 차이점은 POSIX가 메시지 큐에 대해 일부 알림(notification) 기능을 제공한다는 것이다(System V는 알림 기능을 제공하지 않는다). 또 한가지, System V IPC는 완전히 구현되었지만 POSIX IPC는 완전하게 구현되지는 않았다.
  2. POSIX IPC는 System V IPC를 한동안 사용한 뒤 설계되었다. 간단히 말하자면, System V IPC를 개선하여 POSIX IPC를 만든 것이다. 그러나 주의해야 할 것은 무조건 POSIX IPC의 성능이 System V IPC의 성능보다 무조건 좋은 것은 아니다.

IPC

IPC의 기초 모델 2가지

  1. Shared memory
    • 협력 프로세스(쓰레드)들에 의해 공유되는 메모리 영역이 구축된다(establish).
    • 프로세스들은 공유 영역을 읽거나 씀으로써 정보들을 교환한다.
    • `shared memory``message passing`보다 빠를 수 있다. 왜냐하면 `message-passing`시스템은 전형적으로 시스템 콜을 사용하여 구현하고, 따라서 커널 개입이라는 더 많은 시간이 소요되는 작업이 필요하다.
    • `shared memory`시스템에서, 시스템 콜은 단지 `shared memory`영역을 구축하는데만 필요하다. 일단 영역이 구축되면, 모든 접근은 일상적인 메모리 접근으로 취급되며, 커널의 도움은 필요하지 않다.
  2. Message passing
    • 통신은 협력 프로세스들 사이에서 교환되는 메시지에 의해 이루어진다.
    • 작은 양의 데이터를 교환할 때 유용하다. 왜냐하면 어떤 충돌도 피할 필요가 없기 때문이다.
    • `message passing``shared memory`보다 구현하기 쉽다.

 

반응형