IPC(Inter Process Communication) + ios

soooooyeon·2021년 4월 28일

IPC(Inter-Process-Communication)

  • 프로세스 간의 커뮤니케이션을 지원하기 위한 기법, 크게 두가지가 있음

  • 굳이 IPC가 필요한 이유? 도입된 이유? 그냥 다른 process의 주소 공간에 접근하면 되잖아?

    • 예를 들어, 프로세스 A가 프로세스 B의 스택 공간에 접근해 임의로 값을 바꾸는 경우가 생길 수 있음

    • 따라서, OS에서는 다른 프로세스로의 접근을 막아두고 있음

    • 결과적으로, 프로세스간 통신을 위해서는 직접 접근하는 것 외의 다른 방법이 필요함

Message Passing

커널을 통해 메세지를 주고받는 방법

Shared Memory

  • 프로세스 간에 일부 주소 공간을 공유

  • ipc 기법중 가장 속도가 빠르다

  • 공유 메모리 공간을 만들기 위해서는, system call을 통해서, 커널의 도움을 받아야 한다

https://mblogthumb-phinf.pstatic.net/MjAxOTEwMDhfMjg1/MDAxNTcwNDg1MDQ3ODU3.e1IfDq0VdnXD_SGZnpcHzF7EQBnTaIml5V_fp1XrH7Ag.mwTfBhrpBFeLFf387IkobsZH6zGJ1ogZqGB6y8ZBaNgg.PNG.demonic3540/image.png?type=w800
사진 출처: https://m.blog.naver.com/demonic3540/221671407431


iOS에서의 IPC (ios에서 프로세스 간 통신하는 방법)

  • ios에서는 프로세스간 통신을 엄격하게 block하고 있다고 함 ..
    (참고로, ios에서 프로세스는 실행되고 있는 앱이라고 생각하면 된다)
  • "Interprocess communication (IPC) on iOS is, depending on your perspective, refreshingly simple or horribly limiting"이라고 하는 걸 봐서
    애플에서 어떠한 명시된 IPC 기법을 제공하고 있는 것 같진 않다.
    - 다만, UIApplication 클래스의 open(_:options:completionHandler:) 메소드를 통해 하나의 앱에서 다른 앱(프로세스)을 실행함으로써 프로세스간 통신이 가능하다
profile
Junior iOS developer

0개의 댓글