로컬 프로시저 호출
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
로컬 프로시저 호출(LPC)은 동일한 컴퓨터 내의 프로세스 간 통신을 위한 메커니즘이다. LPC는 커널 내 보안 "포트" 객체를 사용하여 구현되며, 서버와 클라이언트 간의 통신 시나리오를 따른다. ALPC는 세 가지 메시지 교환 모드와 I/O 완료 포트를 사용하여 성능을 향상시켰다. 윈도우 NT 내부 하위 시스템 간 통신에 널리 사용되며, Win32 서브시스템, LSASS, SMSS, 서비스 제어 관리자 등에서 사용된다. 또한 마이크로소프트 RPC는 전송 수단으로 LPC를 사용할 수 있으며, OLE 및 DCOM 구현도 로컬 통신에 LPC를 사용한다.
더 읽어볼만한 페이지
- 프로세스 간 통신 - Ajax
Ajax는 웹 페이지 전체를 새로고침하지 않고 비동기적으로 서버와 통신하여 웹 애플리케이션의 일부를 업데이트하는 웹 개발 기술로, XMLHttpRequest 객체의 등장으로 가능해졌으며 HTML, CSS, DOM, JavaScript, JSON 등의 기술을 통합하여 동적인 사용자 인터페이스를 구현한다. - 프로세스 간 통신 - D-Bus
D-Bus는 2002년에 시작된 프로세스 간 통신 시스템으로, 시스템 버스와 세션 버스를 통해 정보 공유, 모듈성, 권한 격리를 제공하며, 일대일 요청-응답 및 발행/구독 통신 방식을 지원한다. - 윈도우 구성 요소 - 인터넷 익스플로러
마이크로소프트가 개발한 웹 브라우저인 인터넷 익스플로러는 윈도우 운영 체제와의 통합으로 높은 시장 점유율을 유지했으나, 웹 표준 문제와 보안 취약점으로 비판받으며 2015년 엣지에 자리를 내주고 2022년 지원이 종료되었지만, 엣지의 IE 모드로 레거시 호환성을 유지하고 있다. - 윈도우 구성 요소 - 원격 데스크톱 서비스
원격 데스크톱 서비스(RDS)는 네트워크를 통해 원격으로 컴퓨터의 데스크톱 환경에 접근할 수 있게 해주는 기술이며, 클라이언트 소프트웨어, 서버 구성 요소, 다양한 역할을 수행하는 구성 요소로 구성된다.
로컬 프로시저 호출 | |
---|---|
개요 | |
종류 | 프로세스 간 통신 (IPC) 메커니즘 |
목표 | 동일 시스템 내 프로세스 간 효율적인 통신 지원 |
특징 | 공유 메모리 활용, 컨텍스트 스위칭 최소화 |
기술적 세부 사항 | |
기반 | 클라이언트-서버 모델 |
통신 채널 | 명명된 파이프 또는 공유 메모리 영역 |
데이터 전송 | 커널을 거치지 않고 직접 메모리 복사 |
동기화 | 세마포어 또는 뮤텍스 사용 |
활용 분야 | |
마이크로커널 아키텍처 | 시스템 서비스 간 통신 |
클라이언트-서버 애플리케이션 | 로컬 프로세스 간 데이터 교환 |
임베디드 시스템 | 리소스 제약 환경에서의 효율적인 통신 |
장점 | |
성능 | 높은 처리량과 낮은 지연 시간 |
효율성 | 커널 오버헤드 감소 |
보안 | 프로세스 간 격리 유지 |
단점 | |
복잡성 | 구현 및 디버깅의 어려움 |
이식성 | 운영 체제 의존성 |
보안 취약점 | 공유 메모리 영역의 잘못된 관리 시 발생 가능 |
2. 구현
(A)LPC는 커널 내 보안 "포트" 객체를 사용하여 구현되며, 통신하는 프로세스를 식별할 수 있다. 메시지별 SID를 설정할 수 있으며, (A)LPC 메시지와 관련된 토큰의 보안 컨텍스트 변경 여부도 확인할 수 있다.[7]
2. 1. 통신 과정
서버와 클라이언트 간의 일반적인 통신 과정은 다음과 같다.[7]# 서버 프로세스는 ''명명된 서버 연결 포트'' 객체를 생성하고 클라이언트의 연결을 기다린다.
# 클라이언트는 연결 메시지를 보내어 알려진 포트에 연결을 요청한다.
# 서버가 연결을 수용하면 두 개의 ''익명'' 포트가 생성된다.
#* ''클라이언트 통신 포트'' - 클라이언트 스레드가 특정 서버와 통신하는 데 사용된다.
#* ''서버 통신 포트'' - 서버가 특정 클라이언트와 통신하는 데 사용된다. 각 클라이언트마다 포트가 생성된다.
# 클라이언트는 클라이언트 통신 포트 핸들을 받고, 서버는 서버 통신 포트 핸들을 받으며, 프로세스 간 통신 채널이 확립된다.
2. 2. 메시지 교환 모드
(A)LPC는 서버와 클라이언트 간의 메시지 교환에 대해 다음 세 가지 모드를 지원한다.[7]- 작은 메시지 (256바이트 이하): 커널은 프로세스들 간의 메시지 버퍼를 복사한다. 이것은 보내는 프로세스의 주소 공간부터 시스템 주소 공간까지, 그리고 그곳부터 받는 프로세스의 주소 공간까지이다.
- 256바이트 초과 메시지: 공유된 메모리 섹션은 데이터 전송을 위해 사용되어야 한다. (A)LPC 서비스는 보내는 프로세스와 받는 프로세스들 간에 지도를 만들어 준다. 첫번째로 보내는 쪽은 공유된 메모리에 데이터를 놓고 받는 프로세스에게 공유된 메모리를 가리키며 통보를 한다.
- 데이터가 너무 커서 공유 섹션에 맞지 않을 때: 서버는 클라이언트의 주소 공간에서 직접적으로 데이터를 읽고 쓸 수 있다.
2. 3. 성능 향상
ALPC는 I/O 완료 포트를 사용하여 성능을 향상시킬 수 있다.[4] 이를 통해 메시지 수와 스레드의 균형을 자동으로 맞추어 ALPC 포트가 고속 통신을 할 수 있게 한다. 또한 ALPC 메시지를 함께 일괄 처리하여 사용자 모드/커널 모드 전환을 최소화할 수 있다.3. 알려진 용법
(A)LPC는 윈도우 NT 내부 하위 시스템 간 통신에 널리 사용된다. Win32 하위 시스템은 클라이언트와 CSRSS 간 통신에 (A)LPC를 많이 사용한다. 윈도우 NT 3.51 버전에 이러한 호출 속도를 높이기 위해 Quick LPC가 도입되었다. 이 방식은 서버에서 성능이 중요한 부분을 커널 모드(win32k.sys)로 옮기는 것을 선호하여 4.0 버전에서 대부분 폐기되었다.
로컬 보안 인증 하위 시스템 서비스(LSASS), 세션 관리자 하위 시스템(SMSS), 서비스 제어 관리자(SCM)는 모두 클라이언트 프로세스와 통신하기 위해 (A)LPC 포트를 직접 사용한다. 윈로그온 및 보안 참조 모니터(SRM)는 LSASS 프로세스와 통신에 사용한다.
앞서 언급했듯이, 클라이언트와 서버가 모두 동일한 컴퓨터에 있는 경우 마이크로소프트 RPC는 전송 수단으로 (A)LPC를 사용할 수 있다. 로컬 컴퓨터에서만 통신하도록 설계된 많은 서비스는 RPC를 통해 유일한 전송 수단으로 (A)LPC를 사용한다. 많은 경우 원격 OLE 및 DCOM 구현도 로컬 통신에 (A)LPC를 사용한다.
참조
[1]
웹사이트
LPC (Local procedure calls) Part 1 architecture
https://docs.microso[...]
[2]
논문
[3]
논문
[4]
논문
[5]
웹인용
LPC (Local procedure calls) Part 1 architecture
https://docs.microso[...]
[6]
논문
[7]
논문
[8]
논문
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com