Interprocess Communication

OSXDEV

Jump to: navigation, 찾기

Mac OS X는 프로세스간 통신(Interprocess communication, IPC)을 위해 수 많은 기술을 제공한다. 다음의 각 섹션들은 그 기술들을 설명한다.


목차

[편집] Distributed Objects for Cocoa

코코아 디스트리뷰티드 오브젝트는 서로 다른 어플리케이션( 혹은 동일한 어플리케이션 내의 쓰레드들) 이 컴퓨터 내에서 혹은 네트워크를 통해 통신을 할 수 있는 투명한 메카니즘을 제공한다. 디스트리뷰티드 오브젝트를 이용하면 접속에 신경쓰지 않고 전송하는 데이터에 집중할 수 있다. 그 결과, 디스트리뷰티드 오브젝트를 사용하는 것은 대부분의 다른 IPC 메카니즘을 사용하는 것보다 시간이 적게 걸린다; 그러나, 구현이 용이한 만큼 퍼포먼스를 많이 소비한다. 디스트리뷰티드 오브젝트는 일반적으로 다른 기술을 사용하는 것보다 덜 효율적이다.

당신의 어플리케이션에서 디스트리뷰티드 오브젝트를 사용하기 위한 보다 자세한 정보는 Distributed Objects를 보라.


[편집] Apple Events

애플 이벤트는 어플리케이션이 어플리케이션 자신, 동일한 컴퓨터의 다른 어플리케이션, 혹은 원격 컴퓨터의 어플리케이션에 보낼 수 있는 상위 레벨의 시멘틱 이벤트이다. 애플 이벤트는 Mac OS X에서 어플리케이션 간 통신과 스크립팅을 위해 사용되는 주요 기술이다. 어플리케이션들은 다른 어플리케이션에 서비스나 정보를 요청하기 위해 애플 이벤트를 사용할 수 있다. 서비스를 지원하기 위해서, 당신의 어플리케이션에서 애플 이벤트를 통해 접근할 수 있는 오브젝트를 정의해야 하며, 그 오브젝트들에 대한 요청에 응답하기 위한 애플 이벤트 핸들러를 제공해야 한다.

애플 이벤트는 확장 가능하고, 수직적으로 구조화된 데이터 타입으로 정의된 정의된 좋은 데이터 구조를 가지고 있다. 스크립터나 다른 개발자가 엑세스 하기 쉽도록, 당신의 어플리케이션은 애플이 정의한 표준 이벤트 세트를 일반적으로 지원할 필요가 있다. 표준 세트에서 지원하지 않는 추가적인 기능을 지원하길 원한다면, 필요에 따라 커스텀 이벤트를 정의할 수 있다.

애플 이벤트는 Application Services umbrella 프레임워크의 일부분이다. 애플 이벤트를 사용하는 방법에 대한 보다 자세한 정보는 Apple Events Programming Guide를 보라. 애플 이벤트를 만들고, 보내고, 받기 위해 사용해야 하는 함수와 구조체에 대한 정보는 Apple Event Manager Reference를 보라.

[편집] Distributed Notifications

디스트리뷰티드 통지는 어떤 프로세스에 의해서든 컴퓨터 단위의 통지 센터로 올려질 수 있으므로, 그 메세지에 관심있는 어떤 프로세스든지 그 통지를 받을 수 있다. .보낸 쪽의 ID와 부가정보를 담고 있는 딕셔네리 옵션이 통지에 포함된다. 디스트리뷰티드 통지 메카니즘은 코어 파운데이션의 CFNotificationCenter 오브젝트와 코코아의 NSDistributedNotificationCenter 클래스에 의해 구현된다.

디스트리뷰티드 통지는 간단한 통지 타입의 이벤트에 최적화 되어 있다. 예를 들면, 통지는 네트워크 인터페이스나 typesetting machine과 같은 하드웨어 장치의 상태를 통신할 수 있다.그러나 특정 프로세스에 치명적인 정보를 통신하는 데에는 사용하면 안된다. Mac OS X가 가능한 모든 노력을 다 하겠지만, 등록한 모든 수신자들에게 통지가 제대로 전달된다고 보장할 수 없다.

[편집] BSD Notifications

[편집] Sockets, Ports, and Streams

[편집] BSD Pipes

[편집] Shared Memory

[편집] Mach Messaging