Android 프로 세 스 간 통신(IPC)메커니즘 Binder 요약 소개

5978 단어 AndroidBinder
안 드 로 이 드 시스템 에서 모든 프로그램 은 Activity 와 Service 로 구성 되 어 있 으 며,이러한 Activity 와 Service 는 같은 프로 세 스에 서 실 행 될 수도 있 고,다른 프로 세 스에 서 실 행 될 수도 있다.그렇다면 같은 프로 세 스에 있 지 않 은 Activity 나 Service 는 어떻게 통신 합 니까?이것 이 바로 본 논문 에서 소개 하고 자 하 는 Binder 프로 세 스 간 통신 체제 이다.
        우 리 는 안 드 로 이 드 시스템 이 리 눅 스 커 널 을 기반 으로 하고 리 눅 스 커 널 은 풍부 한 유 닉 스 시스템 프로 세 스 간 통신(IPC)체 제 를 계승 하고 호 환 한 다 는 것 을 알 고 있다.전통 적 인 파이프(Pipe),신호(Signal)와 추적(Trace)이 있 습 니 다.이 세 가지 통신 수단 은 부모 프로 세 스 와 하위 프로 세 스 사이 또는 형제 프로 세 스 사이 에 만 사용 할 수 있 습 니 다.그 후에 명령 파이프(Named Pipe)를 추가 하여 프로 세 스 간 통신 이 부자 프로 세 스 나 형제 프로 세 스 에 국한 되 지 않도록 했다.상업 응용 에서 의 사무 처 리 를 더욱 잘 지원 하기 위해 AT&T 의 유 닉 스 시스템 V 에'System V IPC'라 는 세 가지 프로 세 스 간 통신 메커니즘 을 추가 했다.그것 이 바로 메시지 대기 열(Message),공유 메모리(Share Memory)와 신 호 량(Semaphore)이다.그 후에 BSD Unix 는'System V IPC'체 제 를 중요 하 게 확 대 했 고 플러그(Socket)라 는 프로 세 스 간 통신 체 제 를 제공 했다.이러한 프로 세 스 간 통신 체 제 를 더 자세히 알 고 싶다 면 안 드 로 이 드 학습 시작 편 에서 라 는 책 을 참고 하 는 것 을 권장 합 니 다.
        그러나 안 드 로 이 드 시스템 은 위 에서 언급 한 각종 프로 세 스 간 통신 체 제 를 사용 하지 않 고 Binder 체 제 를 사용 하 는데 모 바 일 기기 의 하드웨어 성능 이 떨 어 지고 메모리 가 낮은 특징 을 고려 했 기 때 문 일 까?알 수 없다.Binder 는 사실 안 드 로 이 드 가 제기 한 새로운 프로 세 스 간 통신 메커니즘 도 아니 고 OpenBinder 를 바탕 으로 이 루어 진 것 이다.OpenBinder 는 Be Inc.에서 가장 먼저 개 발 했 고 이 어 Palm Inc.도 이 를 따라 사용 했다.현재 OpenBinder 의 저자 인 Dianne Hackborn 은 구 글 에서 일 하 며 안 드 로 이 드 플랫폼 개발 을 맡 고 있다.
        앞에서 언급 했 듯 이 Binder 는 프로 세 스 간 통신 체제 로 COM 과 CORBA 분포 식 구성 요소 구조 와 유사 하 며 통속 적 으로 원 격 프로 세 스 호출(RPC)기능 을 제공 합 니 다.영어 로 볼 때 Binder 는 접착제 라 는 뜻 을 가지 고 있 습 니 다.그러면 그것 은 무엇 을 한데 붙 입 니까?Android 시스템 의 Binder 메커니즘 에 서 는 Client,Server,Service Manager 와 Binder 드라이버 로 구성 되 어 있 으 며,그 중에서 Client,Server 와 Service Manager 는 사용자 공간 에서 실행 되 고 Binder 드라이버 는 커 널 공간 을 실행 합 니 다.Binder 는 이 네 개의 구성 요 소 를 한데 붙 이 는 접착제 입 니 다.그 중에서 핵심 구성 요 소 는 바로 Binder 드라이버 입 니 다.Service Manager 는 보조 관리 기능 을 제공 합 니 다.Client 와 Server 는 바로 Binder 구동 과 Service Manager 가 제공 하 는 인 프 라 시설 에서 Client-server 간 의 통신 을 합 니 다.Service Manager 와 Binder 구동 은 이미 Android 플랫폼 에서 이 루어 졌 습 니 다.개발 자 는 규범 에 따라 자신의 Client 와 Server 구성 요 소 를 실현 하면 됩 니 다.말하자면 간단 하고 시작 하기 가 어렵 습 니 다.초보 자 에 게 안 드 로 이 드 시스템 의 Binder 체 제 는 가장 이해 하기 어 려 운 것 입 니 다.한편,Binder 체 제 는 시스템 개발 이 든 응용 개발 의 측면 에서 볼 때 모두 안 드 로 이 드 시스템 에서 가장 중요 한 구성 이기 때문에 Binder 의 작업 방식 을 깊이 이해 할 필요 가 있 습 니 다.Binder 의 작업 방식 을 깊이 이해 하려 면 가장 좋 은 방법 은 Binder 와 관련 된 소스 코드 를 읽 는 것 입 니 다.Linux 의 원조 인 Linus Torvalds 는 일찍이 명언 RTFSC:Read The Fucking Source Code 라 고 말 한 적 이 있 습 니 다.
        비록 Binder 의 소스 코드 를 읽 는 것 이 Binder 메커니즘 을 배 우 는 가장 좋 은 방법 이지 만 준비 없 는 싸움 을 해 서 는 안 됩 니 다.Binder 의 관련 소스 코드 는 비교적 무미건조 하고 이해 하기 어 려 운 것 이기 때문에 이론 지식 을 보조 할 수 있다 면 더욱 좋 습 니 다.잡담 은 그만 하고 인터넷 에서 Binder 체제 에 관 한 자료 가 적지 않 습 니 다.여 기 는 다시 한 번 상세 하 게 쓰 고 싶 지 않 습 니 다.다음 두 편의 글 을 강력 히 추천 합 니 다.
        Android 의 심오 한 Binder 메커니즘
        Android Binder 디자인 및 구현 C 디자인 편
        Android 의 심오 한 Binder 메커니즘 은 상황 에서 출발 하여 Binder 가 사용자 공간 에 있 는 세 가지 구성 요소 Client,Server 와 Service Manager 의 상호 관 계 를 깊이 있 게 소 개 했 고 Android Binder 디자인 과 실현 은 커 널 공간의 Binder 드라이버 의 데이터 구조 와 디자인 원 리 를 상세 하 게 소개 했다.이 두 작가 가 우리 에 게 이렇게 좋 은 Binder 학습 자 료 를 가 져 다 준 것 에 매우 감사 드 립 니 다.요약 하면 Android 시스템 Binder 체제 의 네 가지 구성 요소 Client,Server,Service Manager 와 Binder 드라이버 의 관 계 는 다음 과 같다.
       
        1.Client,Server,Service Manager 는 사용자 공간 에서,Binder 드라이버 는 커 널 공간 에서 구현
        2.Binder 드라이버 와 Service Manager 는 Android 플랫폼 에서 이미 실현 되 었 습 니 다.개발 자 는 사용자 공간 에서 자신의 Client 와 Server 만 실현 하면 됩 니 다.
        3.Binder 드라이버 는 장치 파일/dev/binder 와 사용자 공간 상호작용 을 제공 합 니 다.Client,Server 와 Service Manager 는 open 과 ioctl 파일 조작 함수 로 Binder 드라이버 와 통신 합 니 다.
        4.Client 와 Server 간 의 프로 세 스 간 통신 은 Binder 드라이버 를 통 해 간접 적 으로 이 루어 집 니 다.
        5.Service Manager 는 서버 를 관리 하고 클 라 이언 트 에 게 서버 인 터 페 이 스 를 조회 하 는 데 사용 되 는 데 몬 입 니 다.
        이로써 Binder 메커니즘 에 대해 감성 적 인 인식 을 가지 게 되 었 지만 위 에서 아래로 전체 IPC 통신 과정 을 잘 관통 하지 못 한다 고 느 꼈 다.그래서 다음 네 가지 상황 을 통 해 Binder 소스 코드 를 분석 하여 Binder 메커니즘 을 더욱 이해 할 계획 이다.
        1.Service Manager 는 어떻게 데 몬 이 됩 니까?즉,Service Manager 는 Binder 드라이버 가 Binder 체제 의 컨 텍스트 관리자 임 을 어떻게 알려 줍 니까?
         2.Server 와 Client 는 어떻게 Service Manager 인 터 페 이 스 를 얻 습 니까?즉,default ServiceManager 인 터 페 이 스 는 어떻게 실현 되 었 습 니까?
        3.서버 는 어떻게 자신의 서 비 스 를 시작 합 니까?Service Manager 는 서버 가 시작 되 는 과정 에서 어떻게 서버 에 서 비 스 를 제공 합 니까?즉,IServiceManager:addService 인 터 페 이 스 는 어떻게 실현 되 었 습 니까?
        4  Service Manager 는 어떻게 Client 에 서 비 스 를 제공 합 니까?즉,IServiceManager:getService 인 터 페 이 스 는 어떻게 실현 되 었 습 니까?
        다음 네 편의 글 에서 이 네 가지 상황 에 따라 Binder 소스 코드 를 분석 할 것 이다.모두 사용자 공간 에서 커 널 공간 까지 의 Binder 관련 소스 코드 와 관련 될 것 이다.클 라 이언 트 와 서버 가 없 는 이 유 는 프로 세 스 간 통신 을 어떻게 하 는 것 일 까?Service Manager 가 데 몬 으로서 서버 역할 을 하기 때문이다.따라서 우리 가 세 번 째 와 네 번 째 상황 을 이해 할 수 있다 면 Binder 체제 에서 Client 와 Server 가 어떻게 Binder 드라이버 를 통 해 프로 세 스 간 통신 을 하 는 지 이해 할 수 있 을 것 이다.
        안 드 로 이 드 시스템 프로 세 스 간 통신 Binder 메커니즘 의 원리 와 실현 을 편리 하 게 묘사 하기 위해 다음 네 편의 글 에서 우 리 는 모두 C/C++언어 를 바탕 으로 Binder 메커니즘 의 실현 을 소개 한다.그러나 우 리 는 안 드 로 이 드 시스템 에서 응용 프로그램 을 개발 할 때 자바 언어 를 바탕 으로 하기 때문에 우 리 는 마지막 글 에서안 드 로 이 드 시스템 프로 세 스 간 통신 Binder 메커니즘 이 응용 프로그램 프레임 워 크 층 의 자바 인터페이스 에서 이 루어 지 는 것 을 자세히 소개 합 니 다.
        5.Android 시스템 프로 세 스 간 통신 Binder 메커니즘 이 응용 프로그램 프레임 워 크 층 의 자바 인터페이스 소스 코드 분석.
         지금까지 Binder 에 대해 서 말씀 드 렸 습 니 다. 메커니즘 에 대한 간단 한 소개,후속 적 으로 관련 자 료 를 계속 정리 하 겠 습 니 다.여러분 의 본 사이트 에 대한 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기