Windows에서 RPC(Remote Procedure Call)는 원격 프로시저 호출을 가능하게 해주는 기술로, 프로세스 간에 데이터 및 함수 호출을 공유할 수 있게 해줍니다. 일반적으로 RPC는 네트워크 상에서 두 개 이상의 컴퓨터 간에 프로시저 호출을 수행합니다.
그러나 동일한 시스템의 프로세스에서 호출될 때에는, Windows는 ALPC(Advanced Local Procedure Call)를 사용하여 간접적으로 처리하게 됩니다. ALPC는 높은 성능의 로컬 프로시저 호출을 위한 Windows 커널 모드 메커니즘이며, 다음과 같은 이유로 RPC에 의해 사용됩니다.
성능 향상: ALPC는 로컬 시스템에서 통신하는 프로세스 간에 매우 효율적인 방법입니다. 동일한 시스템에서의 프로세스 간 통신에는 별도의 네트워크 스택이 필요하지 않으므로, ALPC를 사용하면 오버헤드가 줄어들고 성능이 향상됩니다.
보안: 동일한 시스템에서 프로세스 간 통신을 수행할 때, ALPC는 추가적인 보안 메커니즘을 제공합니다. 예를 들어, ALPC는 시스템 리소스에 대한 액세스 권한을 확인하고 관리할 수 있는 보안 속성을 지원합니다.
경량화: ALPC는 RPC에 비해 메모리 사용량이 적으며, 빠른 메시지 전달을 가능하게 합니다. 이로 인해 동일한 시스템에서 프로세스 간 통신을 수행할 때 전체적인 시스템 리소스 사용량이 감소합니다.
결국, 동일한 시스템에서 프로세스 간 통신을 수행할 때 ALPC를 사용하면 성능 향상, 보안 강화 및 경량화와 같은 이점을 얻을 수 있습니다. 이러한 이유로 Windows에서는 RPC가 동일한 시스템의 프로세스에서 호출될 때 ALPC 프로시저 호출을 통해 간접적으로 처리됩니다.