초 간단 정리(과연orz).
위의 정리를 읽고 이해가 영 안 된다 싶으신 분들을 위해 아래에 적당히 정리했으니 참고하시기 바란다.
OS, 운영체제, 운영체계
OS에 대한 이야기는 책 한 권을 꼼꼼히 읽어도 이해가 갈락말락할 정도로 상당히 방대한 이야기이다. OS에 대한 책을 보면 항상 컴퓨터의 역사부터 외계어로 진을 빼 놓는데, 일반인 수준에서는 어렵게 생각할 것이 없겠다.
컴퓨터는 하드웨어(Hardware, H/W)와 소프트웨어(Software, S/W)의 협력으로 동작한다. 하드웨어가 물리적 연산장치, 즉 손에 잡히는 무엇이라면 소프트웨어는 일반적으로 디지털 형식으로 저장된 데이터나 컴퓨터에 의해 읽고 쓸 수 있는 정보들을 의미한다. 흔히 얘기하는 '프로그램'이라는 것이 소프트웨어고, 이 소프트웨어를 동작시키는 물리적인 장치가 하드웨어라고 보면 되겠다.
OS는 하드웨어와 사용자 사이에서 통역을 담당하는 소프트웨어라고 보면 된다. 컴퓨터는 기계어라고 불리는 사람이 알아먹기 매우 까다로운 말을 쓴다. 이 기계어는 사용하는 프로세서(흔히 얘기하는 CPU나 코어)에 따라 다르다. 사용자가 이 언어를 이해해서 컴퓨터를 동작시키는 것은 매우 어려운 일이다. 그래서 OS는 사람이 비교적 이해하기 쉬운 언어, 프로그램 작성자가 쉽게 이해하고 사용할 수 있는 인터페이스를 통해 OS 위에서 동작하는 프로그램을 작성할 수 있도록 지원하고, 시스템 전체의 효율을 높히고 사용자가 사용하기 편한 다양한 기술을 접목하여 제공한다.
전체적인 그림으로 보면 다음과 같다.
사용자는 응용프로그램을 실행시켜 다양한 입력장치를 통해 컴퓨터에게 명령을 내린다. 응용프로그램은 OS에서 제공하는 인터페이스(API1 )만 사용하여 작성되는데 직접 하드웨어를 동작시키지 못하고 운영체제에 하고자 하는 일을 요청한다. OS는 하드웨어 드라이버(혹은 펌웨어라고 부르는 것)을 통해 각 장치의 상태나 사용 가능 여부를 확인하고, 요청한 응용프로그램이 사용 가능할 경우 역시 API를 통해 사용할 수 있게 해 준다. OS는 여러 프로그램이 요청하는 일을 잘 관리하여 시스템이 효율적으로 돌아갈 수 있도록 하고, 사용자가 원하는 결과를 얻을 수 있도록 조율하는 역할을 한다.
하드웨어는 하드웨어 드라이버를 통해 요청된 일을 처리한다. 그리고 처리된 결과를 OS에게 알려준다. 그러면 OS는 역시 API에 정의된 대로 응용프로그램에게 하드웨어에서 처리한 결과를 알려주고 응용프로그램은 이것을 사용자가 알기 편한 형태로 바꿔서 보여준다. 우리가 흔히 UX(사용자 경험)이라고 하는 것은 사용자와 응용프로그램 사이에서 일어나지만, 좋은 UX를 위해서는 각 단계별로 소홀할 수 없다.
Platform(플랫폼)
이를테면 애플의 아이팟 터치, 아이폰, 새로 나온 아이패드의 경우 같은 플랫폼이라고 본다. 맥OS에서 애플에서 제공하는 SDK2 와 개발 도구(IDE3 와 컴파일러4 )를 통해 앱을 개발하고 이것이 아이팟터치, 아이폰, 아이패드에 일관되게 적용되기 때문이다. 구글의 안드로이드도 OS이면서 플랫폼이라고 할 수 있으며, 삼성의 바다(Bada)의 경우는 OS는 아니지만 일종의 미들웨어5 로 삼성에서 제조하는 모든 핸드폰에서 실행 가능한 응용프로그램 개발의 일관된 방법을 제공하므로 바다 플랫폼이라고 부를 수 있겠다. 마찬가지로 노키아의 심비안6 이라던지 퀄컴의 BREW7 , 심지어 소니의 플레이스테이션 같은 게임기도 하나의 플랫폼으로 볼 수 있다.
즉 플랫폼은 OS를 포함하는 보다 넓은 개념으로
개발자 입장에서 보면 일관된 응용프로그램 개발/실행 환경을 제공하는 모든 하드웨어, 소프트웨어 구성을 의미하고
사용자 입장에서는 일관되고 익숙한 방식으로 설치하고 사용할 수 있는 프로그램을 제공하는 하드웨어, 소프트웨어 구성을 의미한다고 봐도 큰 무리는 없을 것 같다.
최근에 삼성에서 프로모션하는 바다 플랫폼의 경우 OS로 잘못 알고 있는 경우가 많은데 구조상 바다는 OS가 아니고 소프트웨어 플랫폼의 일종으로 볼 수 있다. 컨셉은 대단하고 잘 만들었을 경우에 파급력도 상당하겠지만 관련 개발자의 말을 종합해보면 중장기적인 안목으로 차근차근 준비되고 있는 것 같지는 않다(사공이 너무 많고 이해 관계자가 너무 많다고 해야할까). 중장기적인 안목이 없다는 것은 바다가 지향하고자 하는 바가 담긴 다이어그램 하나 구하기 힘들다는 것에서도 쉽게 알 수 있다. 상당히 뜬구름 잡는 이야기를 하고 있다. 삼성의 수억 대의 피쳐폰 위에 올라가는 프로그램을 만들 수 있는 플랫폼처럼 소개하더니 어느 순간에 스마트폰을 위한 플랫폼으로 둔갑하고, 이번 S8500 Wave폰의 경우 바다 플랫폼은 어디로 가고 핸드폰 하드웨어 소개만 열심히 하고 있다. 급할수록 차근차근 준비할 필요가 있는데...
본 내용은 마하반야의 기본 전공 지식을 바탕으로 보다 신뢰도 높은 정보 제공을 위해 위키피디아와 구글링을 바탕으로 정보를 가다듬었음을 밝힙니다. 영어에 익숙하신 분들은 영문 위키피디아에서 보다 자세한 정보를 얻을 수 있을 것이고, 조금만 깊이 들어가도 외계어가 난무하기 때문에 그나마 복잡한 이야기는 많이 덜어내었습니다. 그리고 깊이있는 내용은 저도 다시 책 들여다봐야 하고-_- 그 내용을 쉽게 설명할 자신도 없고...
ps1. 잘못된 정보나 추가 정보 언급은 언제나 환영.
ps2. 얘기하다보면 깊게 들어가서 중간에 적당히 자르고 적당히 대충 설명한 부분도 있음.
ps3. 문외한에게 얼마만큼 설명이 될지 잘 모르겠음. 잘 이해가 안 되면 댓글로 질문하면 아는 한도에서 답변 or 본문 보충 하겠음.
2010년 2월 16일 작성.
- API는 OS 설계/제공 업체에서 일부 API를 응용프로그램 개발자에게 공개하지 않는 경우도 있다. 대부분은 보안, 안정성을 이유로 제한하는 경우거나 기능이 미비해서 아얘 사용하지 못하도록 숨겨놓는 경우도 있다. [본문으로]
- Software Development Kit 으로 소프트웨어 개발 키트라고 한다. 응용프로그램 개발을 위해 OS에서 API를 제공하듯 플랫폼에서는 쉬운 개발을 위해 SDK를 제공하는 경우가 흔하다. SDK는 OS의 경우 API일수도 있고 API를 조합해 만든 더 편리한 무엇일 수도 있다. [본문으로]
- Integrated Development Environment로 통합 개발 환경 정도로 번역되어 사용된다. 프로그램 개발을 위한 프로그램, 플러그인, 프로그램 수정을 위한 장치나 프로그램을 포함한다. [본문으로]
- 하나의 프로그램 언어를 다른 언어로 번역하는 프로그램. [본문으로]
- 서로 다른 종류의 장치, 시스템, OS, 서비스를 일관된 방식으로 처리할 수 있도록 프로그램 계층, 즉 인터페이스를 하나 더 만들어 놓은 것. [본문으로]
- 노키아에서 만든 핸드폰 OS의 일종 [본문으로]
- 퀄컴에서 만든 CDMA폰을 위한 응용프로그램 개발 플랫폼. 현재 GSM에도 확대 적용되어 있음. [본문으로]

































