본문 바로가기

Life story

iOS와 Android 차이점 + 알파

 

제목과 같이 두 회사의 운영체제에 대한 대표적인 세가지를 짚어보려한다. 스마트폰이 나온 초기때부터 이 두개에 대한 끊임없는 얘기가 사람들에게 회자되고 있는데, 정작 맥을 제대로 짚고 있는 사람은 얼마나 될 지 의문이다. 넘쳐나는 정보들 중에서 쓸만한 정보도 많지 않거니와 자신이 찾고자 하는 정보도 많지 않다. 나도 전문가라고 말하기는 곤란하지만 운영체제를 공부한 입장에서 이해한바를 바탕으로 타이핑했다.

자세한 기술 사항은 마지막에 계층구조와 링크를 남긴다.

 

[1]▶ iOS의 제한적 멀티테스킹 vs Android의 멀티테스킹

멀티테스킹(Multi tasking)은 두 개 이상의 작업을 동시에 실행한다는 의미이다. 하지만 엄밀히 말하면 병렬처리는 아니다. 쉽게 비유하자면 거실에 TV(40인치)와 LCD 모니터(40인치)가 있고 TV는 뉴스가 나오고 LCD에는 영화가 나온다고 치자. 멀티테스킹은 TV를 볼 때 영화가 나오는 LCD의 볼륨을 줄이거나 화면을 어둡게 해서 TV에 집중한다. 또는 반대의 경우를 들 수 있다. 하지만 어느 한쪽을 끄고 보는건 아니다. 반면에 싱글테스킹은 어느 한쪽을 끄고 하나만 보는 것이다.

 

Android는 멀티테스킹을 한다. 그러나 iOS는 제한적인 멀티테스킹을 한다. 이 말은 Android는 카톡을 하면서 인터넷을 하고 동시에 이메일을 쓸수 있다는 뜻이다. 특히 요즘 출시된 갤럭시노트10.1인치는 화면 분할해서 두개의 어플을 동시에 한다거나 갤럭시3에 있는 젤리빈에서 보여주는 홈화면에서 DMB시청 같은 일은 바로 멀티테스킹을 기초로 한다.

반면에 iOS는 멀티테스킹이라고 보기 어렵다. 전화와 문자, 음악 등 몇 개만 동시 작업을 허용하고 일반 앱은 아니다.

 

이렇게 안드로이드폰들은 홈버튼을 누르면 해당 어플은 백그라운드로 실행되니 다중 작업을 실행할 수 있다. 그래서 PC와 마찬가지로 폰이 마구 버벅거리기 일쑤다(랙이나 어플의 프리징). 반면에 아이폰의 경우는 iOS4.x 버전부터 제한된 멀티테스킹을 지원하기 시작하였다. 전화, 문자, iOS의 기본기능 등만 멀티테스킹 실행하고 일반적인 어플들은 홈버튼을 누르면 종료된다.
개인적으로 안드로이드 앱 중에서 종료 메뉴나 기능이 없는 어플을 싫어한다. 대표적으로 카카오톡. 마이피플. 계속 메모리에 실행 상태로 있기 때문에 인터넷 하고 뭐하고 하면 금방 메모리가 부족해진다.

 

이러한 OS(operating system, PC의 윈도우 같은)의 구조적인 차이로 인해서 사용자들이 다양한 체험(?) 혹은 고충이 있는 것이다. 안드로이드는 테스크킬러를 써서 메모리관리를 해줘야 한다 / 안드로이드는 느리다 / 그래서 아이폰이 좋다처럼.

그래서 스마트폰 초기에는 iOS가 판매량이나 성능면에서 우위에 있었던 것이 사실이다. 하지만 하드웨어 성능이 쿼드코어로 좋아지고 Android 성능이 향상되고 안정화되면서 차이가 없어졌고 이제는 Android의 멀티테스킹 장점이 비로서(?) 두각을 나타내고 있다고 할 수 있다. 사실 안드로이드의 멀티테스킹은 PC의 그것과 흡사하기 때문에 높은 성능이 요구되었기 때문이다.

 

# 안드로이드의 메모리 관리

안드로이드에서 메모리(RAM) 정보를 보면   ***MB사용(a)            ***MB 남음(b)  으로 표시된다.

흔히 안드로이드는 메모리 관리를 해야 한다고 한다. 그래서 테스크킬러 앱을 많이 쓰기도 한다.

이유는 안드로이드는 앱이 종료된 후에도 메모리(a)에서 제거하는 게 아니라 캐쉬 형태로 메모리(b) 남겨둔다. 그래서 앱을 다시 실행할 때 빠르게 실행된다. 하지만 메모리를 많이 차지하므로 이런 캐쉬된 앱들이 많다면 성능이 떨어진다. 게다가 어떤 앱은 위에서 잠깐 언급 했듯이 '뒤로'버튼으로 종료를 했음에도 불구하고 메모리(a)에서도 종료가 되지 않는다. (그래서 개인적으론 카카오톡을 쓰레기 앱이라고 부른다. 앱의 기능이나 편리성을 말하는 게 아니다. 가용램이 부족한 OS에서 돌아가는 앱의 기본도 아니고 기초도 안된 앱이니까. 쓰고 싶어서 쓰는게 아니다. 어쩔수 없이 연락수단으로 쓴다.)
이런 단점을 보완해서 프로요(주1) 이상에서는 자주 실행하는 앱의 빈도를 학습하였다가 메모리 부족으로 앱의 실행환경이 나빠지면 빈도가 낮은 앱을 종료(kill) 시킨다. 그러므로 테스크킬러의 강제적인 kill은 오히려 학습을 방해한다. 이 역시 배터리와 관련이 있는데, 처음 샀을땐 배터리가 너무 빨리 닳지만 시간이 지나 안드로이드가 학습함에 따라서 효율이 높아지기 때문에 흔히 광탈이라는 현상이 줄어드는 것이다. 물론 안드로이드가 관리해주는데로 쓸지 아니면 사용자가 직접 강제종료하면서 쓸지는 각자의 몫이다.

 

 

[2]▶ 달빅버츄얼머신(DVM)

iOS 어플들은 iOS 위에서 바로 돌아가지만 안드로이드에서는 Android 위에 있는 DVM의 상위에서 돌아간다. JVM을 알고 있는 사람이면 금방 이해가 갈 것이다. 컴퓨팅 환경에서는 C vs Java로 많이 이야기된다. 관련지식이 없는 일반인은 이해하기 어려울 수 있다. 그래도 비유해보자면 VM(DVM, JVM)은 현실에서 중개인(?) 정도로서 "사는사람-부동산-파는사람", "국민-청와대 대변인-정부", "고소인-법률대리인-판사" 등으로 하겠다. 굵은 글씨는 모두 중간자 역할이라는 것이다.

즉, 아이폰은 직거래이고 안드로이드는 중개거래라고 생각하면 편하지 않을까(?) 싶다.

따라서 구조적으로 안드로이드는 애플에 비해 느린 구조를 가지고 있다.

 

구글이 어플(앱) 실행시 DVM을 거치는 방식을 왜 도입한 것일까? 명령체계가 한단계 더 거치면서 느려지는 것을 뻔히 알면서도 말이다. 이유는 VM(버추얼머신: virtual machine)의 이점을 중요시 생각했기 때문이다. 즉, 안드로이드는 폰의 하드웨어나 운영체제에 독립적인 구조이다. 앱은 하드웨어와 운영체제에 맞게 개발되는데, 애플의 앱은 iOS와 직접 통신하므로 이것이 아닌 윈도우나 PC에서 구동이 불가하다. 하지만 안드로이드의 앱은 DVM과 통신하므로 윈도우에 맞는 DVM이 있으면 되는 것이다. 이게 바로 가장 큰 장점이다. 좀더 자세한 용어로는, 현재 iOS나 Android 모두 모바일 프로세서는 대부분 ARM의 아키텍쳐를 사용하고 있다. 하지만 인텔 CPU를 사용한다던지 OS를 리눅스로 바꾼다는 경우를 가정하면 얘기가 달라진다. iOS는 모든 프로그램(OS와 앱 등)을 재개발해서 배포해야한다. 하지만 안드로이드에서는 바뀐 환경에 맞게 단지 DVM이 바뀌면 된다. 앱은 그런걸 신경쓸 필요가 없다.

이같은 내용은 컴퓨터공학에 밀접한 관련이 있다. 공학적인 입장에서는 iOS는 지극히 제한적인 경우에 사용하는 과거의 방식이다. 현재 혹은 미래지향적인 공학에서는 Android의 기본 개념을 가지고 있다. 하지만 항상 최신이 좋은 건 아니다. 개인적으로는 약간 보수적인 애플의 iOS가 좋다. 왜냐하면 굳이 이동하면서 카톡하고 인터넷, DMB 시청하는 걸 바람직하게 생각하지 않고 나한테는 별로 필요하지도 않아서다. 어째튼 이런 경쟁구도가 서로의 기술이 발전하게 되는 요인이라는 점이다. 구글은 DVM을 꾸준히 개선하여 지속적인 성능 향상을 하고 있다.

 

[3]▶ 푸시 서버

이부분은 별로 관심이 없어서 간단히 짚어보고자 한다. 애플은 있고 안드로이드는 없었다. 하지만 안드로이드 프로요 이상에서는 C2DM(Cloud to Device Messaging)이란 이름으로 C2DM서버를 통한 푸시를 지원하므로 더이상 큰 이슈거리는 아니라고 본다.
그보다도 푸시서버의 존재의 의미나 기능을 이해하는 게 낳다. 채팅어플은 상대방의 메세지를 수신해야 하는데 iOS와 Android는 약간 다르다. iOS는 여러 채팅어플(카톡, 네이트온, 마이피플, 라인 등)로 들어오는 메세지를 내장된 하나의 푸시서버가 받아서 각각의 채팅어플로 보내준다. 반면에 프로요 이전의 Android는 각각 채팅어플 제작사의 푸시서버를 통해서 채팅어플에 메세지를 수신했었다. 효율성의 차이라고 보면 좋을 듯 하다. 단점이라면 쉽게 말해서 푸시서버에 문제가 생기면 이를 이용하는 모든 어플들이 사용불가 상태가 된다는 것이다.

 

~세가지 차이점에 대해 추가로 참고 해볼 링크: http://regen.egloos.com/4543506

 

주1) 안드로이드 버전 히스토리
1.0 ver.(2008.09.23): Apple pie
1.1 ver.(2008.09.23): Bananabread
1.5 ver.(2009.04.30): Cupcake  // 안드로이드 최초정식 버전
1.6 ver.(2009.09.15): Donut    // 카메라 및 캠코더 등
2.0 ver.(2009.10.26): Eclair   // 멀티터치, 블루투스2.1지원
2.2 ver.(2010.05.20): Froyo    // 최적화와 배터리타임등 대부분의 성능개선
2.3 ver.(2010.12.06): Gingerbread  // 인터넷을 통한 os업데이트
3.0 ver.(2011.02.03): Honeycomb    // usb기기지원
4.0 ver.(2011.05.10): Icecream sandwitch  // 태블릿pc와 스마트폰 공용os
4.1 ver.(2012.06.28): Jellybean
버전이 올라갈 때마다 알파벳 순으로 이름지어진다. 다음 버전은 K로 시작되는 키 라임 파이(Key lime pie)

 

 

아이폰5는 혁신은 없지만 사람들은 원한다. 왜? 쓰기 편하니까. 전화는 잘되어야 하고 게임도 좀 하고 뉴스나 인터넷 검색도 좀 하고 카톡도 좀 하고 또 필요하면 어플깔아서 다른 것도 좀 하자. 이게 대다수 사용자들 입장이다. 좀더 나아가서 나처럼 그냥 심플한거 원하는 사람. 그냥 전화에 카톡 정도의 연락수단으로만 쓰는 사람들 입장에서는 휴대폰이던 스마트폰이던 그냥 쉽고 단순하게 쓰기만 하면 되는 것이다. 왜 그걸 위해서 또 사용법을 숙지해야 하는가 의문만 들뿐이다. 안그래도 먹고 살기 바쁘고 영어 하나만 열심히 하려고 해도 벅차다. 그래서 나같은 사람들은 스마트폰을 선택한다면 아이폰을 쓰는 게 안드로이드폰을 쓰는 것보다는 낳다고 생각한다. 그리고 편협한 시각을 가진 기자들이 쓴 글은 지구 밖으로 던져버리고 객관적인 기사를 읽자.

http://www.mediatoday.co.kr/news/articleView.html?idxno=104992

이 기사에는 국내에서 아이폰을 헐뜻기 보다는 사실 전달에 초점을 두고 있다. 즉 아이폰5는 그래도 구매할 매리트가 있다는 원문을 소개한다. 국내 언론의 대다수는 지들이 보도하고 싶은 것만 쏙 빼서 보도한다. 그리고 기사 제목은 자극적이다. 어째 언론 수준이 하향 평준화 되고 있는지...

그럼 안드로이드의 대표주자인 갤럭시3는 혁신적인 것일까? 광고 카피인 "디자인에 감성을 입히다"(?)처럼 얼굴인식 기능을 이용한 화면제어와 락해제 등이 과연 혁신이라 불릴만 한 것들인가. 개인적으론 좀 시니컬해진다. 있으면 좋고 없으면 말고. 구글은 단순하게 쓰는 사람들은 배려하지 않는 것인가.

여기서 잠깐, iOS와 Android의 차이점으로 잠깐 돌아가보려고 한다. 왜냐면 ICS(icream sandwich, 아이스크림 샌드위치, 줄여서 아샌)의 운영체제는 뭔가 좀 다르기 때문이다.

그것은 아이폰과 같은 제한적인 멀티테스킹 허용이다. 휴대폰 설정-> 개발자 옵션에 보면 백그라운드 프로세스의 개수를 제한하는 기능과 '뒤로'가기 버튼을 터치했을때 완전히 종료할 것인지 선택하는 메뉴가 생겼기 때문이다. 이 두가지는 즉, 아이폰과 같은 제한적 멀티테스킹을 사용자 선택사항으로 쓸수 있게 한다는 것이다. 실제로 이 옵션을 켜고서 사용해보면 가용램이 늘어나는 메모리 변화가 뚜렸하게 나타난다.

사용자에 선택의 폭을 넓혀주는 구글의 이런 행보를 매우 환영한다. OS가 업그레이드 되면서 안정화되었다는 건 지극히 환영할 일이다. 하지만 반대로 생각해보면 굳이 초창기 베타버전의 성격인 OS를 시장에 내놓고 팔아먹어야 했어야 했는가이다. 사실 이부분은 공학적인 접근이 필요하다. 요즘에 제품의 교체주기가 빠른 것들은 대부분 기기의 성능과 안정성보다 Time to Market. 즉 적절한 시기에 제품을 런칭하지 않으면 경쟁자에게 뒤쳐지는 타이밍 때문에 출시 시기가 빠르다. 또한 현대의 IT 산업에서 특히 소프트웨어 개발에 적용되는 애자일 같은 개발프로세스. 쉽게 말해 제품 출시후 지속적인 피드백을 받고 반복 테스트를 거쳐 다시 업그레이드 하는 방식의 모델을 선택하기 때문이다. 간단히 말해서, 빨리 내놓고 욕먹고 보완해서 또 내놓고 하는 걸 반복한다는 말이다. 

 

이렇게 보면, 결론적으로 지금 현재는 딱히 어느것이 우월하다고 보기는 어렵다고 생각한다. 현재 주류를 이루는 두 회사는 쌍방간의 경쟁을 통해서 일정부분 상대의 장점을 받아들이고 과거보다 낳은 성능을 보여주고 있다고 생각한다. 차이점이나 성능보다도 두 회사의 패러다임이 근본적으로 다르다고 본다. 운영 플랫폼과 사용자 인터페이스 측면에서는 많이 다르다고 생각하는데, 애플은 직관적인 사용법을 강조하면서 자사의 제품군에 폐쇄적인 최적화를 하는 모습이고 구글은 다양한 제조사와 높은 하드웨어 성능, 그리고 휴대기기, 노트북, 가전제품까지 다양한 제품에 적용하는 범용성에 초점을 맞추는 것처럼 보인다.

 

 

2010/10/21 - [Think something] - 아이폰을 꼭 써야 하는가

 

2012/06/09 - [Life story] - 삐삐부터 휴대폰 그리고 스마트폰

 

안드로이드 계층구조

참고 링크1 http://blog.naver.com/rediblue?Redirect=Log&logNo=120106342545

참고 링크2 http://blog.naver.com/ilmare8619?Redirect=Log&logNo=70148317072

참고 링크3 http://rmawkjhd.blog.me/50139560066