"저는 하도 플랫폼 이야기를 자주 하시길래 서버 관련 업무를 하시는 줄 알았어요."
라고 하는 것 아닌가?
처음에는 무슨 말인지 몰라서 멈칫 했는데, 조금 더 생각해보니 강연을 요청한 업체에서 주업무로 하는게 서버쪽 업무이고, 그러다보니 서버 플랫폼에 대한 이야기를 자주 해서 SI 업계의 서버 플랫폼과 혼동하고 있다는 것을 이해하게 되었다. IT 업계가 새로운 단어가 계속 생기기도 하고, 원래 의미와 변형이 되는 경우도 많고, 각 도메인에 따라 동일한 단어가 다른 의미로 쓰이는 경우가 많아 간혹 이런 오해를 낳곤 한다. 요즘 다른 블로그에서도 모바일 플랫폼 이야기를 많이 언급하는 것 같아 이번 기회에 기본적인 정의를 해보고자 한다.
예전에는 모바일 플랫폼은 정확하게는 Middleware Platform에서 Middleware를 생략하고 이야기하는 것이었다. 그렇다면 Winodws Mobile을 위시하여 안드로이드나 iPhone 등에서 사용되는 것이 기술적으로 'Middleware Platform' 이라고 불릴 수 있는 것인지 다소 혼동스럽다. 언론 매체에서도 대부분 위의 기술들을 소개할 때 제목에는 '플랫폼'이라는 단어를 사용하다가, 본문에서는 OS와 비슷한 것이라고 소개된 것을 종종 보게 된다. 이러한 기술적인 단어의 배경을 이해하려면 일반폰(Normal Phone 또는 Simple Phone이라고 불림)과 스마트폰의 구조적인 차이점을 이해하여야 한다.
스마트폰이 요즘과 같이 비약적인 발전을 하기 전에는 모바일 디바이스는 일반폰만을 중심으로 움직였다. 이 일반폰위에서 움직이는 다양한 Middleware Platform등이 탄생하였는데, 대표적인 것으로는 Java VM이나 BREW, WIPI, Mocha, 인피니온 등이 있다. 아래는 WIPI의 개념적 구조도이다.
대부분의 Middleware Platform은 위와 같은 구조를 가진다. 이중에서 2가지 Layer가 중요하다. '단말기 기본 S/W'는 가장 기본적인 기능인 음성통화를 가능하게 해주는 통신 기능과 OS를 말한다. HAL은 여러 가지 기능을 제공하는 API로, 하단의 단말기 기본 S/W와 위의 Middleware platfrom(위 그림에서는 WIPI)을 연결해주는 역할을 한다. 여기에서 OS를 RTOS라고 하며, CDMA에서는 REX, GSM에서는 뉴클리어, kadak등이 사용되고 있다.
예전 Windows 3.1이 우리의 PC를 뛰어다닐 때, Windows 3.1이 OS냐 아니냐에 대한 학술적인 접근이 많았다. 그럴 때 주로 이야기 되었던게 OS의 필수 3요소인데, 그것은 바로 메모리 관리, Thread 관리, 파일시스템 지원 이다. 이러한 OS의 3대 요소 중에 Middleware Platform이 하는 것은 없다. '단말기 기본 S/W'안에 있는 RTOS가 모두 이러한 일을 담당하고 Middleware Platform은 HAL을 통해서 OS의 API를 접근할 뿐이다.
그렇다! Middleware Platform과 Mobile OS는 다르다. 적어도 일반폰(Normal Phone)에서는..
하지만, 이러한 공식이 스마트폰으로 오면 상황이 달라진다. 스마트폰은 기본적으로 멀티 태스킹을 지원하고 다양한 멀티미디어 작업을 해야 하는데 현재의 RTOS로는 한계가 있었다. 그러다 보니 PC의 운영체제들을 아키텍쳐는 유지하고 커널을 바꾸는 것을 기본으로 모바일에 최적화를 하기 시작하였다. 이러한 노력들로 MS는 Windows Mobile을, 애플은 아이폰을, LiMO을 Linux를 이용해서 플랫폼을 개발하고 제품에 상용화 하였다. 아래는 'Linux 기반의 모바일 플랫폼 동향 #1'에서 소개했던 LiMo 플랫폼의 구조이다.
그림을 보면 알겠지만 Linux Kernel이 직접 H/W를 접근 제어를 하고 있다. HAL도 필요가 없다. 'Middleware Platform'에서 'Middleware'가 아닌 'Platform'의 구조인 것이다. Linux나 Windows 그 자체가 OS이며 메모리, 쓰레드, 파일시스템관리를 모두 지원하는 것이다. 현재 개방형의 흐름을 타고 개발되는 모든 플랫폼은 스마트폰을 타겟으로 하고 있으며, 위와 비슷한 구조를 가지고 있다. 정리를 해보자면,
스마트폰에서의 Platform은 OS 이다.
기술적인 관점에서 이야기하자면 이렇게 간단하다. 요즘 언론에서 언급되는 대부분의 플랫폼은 후자에 해당하므로 굳이 플랫폼이라는 단어 대신에 OS라는 단어를 써도 무방하다. 한데, 사람의 버릇이라는게 쉽사리 바뀌지 않는다. Normal 폰 때부터 불러왔던 'Platform'이라는 단어가 쉽사리 'OS'로 바뀌지가 않는다. 게다가 요 근래의 'Platform'은 OS만 제공하지 않는다. 그 위에 다양한 Interface와 Component, Drawing Engine, Application SDK 등을 같이 제공을 하다 보니 OS로만 부르기에는 부족하게 느껴진다.
이런저런 이유로 모바일에서는 Mobile OS라는 단어보다는 Mobile Platform이라는 단어가 일반적이 되고 있고 바뀌지는 않을 것 같다. 뭐라고 불리운들 어떠하리, 시장의 흐름에 따라 준비를 하고 BM을 찾는 것이 중요하겠지...
Comments List
스마트폰에서든 노말폰에서든 플랫폼과 OS는 구분된다고 생각하구요.
LiMO와 안드로이드는 둘 다 리눅스 OS를 기반으로 하고 있지만 LiMO와 안드로이드를 OS라고 하지 않고 플랫폼이라고 하지요.
예를 들어 안드로이드를 리눅스 OS가 아닌 WinCE나 REX위에 동작하도록 구글이 릴리즈 할 수 있지 않겠습니까? 플랫폼이 동작하는 OS가 고정될 수 도 있고 그렇지 않을 수도 있지요.
노아님.. 리플 감사합니다. ^^
첫번째 부분은 이미 저도 본문에서 언급한 부분이고..
두번째 부분은 전 생각이 좀 다릅니다. 안드로이드 자체가 Linux OS와 GTK를 기반으로 하고 있는데 그 상위 API를 다른 OS 기반으로 바꾼다는건 현실적으로 문제가 있다고 보여지네요. 그런 개념이라면 사실 OS도 Core 커널 위에 많은 레이어가 있는데요. XP위에 Ubuntu가 돌 수도 있겠죠. 기술적인 개념과 현실의 차이는 분명히 있다고 보여집니다. 어쩌면 구분을 위한 구분이 되어버리죠.
노아님께서는 LiMo를 OS라고 하지 않는다고 하셨죠? 과연 그럴까요?
아래는 LiMo의 홈페이지(http://www.limofoundation.org/) 메인 페이지에 있는 내용입니다.
<LiMo Foundation은 모발일 장치를 위한 최초의 진정한 개방형의, 하드웨어로부터 독립적인, 리눅스 기반 운영 체제를 만드는 데 헌신하는 업계 컨소시엄입니다>
LiMo 스스로도 운영체제를 만들기 위한 공동체라고 스스로를 정의하고 있답니다.
음. OS를 어디까지 생각하느냐의 차이 같은데요.
안드로이드는 이렇게 정의하는 군요.
Android is a software stack for mobile devices that includes an operating system, middleware and key applications. This beta version of the Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.
저는 OS를 리눅스던 윈도우던지 간에 커널 레벨과 커널을 동작시킬 수 있는 system call이나 system API로 생각합니다.
LiMO도 리눅스 커널 위에서 동작하고 안드로이도 리눅스 커널 위에서 동작하지요. 안드로이드는 OS를 포함한 소프트웨어 스택이라고 말하고 있습니다.
LiMO의 PDF를 잠시 보니까 Middleware OS라는 말을 쓰네요. LiMO 진영은 OS의 의미를 넓게 보는 것 같습니다.
(http://www.limofoundation.org/images/stories/pdf/limo%20foundation%20overview%20-%20may08-ext.pdf)
리눅스 커널을 사용하는 LiMO나 안드로이드를 OS라고 칭하면 하부에 존재하는 리눅스 커널은 어떻게 불러야 할까요? 리눅스 커널이 OS인데요. 저는 이런 관점에서 LiMO나 안드로이드는 리눅스 기반의 플랫폼이라고 부르고 싶네요.
이렇게 용어의 일치를 보기가 어려우니 많은 사람들이 플랫폼과 OS를 혼용하는 것 같기도 하구요. --;
네.. 노아님 말씀이 맞습니다. 관점의 차이이기도 하고 범위의 문제이기도 하죠. ^^
괜찮으시다면 한번 더 제 의견을 말씀 드리고 싶습니다. 사실은 노아님의 생각이나 제 생각이 중요한 것은 아닙니다. 어느 정도가 더 일반적이냐가 중요한 것이라고 생각합니다.
OS가 커널과 System Call 이라고 생각하시고 리눅스 커널을 뭐라고 불러야 할까를 말씀 하셨는데요. 리눅스 커널은 '커널'이라고 부르면 됩니다. ^^
제 말씀은 굳이 '커널'이라는 단어가 있는 것은 '커널'이 OS의 전부가 아니고 OS의 한 부분이기 떄문이라는 것입니다. Linux는 공개 소프트 웨어이고 커널 위에 사실 다양한 엔진들이 같이 올라가서 OS를 형성합니다. 노아님의 의견은 사실 Linux라는 한 제품만을 가지고 이야기하면 맞는 말 같지만 하나의 회사에서 폐쇄적인 개발을 하는 일반 OS에서는 현실성이 떨어집니다.
MS-DOS에서도 'COMMAND.COM'은 OS의 한 부분으로 구분을 하지요. Windows Mobile이라고 이야기 하면 모든 유틸리티를 포함을 합니다. 아이폰의 맥 OS X의 경우도 그렇지 않을까요?
관점의 차이는 맞습니다만, 좀더 General 한 방향으로 접근해야 하지 않을까... 하는게 제 소견입니다.
리플 주셔서 감사합니다. ^^
제가 궁금했던 부분에 대한 토론이 정확히 있어서 기쁘네요...
제 생각에는 이렇게 부르면 어떨까 생각됩니다.
안드로이드 solution = 안드로이드 platform + 리눅스 OS
(부르는 이름이 하나 더 생겨서 복잡할까요?? ^^)
그리고 개인적인 의견으로는 안드로이드 플랫폼 + 다른 RT OS 로 얼마든지 가능할 것이라 생각됩니다.. (그리고 가능해야만... 잘 만든 플랫폼이지 않을까... 하는 생각도..)
하지만 안드로이드가 open source /개방형 을 표명하고 있는 한 현재로써는 안드로이드 솔루션으로는 Linux 와의 궁합이 가장 맞지 않나 생각합니다.
p.s. 실은 플랫폼이라는데... Rex 위에 하나 만들어서는 못올리나? 라고 아침에 생각해서 자료 찾아 보고... 현재까지의 제 결론입니다. " 가능은 하겠지만... 안드로이드가 표방하는 이념에 대해서 의미는 없겠구나.. "
네.. 기술적인 접근으로야 모두 가능하죠. 말씀 하셨다시피 사업적인 의미가 있는지가 관건일 것 같네요. ㅎㅎ
이런 개념의 차이를 들어보는 것도 참 재미있고, 저도 한번 개념정리를 하는 계기가 되네요...
개념이야 항상 가변하는 것이고, 이런 가변 언어들은 광의의 개념과 협의의 개념을 동시에 내포하고 있다고 생각합니다. 특히 IT용어는 기술 변화 속도에 대응하여 변하는 것 같구요.
패킷, 프레임, 변조, 네크워크, 시스템, 등등.... ... 이라는 단어도 세부 종사자마다 조금은 다른 의미를 부여하지 않을까 합니다. 언급해주신 것과 같이 좀더 General 한 방향으로 접근하는 것이 최선이라는 점 좋은 말씀이네요~
그런의미에서 제가 갖는 임베드디 단말분야에서의 OS와 플랫폼의 의미에 대해 적어보자하며 개인적인 생각으로 보시면 될 듯합니다. 저는 소외된 H/W에 대한 부분을 플랫폼의 개념에서 커버해 보고자 합니다.
먼저 OS는 수직적인 소프트웨어의 스택 구조들이며, 플랫폼을 구성하는 여러 LAYER중에서 독립적인 하나의 계층으로 생각합니다.
플랫폼의 정의에 있어서는 다소 다를 듯 한데... 저는 플랫폼을 "H/W 플랫폼 + S/W 플랫폼 + 알파"라고 다소 광의의 개념으로 정의해 봅니다. 그리고 플랫폼을 OS보다 넓은 의미로 보고 있구요...
RTOS, HLOS별 플랫폼을 비교하자면... HLOS기반의 플랫폼이 RTOS 기반의 플랫폼 보다 더 많은 LAYER층으로 구성될 거라 생각하며, OS자체에 있어서는 HLOS의 커버리지가 RTOS의 커버리지보다 넓다고 보입니다. HLOS는 단순한 미들웨어 이슈가 아닌 S/W와 어플까지의 통합 개념이라 볼 수도 있으므로....
통일된 LAYER의 구분은 없으나, 작게는 4계층(H/W, OS, M/W, APP) 넓게는 (H/W, Driver, OS, M/W, Software, APP)정도로 쪼개 봤습니다.
왜 플랫폼을 광의의 개념으로 해석했는지에 대해 물어보신다면.."플랫폼"의 가장 제너럴한 목표가 재사용성 증가 및 보편화의 추구란 점이 아닐까란 점 때문이며, 이는 어느 부분이 공통적으로 중요한 것인지를 생각해보게 합니다. 즉 최적의 소프트웨어를 스택하는 것도 중요하지만, H/W의 고려 또한 중요한 부분으로 보이며 이 또한 보편성을 가져야 하기 때문입니다. 예를 들면 구글 안드로이드라는 HLOS를 ARM에 포팅한다고 해보죠.. 달빅 커널도 중요하고 자바 버추얼 머신도 중요하지만... ARM9, ARM11, ARM COTEX 중 어떤 ARM에 포팅하는냐도 중요할 거라 생각하며, 플랫폼이라 하면 이런 부분에 대한 프로토콜들을 범위를 미리 설정하고 추상적인 구조를 정의해 놓아야 하는 것이 아닌가 힙니다.
기술적 BASE가 다소 부족하다 보니... 엉뚱하게 들리시더라도 이해를 ...
제가 지금까지 플랫폼을 너무 S/W와 미디어적인 측면으로만 보고 있었다는 생각이 드네요. 맞습니다. 일반 PC환경과 달리 모바일에서는 하드웨어도 플랫폼에 큰 축에 들지요. CPU, GPU, A-GPS 등 다양한 요소들이 플랫폼의 한 축을 담당하는 것 같습니다. 좋은 리플 감사드립니다.
개념적으로 사람으로 치자면, 사람 그 자체(생물적)는 OS, 사람이 나타내는 성격,특성,능력 등등이 플랫폼이 아닐까요, 모바일 에서는 os가 특성을 나타내는 경우(iPhon OS가 대표적,노키아 심비안)가 많으니
구분이 모호해지는 경향이 강해지는 특성이 있으니..
한 10번 읽었는데...국어공부부터 다시했으면 하네요...
아래 부분...정말 무슨 말인지 모르겠네요.
=====================================
대부분의 Middleware Platform은 위와 같은 구조를 가진다. 이중에서 2가지 Layer가 중요하다. '단말기 기본 S/W'는 가장 기본적인 기능인 음성통화를 가능하게 해주는 통신 기능과 OS를 말한다. HAL은 여러 가지 기능을 제공하는 API로, 하단의 단말기 기본 S/W와 위의 Middleware platfrom(위 그림에서는 WIPI)을 연결해주는 역할을 한다. 여기에서 OS를 RTOS라고 하며, CDMA에서는 REX, GSM에서는 뉴클리어, kadak등이 사용되고 있다.
예전 Windows 3.1이 우리의 PC를 뛰어다닐 때, Windows 3.1이 OS냐 아니냐에 대한 학술적인 접근이 많았다. 그럴 때 주로 이야기 되었던게 OS의 필수 3요소인데, 그것은 바로 메모리 관리, Thread 관리, 파일시스템 지원 이다. 이러한 OS의 3대 요소 중에 Middleware Platform이 하는 것은 없다. '단말기 기본 S/W'안에 있는 RTOS가 모두 이러한 일을 담당하고 Middleware Platform은 HAL을 통해서 OS의 API를 접근할 뿐이다.
그렇다! Middleware Platform과 Mobile OS는 다르다. 적어도 일반폰(Normal Phone)에서는..
하지만, 이러한 공식이 스마트폰으로 오면 상황이 달라진다. 스마트폰은 기본적으로 멀티 태스킹을 지원하고 다양한 멀티미디어 작업을 해야 하는데 현재의 RTOS로는 한계가 있었다. 그러다 보니 PC의 운영체제들을 아키텍쳐는 유지하고 커널을 바꾸는 것을 기본으로 모바일에 최적화를 하기 시작하였다. 이러한 노력들로 MS는 Windows Mobile을, 애플은 아이폰을, LiMO을 Linux를 이용해서 플랫폼을 개발하고 제품에 상용화 하였다. 아래는 'Linux 기반의 모바일 플랫폼 동향 #1'에서 소개했던 LiMo 플랫폼의 구조이다.
두개 층이 중요하다.
'단말기 기본 소프트웨어'는, 음성통화를 가능하게 해 주는 기본 기능인 통신기능과 OS 를 말한다.
여기에서 OS 를 RTOS 라고 하며 CDMA 는 REX, GSM 은 뉴클리어, kadak 등을 쓴다.
HAL-Handset Adaption layer 는 여러 기능을 제공하는 API 로 아래쪽 단말기 기본 소프트웨어와 위의 미들웨어 플랫폼(WIPI)를 연결해 주는 역할을 한다.
윈도 3.1 이 OS 냐 아니냐 에 대한 학술적 접근이 많았다. 주로 이야기 되었던 게 OS 필수 3요소로 메모리 관리, 쓰레드 관리, 파일 시스템 지원 이다. 미들웨어 플랫폼은 이러한 관리를 하지 않는다.
미들웨어 플랫폼은 HAL 을 통해 OS 의 API 에 접근할 뿐이다.
따라서 미들웨어 플랫폼과 모바일 OS 는 다르다. 적어도 일반 폰 에서는.
하지만 이러한 공식이 스마트폰으로 오면 상황이 달라진다. 스마트폰은 기본적으로 멀티태스킹을 지원하고, 다양한 멀티미디어 작업을 해야 하는데 현재 RTOS 로는 한계가 있었다.
그러다 보니 PC 운영체제를 아키텍처는 유지하고 커널을 바꿔, 모바일에 최적화 하기 시작하였다.
--------------------------
저도 이해하기 어려워서 정리를 해 봤습니다.
(모비젠님께서 불쾌하시다면 삭제하시거나 비밀글로 바꾸셔도 됩니다)
저 궁금해서 그런데,
만약 애플이 아이폰에
WIPI를 탑재하게 되면
MAC OS를 포기해야 하는건가요?
좀 헷갈리는게
위피가 무선인터넷 접속부분에서 관여하는 것이라(플랫폼?)
아이폰에서 그것을 탑재 할 경우
MAC과 WIPI와의 호환성이 문제라고 이해하고 있었거든요.
답변 부탁드릴께요. ㅎㅎㅎ
Mac OS 위에 WIPI를 시물래이션 시킬 수 있겠죠.
쉽게 생각해서, 윈도우 개발환경에서의 위피 에물래이터도 있잖아요?
Mac OS를 포기해야 한다는 것이 어떤 이야기인지 좀 이해가 안가구요. WIPI 탑재해서 WIPI 개발을 하게 되는 경우 Mac OS API 사용/접근을 포기한다는 얘기이신가요?
그렇다면 이건 정해진 답이 없는거 같습니다. SW는 주무르기 나름이니, 그렇게 만들수도 있고 안 그럴수도 있구 하니까요. ^^
제가 20여년 전에 MSX 컴을 처음 접하게 되었는데, 이후 IBM-PC로 넘어오면서 DOS을 알게 되었구요. OS 의미가 시스템 운영하는 것이잖아요? 그러다 보니 하드웨어쪽 처리 하는 부분을 커널이라고 하고요. 요즘 OS들은 하드웨어 뿐만 아니라 여러 어플 관리를 하다보니 쓰레드 처리도 해야하고 등등 해서 구분이 애매모호 하거나 플랫폼과 OS의 구분에서 겹치는 부분들이 있는거 같네요.
제 생각은 전적으로 노아님 의견에 동의 합니다.
커널이 OS 의 일부분이라기 보단 OS 의 핵심적 요소로 보셔야 합니다.
본문에서 언급하셨던 OS의 필수요소 메모리 관리, Thread 관리, 파일시스템 지원 을 바로 커널이 담당하기 때문에 OS = 커널 이라 봐도 크게 무리가 없습니다.
플랫폼과는 구분 지어지는게 당연하다고 생각됩니다.
간단히 예를들어
물론 OS => 커널 + 플랫폼
커널 + 플랫폼 => OS 둘을 바꿔말해도 부자연스럽지 않습니다만.
현재처럼 애매모호한 기준을 적용해도 OS => 플랫폼 은 될수있어도
플랫폼 => OS는 성립이 되지 않습니다.
역이 성립해야 명제는 참이 될수 있죠.
그렇기 때문에 구분해서 생각해야 합니다.
설명이 비교적 잘 되어 있는데, OS의 역활에서 원래의 4대요소 가운데 하나인 입출력장치 관리가 빠져있네요. 각종 다양한 입출력 장치를 연결해주는 장치드라이버와 관련되어 있는 부분일텐데... 그러나, 모바일을 말하는 것이니까 이미 완성형으로 맞춰서 나오는 제품이라 그런가, 본문에서는 장치관리 부분은 일부러 누락 시키신 듯??