임베디드 소프트웨어’는 마이크로프로세서 위에 내장되어 산업 및 군사용 제어기기, 디지털정보 가전기기, 자동센서장비 등의 기능을 다양화하고 부가가치를 높이는 핵심 소프트웨어로서, 임베디드 시스템 소프트웨어, 임베디드 미들웨어, 임베디드 기본 응용, 임베디드 소프트웨어 개발 도구 등을 포함한다. 다시 말해, 임베디드 소프트웨어는 우리가 일상에 쉽게 접하는 휴대폰, TV, 세탁기, 기차, 비행기, 엘리베이터 등의 제품 안에 내장된 임베디드 시스템에서 하드웨어를 제외한 나머지 부분이라고 말할 수 있다. 예를 들어, Smart TV에 내장된 인터넷 접속 기능, 멀티미디어 처리 기능, 전자상거래 기능 등을 제공하는 소프트웨어가 임베디드 소프트웨어이다.
임베디드 소프트웨어는 초기에는 간단한 제어 프로그램 만으로 산업용 기기를 제어하는 데 그쳤으나, 최근에는 멀티미디어 처리와 같은 점차 복잡한 기능을 요구하면서 임베디드 운영체제를 사용하기 시작하였고, 멀티태스크, 네트워크 기능을 제공하는 임베디드 운영체제를 탑재하여 인터넷을 통해 제품에 대한 감시가 가능해졌으며, 나아가 임베디드 시스템에 탑재된 유무선 통신망을 통해 수시로 업데이트할 수 있는 BREW, 모바일닷넷 등의 임베디드 소프트웨어 플랫폼이 출현하기에 이르렀다.
임베디드 소프트웨어는 다음과 같은 특성을 가진다.첫 째, 임베디드 소프트웨어가 실행되는 시스템의 용도에 따라 연성 혹은 경성 실시간 처리를 지원하여야 한다. 예를 들어 무인항공기에 사용되는 비행제어시스템, 항법시스템 등에 내장되는 임베디드 소프트웨어는 무인 항공기 제어에 허용되는 시간 내에 작업을 처리하지 않으면 큰 손실을 초래할 수 있다.둘 째, 소프트웨어 오동작 및 작동 중지가 허용되지 않는 임베디드 시스템에서는 고도의 신뢰성이 요구된다. 원자력 발전, 항공기 제어, 미사일 등과 같이 mission-critical한 임베디드 시스템에서는 소프트웨어 오동작 또는 불시의 작동 중지 등의 심각한 결과를 초래한다.셋 째, 임베디드 시스템은 크기, 가격 및 발열 등을 이유로 제한된 하드웨어 자원으로 구성되므로 임베디드 소프트웨어는 경량화, 저전력 지원, 자원의 효율적 관리 등의 하드웨어에 최적화되는 기술을 지원하여야 한다.넷 째, 범용 데스크탑 또는 서버에서 실행되는 패키지 소프트웨어와 달리 특정 시스템의 실행을 목적으로 개발되는 소프트웨어라는 점에서 차이가 있다.
일반적인 PC에서 프로그램을 개발하는 것과는 달리 임베디드 시스템의 개발에서는 임베디드 시스템에서 직접 프로그램을 개발하기에는 기기의 성능이나 저장장치의 효율성 때문에 다른 개발용 PC에서 소스코드 수정 및 컴파일을 하여 타겟 시스템에 프로그램을 옮겨 실행하는 형태로 개발을 하게 된다. 즉, 호스트 시스템이라 불리는 개발용 PC에 필요한 프로그램과 환경이 구성되어 있어서 타겟시스템에 올라갈 모든 프로그램을 호스트 시스템에서 만들어지게 된다. 이러한 과정을 "크로스 개발"이라고 하며 호스트에서 타겟에 올라가는 프로그램을 컴파일 할 때 이를 크로스 컴파일이라고 한다.
최근의 임베디드 시스템 설계에서 중요한 큰 역할을 하는 것이 전력관리이다. 특히 배터리를 사용하는 PDA, 휴대전화, PMP, DMB 플레이어 등에서는 전력관리의 중요성이 더 배가된다. 임베디드 시스템의 성능 요소들 중에서 시스템 속도와 같은 종류는 그 성능을 향상시킬수록 배터리 소모는 더 많아지게 된다. 그러나 임베디드 시스템의 속도 향상보다 배터리 용량의 향상이 더 더디게 발전하기 때문에 배터리 사용시간을 늘리기 위한 방법으로 전력관리 기술의 핵심으로 발전하고 있다.
Qplus는 리눅스 커널 기반의 임베디드 운영체제이다. 임베디드 리눅스 커널에서의 실시간 지원의 핵심은 시간 제약 사양의 만족을 위한 선점성(preemption)을 갖추는 것이라고 말할 수 있다. 어떤 운영체제가 실시간성을 갖는다는 것은 어떤 한 시점에 있어서 일반 태스크(작업)의 수행 도중에 실시간 처리를 요구하는 태스크가 발생했을 때, 제한된 시간 내에 그러한 태스크의 작업 수행 완료와 정확성의 보장이 함께 이루어져야 됨을 의미하는 것이다.
이 중에서도 시스템의 작업 수행 완료 시간의 보장을 위해서는 전체 시스템을 이루고 있는 각 부분에서 동기적, 비동기적 이벤트에 대해 얼마나 즉각적인 반응을 보일 수 있는지에 대한 응답성(responsibility)이 중요해지는 것이다. 그런데, 표준 리눅스 커널에 기반하여 작성된 기존 임베디드 리눅스는 실시간 지원 면에 있어서 일단 태스크가 커널 내부로 진입하게 되면 실시간 태스크가 발생한다 할지라도 그것이 즉각적으로 수행될 수 없다는 표준 리눅스 커널의 문제점을 그대로 가지고 있었다.
Qplus 커널은 실시간 지원을 위해 몇 가지의 기능을 추가 및 보완하였다. 추가된 실시간 지원 기능은 크게 선점형 커널의 지원과 락 브레이크 기능 지원의 두 가지로 나눠 볼 수 있다. 이 지원 기능을 통해 Qplus 커널에서는 표준 리눅스 커널에서 미흡했던 실시간 지원 기능을 제공할 수 있다.
음성인식 기술의 최종 목적지는 SF 영화에서 자주 보는 장면처럼 친구에게 대하듯 컴퓨터에게 자연스럽게 말을 걸어 해당 명령을 수행하는 것이다. 이것은 사용자 대부분이 인간에게 하듯 자연스러운 형태로 인간의 언어로 컴퓨터와 소통하여 원하는 결과를 얻기를 희망하고 있음을 의미한다. 현재는 기술의 한계로 이와 같은 꿈의 인터페이스를 제공할 수 없으나, 이 한계내에서 사용자의 욕구를 부분적으로 수용할 수 있는 음성인식기가 다양하게 개발되고 있다.
데이터마이닝 관점에서 문서로부터 구조화된 정보를 추출하여 데이터베이스화 시키거나 규칙을 찾아내는 것은 가장 일반적인 응용이며, 사용자가 웹상에서 문서를 찾는 것을 도와주거나 사용자 profile 의 생성 및 분석, 문서에 쓰인 자연언어 식별, 대량 DB에서 문서의 분류 및 군집화, 문서분류 정보를 이용한 문서 재해석, 신문/논문/보고서 요약, 문서 번역, 시계열 정보의 획득을 통한 시장 및 위험도 분석, 문서 색인, 문서 여과 (filtering) 및 추천 (recommendation), 대표적 키워드나 토픽의 추출, 질의응답 시스템, 대규모 문서에서의 탐색 등이 가장 대표적인 응용분야라 할 수 있다.
시맨틱웹에서는 시맨틱 태깅으로 얻어지는 의미 정보를 컴퓨터가 처리하기 쉬운 트리플 형태로 표현할 수 있다. 트리플 형태의 자원 정보 표현을 위해서 RDF (Resource Description Framework)를 사용한다. 시맨틱웹에서는 검색과 추론 기능을 통해서 컴퓨터가 이해하고 저장하고 있는 자원 및 온톨로지 정보를 활용할 수 있도록 한다. 검색 기능은 사용자가 컴퓨터에 저장되어 있는 정보를 검색할 수 있도록 하는 기능이며, 추론 기능은 컴퓨터가 온톨로지를 이용해서 새로운 정보를 유도할 수 있게끔 한다. 시맨틱웹을 이루는 RDF, 온톨로지, 태징/검색 및 추론 기능은 아래와 같이 이루어 진다.
□ 임베디드 시스템 개발은 데이터베이스 응용 프로그램이나 GUI 응용 프로그램을 개발하는 것과는 많이 다르다. 이러한 차이에는 다음과 같은 이유가 있다.
첫번째 이유는 "응용 프로그램이 개발되는 컴퓨터와 응용 프로그램이 수행되는 컴퓨터가 다르다는" 것이다. 임베디드 시스템의 전형적인 예라고 할 수 있는 핸드폰을 살펴보자. 핸드폰 안에는 전화 통화를 위한 모듈 뿐만 아니라 간단한 게임, 일정관리, 계산기 등의 다양한 응용이 존재한다. 이러한 응용들은 핸드폰에서 직접 개발되는 것이 아니라, 개발자의 컴퓨터에서 개발을 하고 시뮬레이션 과정 등을 통해 동작을 확인한 후에 핸드폰으로 옮겨서 실행하게 된다. 만약에 핸드폰 프로그램을 작성하기 위해서 핸드폰의 키패드를 이용해서 프로그램을 작성한다고 상상해 보자. 얼마나 끔찍한 일이겠는가?
두번째 이유는 "타겟 컴퓨터가 다양하며, 타겟 환경에 의존성이 강하다."라는 것이다. 일반적으로 우리들의 컴퓨터에서 작성이 되는 프로그램은 하드웨어 장비에 영향을 받기 보다는 소프트웨어 환경 (데이터 베이스, 응용 라이브러리) 등에 영향을 받는다. 하지만 임베디드 시스템에서의 개발은 하드웨어 장비를 위한 디바이스 드라이버 개발, 운영 체제 포팅 등 타겟 하드웨어의 특성에 대한 이해를 바탕으로 개발되는 경우가 많다. 따라서 개발자는 타겟에 최적화된 프로그램을 개발해야 하며, 이런 점이 개발자들에게 어려움을 부가한다.
국내 임베디드SW산업의 국민경제적 기여도 분석을 위하여 기존 404부분 산업연관표를 기준으로 19 부분으로 재분류를 통하여 임베디드SW 산업의 경제적 파급효과를 추정하였다. 2006년부터 2010년까지 임베디드SW 산업성장으로부터 발생되는 국민경제적 파급효과는 누적된 생산유발효과 63조원과 부가가치 유발효과 42조원으로 추정되었다.
--- 본문 중에서