Interprocess communication (Inter-Process-Communication)
→ 프로세스 간의 커뮤니케이션 방식
→ Message Passing & Shared Memory
0. IPC = 프로세스 간 통신
프로세스들끼리 서로 데이터를 주고받는 행위 또는 그에 대한 방법을 뜻한다.
Message Passing
커널을 통해 메세지를 주고받는 방법
Shared Memory
프로세스 간에 일부 주소를 공강을 공유, ipc 방법 중 가장 빠른 방법
공유 메모리 공간을 만들기 위해서는, system call을 통해서, 커널의 도움을 받아야 한다
1. iOS에서의 IPC (iOS에서 프로세스 간 통신하는 방법)
- 위 사진처럼 프로세스는 각자 독립된 메모리 공간을 가지고 있어서 서로간의 데이터를 공유할 방법이 없다. → 여기서 프로세스는 iOS에서 하나의 앱이라고 생각하면 편하다.
- 그렇기 때문에 나온 방식이 IPC로 프로세스 간 통신을 하는 방법이다.
- 프로세스간 통신이란, 프로세스 간의 데이터 송수신이 있다는 뜻이고, 메모리를 공유해야 한다는 뜻이다. 이러기 위해서는 '통신을 위한 도구'가 필요하다. → 여기서 ‘통신을 위한 도구’가 IPC
- iOS에서는 프로세스간 통신을 엄격하게 block하고 있다고 한다.
→ 참고로, iOS에서 프로세스는 실행되고 있는 앱이라고 생각하면 된다.
- "Interprocess communication (IPC) on iOS is, depending on your perspective, refreshingly simple or horribly limiting"이라고 하는 걸 봐서애플에서 어떠한 명시된 IPC 기법을 제공하고 있는 것 같진 않다. ****
- 다만, UIApplication 클래스의 open(_:options:completionHandler:) 메소드를 통해 하나의 앱에서 다른 앱(프로세스)을 실행함으로써 프로세스간 통신이 가능하다
- open(_:options:completionHandler:)
→ 지정된 URL에서 리소스를 비동기식으로 열 수 있다,
2.소켓을 사용하는 iOS 애플리케이션 간에 프로세스 간 통신이 가능한가?
Is Inter Process Communication possible between iOS applications using Sockets?
1) Apple은 내부적으로 이를 허용하지 않으며 이를 방지하기 위한 보안 계층이 있습니다.
2) 응용 프로그램은 짧은 지연 후에 applicationDiD/WillEnterBackground를 실행합니다.