본문 바로가기

LETTER

안드로이드가 MTP를 사용하게 된 이유

아래 내용은, 커뮤니티에서 썼던 글을 그대로 복사하고, 블로그에 맞게 조금 정리하였습니다.

 

 

 

 

 

예전, 안드로이드는 애플리케이션 프로그램 코드 + 애플리케이션 유저 데이터를 담아두는 데이터 영역과 사진, 동영상, 음악등의 컨텐츠를 담아두는 SD영역이 나눠져서, SD영역이 안드로이드 시스템에 마운트 되는 방식으로 접근이 가능했었습니다. 

 

이유는 리눅스 시스템이라는 특성상, 시스템이 접근하는 영역은 리눅스 파티션이여야만 접근속도가 높고 안정적이기 때문에, 앱을 설치하는 공간은 무조건 리눅스 파티션이어여만 했습니다. 또한 앱의 데이터는 쉽게 접근할 수 없도록 보관해야 했기 때문에 최고권한이 아니면 접근하지 못하도록 구성할 필요가 있었습니다. 문제는 우리가 쓰는 PC의 대부분은 Windows 시스템이었다는것과 앱 보안상의 문제.

 

그 당시에는 리눅스 파티션을 그대로 윈도우에서 사용하기는 힘들었으며, 앱의 데이터만 보이지 않도록 하면서 PC에서 컨텐츠를 탐색하거나 전송하는 방법은 없었습니다. 즉, 쉬운 연결과 파일 전송을 위해서는 Windows가 접근할 수 있는 파일 시스템이어야만 했으며, UMS방식을 사용하는 방법 뿐이었습니다.

 

고로 컨텐츠를 쉽게 전송할 수 있으며, 앱의 데이터를 지킬 수 있는 보안도 확실하게 할 수 있게 하기 위해, 컨텐츠를 위한 SD 영역과 데이터 영역을 분리하게 된 거였습니다.  

 

 

 

 

 

 

 

 

 

즉, 통합이지 않았기 때문에...


 

1. SD영역의 공간이 아무리 남아돌아도 애플리케이션쪽의 공간이 부족하면 공간이 부족하다고 앱을 설치하지 못하거나 강제 설치시 에러를 띄웠습니다.

 

마찬가지로 반대의 경우인 SD영역은 모자라고, 데이터 영역은 남아돌때, 사용자는 데이터 파티션에 접근을 할 수 없으므로 이 남은 공간을 SD영역처럼 활용할 수 가 없었습니다.

 

또한 앱의 기능이 많아지고 퀄리티가 높아지면서, 앱이 데이터 영역과 SD영역을 둘다 많이 요구하는 경우가 많아지게 되었고, 이 상태에서 어느 한쪽이 용량이 부족하게 되면 앱은 설치 도중 오류를 일으키게 되는 문제가 발생하였습니다.

 

즉, 기기를 사용하면서 필요한 남은 공간을 유동적으로 활용하지 못하였습니다.

 

 

 

 

 


2. 더불어서 PC와의 연결은 안드로이드와 마운트를 해제한 후, PC와 SD영역이 직접 연결되기 때문에 SD영역에 데이터를 옮겨간 일부 애플리케이션들은 PC와 연결 상태에서는 앱이 없어진걸로 표시되고 실행이 불가능해 집니다. 또한 SD영역을 활용하는 시스템의 일부 기능들이(카메라, 사전등) 구동할 수 없게 됩니다.

 

단순히 위에 갤럭시의 내장 메모리 연결 경고 메시지를 봐도 알 수 있듯이 일부 애플리케이션이 종료된다고 나타나 있습니다. SD영역을 활용하거나, SD영역에 추가 데이터를 설치한 앱의 경우 실행이 불가능하거나 기능에 제한이 걸릴 수 있다는 것을 알려주는 것입니다. 애플리케이션 뿐만 아니라 음악 파일을 벨소리로 지정해 둘 경우, PC연결시 기본 벨소리만 울리게 됩니다.


 

 

 


이런 문제가 있는데, 안드로이드가 발전하면서 문제점은 점점 커지게 됩니다.

 

 

 

 

앱의 기능과 퀄리티가 증가하여서 고용량의 앱이 나타나게 되었고, 나눠지게 되 한정되버린 데이터 공간에는 고용량의 앱을 설치하기는 어려웠기 때문에 앱의 일부 데이터는 SD영역에 설치하는 방법이 나왔고, 결국 PC와의 연결시 그런 앱들은 모두 정상 실행을 할 수 없게 되는등의 최악의 경우가 생긴것이죠.

 

위의 경우는 각각 아스팔트 7, 밀리언 아서, 리얼 레이싱 2 가 UMS 연결 상태에서는 실행하지 못하는것을 보여주고 있습니다.

 

 

 

 

이런 문제로 인해, 허니컴부터 통합된 데이터 영역을 지원하기 시작하였습니다. 그리고 이 영역을 PC와 연결할 수 있도록 MTP라는 프로토콜을 사용하게 되었습니다. 

 

이유는, MTP는 PC가 직접 SD 영역을 마운트하여 데이터를 기록하거나 읽는 UMS와는 다르게, PC가 원하는 정보를 기기에 명령하면 기기가 데이터 영역의 컨텐츠를 읽어와 전송하거나 기록하게 됩니다. 즉, PC가 직접 접근하는게 아니라 PC는 안드로이드로 접근하게 되고, 안드로이드가 데이터 영역을 관리하게 되는 것이죠. 이로인해 1. 파일 시스템 호환성의 문제가 해결되며, 2. 안드로이드 시스템이 판단하에 '이 데이터는 보여주면 안되!' 라고 막게 되면 PC에서는 없는 것처럼 나오기 때문에 앱 보안상의 문제도 해결할 수 있었습니다.

 

덕분에,

 


1. 애플리케이션을 위한 공간과 컨텐츠를 위한 공간 구분이 없어져 남은 공간의 활용을 효율적으로 할 수 있게 되었습니다. 애플리케이션은 SD영역에 따로 데이터를 저장할 필요 없이 통합된 데이터 공간을 활용해 앱 데이터 자체를 크게 사용할 수 있게 되었고, 애플리케이션을 설치하기 위해 공간이 부족하다면 동영상과 같은 컨텐츠를 지움으로써 용량 확보를 해 애플리케이션 설치 공간으로 활용할 수 도 있게 되었습니다.

 


2. 또한 데이터 영역은 언제나 안드로이드 시스템에 마운트 되어 있는 상태이기 때문에 PC와 연결하여 컨텐츠를 전송하더라도 애플리케이션을 실행할 수 없는등의 문제는 발생하지 않습니다.(물론 일부 기종은 MTP 연결시 MTP관리자가 안드로이드를 잠궈버리는 문제가 있습니다만, 이는 보안상의 문제로 보여집니다.) 벨소리는 당연히 바뀌지 않게 되었습니다.

 


 

 



 

즉, MTP를 사용하면서 데이터 영역을 통합할 수 있게 되었죠. 그러나, 그로인해 발생한 또다른 문제가 몇가지 생겼습니다.

 

 


 

1. Windows 시스템은 MTP장비를 기본적으로 휴대용 멀티미디어 장치로 인식하기 때문에 파일 복사시 미디어 형태를 확인해 호환성 경고를 매번 내게 됩니다. 파일을 복사하는데 매번 번거로운 메시지가 반겨주는거죠.

2. MTP의 특성상 데이터 전송을 한번에 동시에 전송할 수 있는 연결이 제한되어 있습니다. 다중 복사를 걸게 되면 기기가 사용중이라고 하며 다른 작업이 끝날 때 까지 다음 작업은 대기하게 됩니다. 

3. 그리고 PC가 직접 데이터 영역에 접근하는것이 아니라 기기가 알려주는 데이터로 확인하는것이므로 반응속도가 한박자 늦게 됩니다. 이 문제는 작고 많은 파일들을 복사할 때 대기시간이 길어져 전송속도가 상당히 느려지게 됩니다.

4. 더불어서 Windows 시스템의 탐색기 추가 기능(이미지 미리보기등)들은 기기가 제공해주는 정보에 의지해야 하므로 (이미지 미리보기의 경우에서)기기가 썸네일 데이터를 제공해 주지 않는다면 작동하지 않을 수 있습니다.

MTP에 불편함을 이야기할 때, 보통 사용자들은 2번과 3번의 경우에서 불편함을 느끼고 있습니다. 이전 이동식 디스크 패턴 대로 PC가 I/O를 최적화 한 상태로 데이터를 기기의 메모리에 복사하는것과는 다르게, 반응속도가 느리고 동시 연결이 안되기 때문에 전채적인 속도가 느리다라고 생각하는거겠죠.

 

 

 

 

 

 

 

결론은, 저는 MTP가 크게 불편하지는 않습니다. 동영상 파일을 복사할때 경고를 내는건 조금 짜증나서 어떻게 막을 수 없는지는 확인중이지만, 굳이 효율적인 공간 활용을 위해 개발해 논 걸 부정하고 싶지는 않거든요. (사실 저는 SD영역이 남아돌면서도 애플리케이션 공간이 부족하다고 앱 설치를 거부하는 걸 어이없게 생각하고 있어서, 오히려 좋다고 생각합니다.)

 

그리고 다중 복사를 굳이 할 필요 있는지도 모르겠고, 미리보기가 안되는건 조금 문제라고 생각하지만, PC에서 파일을 전송하는 중에도 안드로이드 시스템이 제한이 생기는것은 없으니 저로써는 나름 좋은 선택을 한 것 이라고 생각합니다.


 



추가 :
1. 아, 그리고,,, 아이폰에서 아이튠즈 없이 탐색기로 사진 뽑아내는것도 MTP입니다.

2. 특허 문제라기도 하는데,, 그건 잘 모르겠습니다.