본문 바로가기
Programming/Android Kernel,Native

안드로이드 바인더(Android Binder)가 탄생하기 까지

by 개Foot/Dog발?! 2014. 10. 13.

URL : http://victor8481.tistory.com/240


.....


나 꽤 오래 전임에도 불구하고 시스템 API를 모두 C++로 제공하는 도전적이고 스타일 있는 시스템으로 기억되고 있다.

이 시절을 잊지 못한 사람들이 하이쿠(Haiku) 라는 이름으로 BeOS를 되살려 놓으려고 하고 있다.

그 시절의 추억을 되살리고 싶은 분들은 http://www.haiku-os.org/ 로 찾아가 보기 바란다.


그런데 회사가 인수되기 전에 시작한 내부 프로젝트가 있었다고 한다.


오픈 바인더(OpenBinder)라는 프로젝트인데, 차세대 BeOS의 핵심 기능들을 위해 준비되던 컴포넌트 시스템

(Component System)이다


.....


이 프로젝트를 이끌던 Dianne Hackborn 이라는 친구가 팜으로 옮긴 후에도 작업을 계속했고,

결국 2004년 경에 코발트(Cobalt) 라는 이름으로 알려진 PalmOS 6 의 중요한 구성요소로 완성하게 된다


.....


팜은 리눅스로 기반 OS를 변경하게 되고, 오픈 바인더 역시 리눅스로 이식된다.

이 리눅스 버전이 오픈 소스로 공개되었고, 지금도 http://www.angryredplanet.com/~hackbod/openbinder/ 에서 다

운로드 할 수 있다.

하지만 개발은 2005년 말에 중단된 상태이고, 더 이상 의미 있는 형태로 사용되지는 않고 있다


.....


어쨌거나 오픈 바인더는 더 이상 팜에서 사용되지 않을 듯하고, Hackborn 역시 일찌감치 구글(Google)로 옮겨간 상태

다.

이 때쯤에 쓴 것으로 보이는 인터뷰 기사는 바인더에 관련된 여러 가지 유용한 실마리를 제공한다.

http://www.osnews.com/story/13674/Introduction_to_OpenBinder_and_Interview_with_Dianne_Hackborn 에서 볼 수 있다.


구글로 옮겨간 Hackborn은 안드로이드를 위한 바인더(Binder)를 새로 작성하게 된다.

기본적인 설계는 공유하고 있지만, 커널 모듈을 제외하고는 오픈 바인더의 코드를 사용하지 않고 전면적인 재 구현이

이루어졌다.

커널 모듈의 경우도 전체적인 구조는 그대로 유지하고 있지만, 세부 사항에 있어서 상당 부분 수정이 가해졌다.

같은 리눅스기반임에도 불구하고 안드로이드 바인더는 오픈 바인더와 호환성이 없다.

때문에 안드로이드의 바인더는 오픈 바인더와는 단절되고 부분적인 역사만을 공유한다.


.....


안드로이드 바인더

자료가 기술하고 있는 안드로이드의 버전은 1.6 입니다.

안드로이드의 공식 문서에 포함되어 있지는 않으나, 안드로이드의 소스 코드로부터 직접 읽어낸 자료들을 상당량 포

함하고 있습니다.

이런 자료들은 안드로이드의 버전이 올라감에 따라, 공식 문서를 통해 공개된 내용들에 비해 변경의 가능성이 더 높다

는 점을 유의해주시기 바랍니다.


이 강의는 바인더의 RPC에 초점을 맞춘 것으로, 몇 가지 생략된 내용들이 있습니다.

발표 후에 따로 질문하신 분이 있기도 하고 해서, 어떤 내용들이 생략되었는지 생각나는 데로 적어보겠습니다.

이 내용들은 계획된 1시간에 맞추기 위해 강의 계획을 짤 때부터 생략하기로 한 것입니다.

때문에 자료에도 포함되어있지 않습니다.

좀 더 시간적으로 여유 있는 강의가 있다면 다룰 수 있을지 모르겠습니다..

- Flat Binder Object 로 IBinder 외에 File Descriptor를 전달할 수 있습니다.

- One-way Call이 존재한다는 사실을 알리지 않았습니다.

- Reference Counting 과 관련된 일체의 내용을 생략했습니다.

- Thread Priority 와 관련된 내용을 다루지 않았습니다.

- Death Notification 을 생략했습니다.

- /proc 로 노출되는 데이터들에 관한 설명을 생략했습니다.

- Error Handling 도 다루지 않았습니다.

- Activity Manager 와 관련된 모든 것들을 생략했음은 발표 때 이미 설명 드렸습니다.


발표 자료에는 pdf 파일에 더해, OpenBinder 와 관련된 안트로이드 바인더의 역사부분에 관한 초고를 함께 올립니다.

발표 때는 시간 때문에 많이 줄여야만 했습니다.

관심있는 분들 참고하시기 바랍니다.

Refer : http://www.flowdas.com/blog/the-history-of-android-binder