임베디드 시스템

큰숲백과, 나무를 보지 말고 큰 숲을 보라.

임베디드 시스템은 디지털 데이터를 전문적으로 처리하는 마이크로컴퓨터(또는 마이크로컨트롤러)가 탑재된 컴퓨터 시스템 전반을 말한다.

현대 문명을 이루는 대부분의 기계는 임베디드 시스템의 제어를 받아 복잡한 동작을 수행하며, 사물인터넷, 스마트폰 및 스마트 워치 등의 모바일 플랫폼, 키오스크 시스템 같은 하위 분류로 나뉜다.

특징[편집 | 원본 편집]

주기적으로 작동하는 타이머 인터럽트 기반 시스템과 단발성 신호인 이벤트에 반응하는 시스템으로 분류할 수 있다.

임베디드 시스템은 다음 4가지 특징을 만족한다.

  • 자연 법칙 - Input - Processing - Output 과정을 반복하며 외부 세계의 변화에 감지해 작동 결과를 피드백한다. 범용 컴퓨터와 달리 이 작업을 수행할 제어 모델에 따라 임베디드 시스템의 용도가 철저히 고정된다.
  • 실시간성 - 사용자의 안전성을 보장해야 하는 각종 의료 기기, 에어백 등의 안전 장치 등에 적용되어 입력 즉시 반응해야 하는 하드 리얼타임과 MP3 플레이어나 휴대폰 등 다소 반응이 느려도 괜찮은 소프트 리얼타임으로 구분된다.
  • 제약 조건 - 특정 성능이 보장되는 선에서 최대한 저전력, 저발열로 동작해야 하며, 가혹한 이용 환경까지 감안해 기기의 내구성과 성능을 최적으로 설정한다.
  • 신뢰성 - 주어진 조건에서 반드시 규정된 시간 내에 요구된 기능을 완료해야 하므로 버그를 용인할 상황이 절대 있어선 안 된다.

임베디드 시스템에 기본 탑재된 소프트웨어는 흔히 하드웨어와 소프트웨어 사이에서 작동한다는 의미에서 펌웨어(firmware)라고 부른다. 보통 펌웨어로 실시간 응답이 가능한 RTOS(Real-Time Operating System) 종류를 많이 쓴다. 범용 운영체제는 요구 성능이 상당히 무거워 리눅스라도 임베디드 시스템에서는 각종 잡다한 기능(예: 시스템에 탑재할 예정이 없는 장치의 디바이스 드라이버 소프트웨어, Gnome이나 KDE 같은 범용 GUI Shell, 웹 브라우저 같은 일반적인 응용 소프트웨어 및 그런 소프트웨어들을 위한 API 등)을 쳐내고 핵심 기능만 남기는 경량화 작업을 거친다. 극단적으로는 센서 데이터 처리 등에 보통의 소프트웨어는 사용하지 않는 높은 우선순위의 처리를 특정 소프트웨어에게만 프로세스 스케줄링 과정에서 부여하거나 아예 모든 태스크에 실행 시간과 휴면 후 다시 실행할 주기를 수동으로 지정하는 태스크 선점의 수동 제어 등 PC에서 쓰지 않는 기법을 활용하기도 한다.

개발 업계[편집 | 원본 편집]

임베디드 업계도 SI 업계처럼 업무량이 많은 편이다. 제품 요구 사항 구현에 버그가 없어야 하니 코드를 짤 때 꼼꼼해야 하고, 거기에 더해 빠른 작업 속도를 내야 제품 의뢰하는 제조사에게 제때 물건을 줄 수 있다. 그래서 야근 빈도가 높으며 제조사+대기업이 제품 검증을 하고 중소기업과 프리랜서 엔지니어가 코드를 짜는 원청-하청 분업 구조가 필연에 가까운데, 대한민국 내에서는 특유의 기업 내부 및 기업 간 갑질 문제가 있어서 엔지니어들의 임베디드 업계 진출은 선호도가 높지 않다. 그래서 고효율의 작업에 필요한 능숙한 엔지니어들이 의외로 희귀하며 대한민국 IT 기업의 세계적 규모의 소프트웨어 플랫폼 장사가 전무한 이유로 이걸 지적하는 의견도 많다.

국내 관련 공인자격증으로 임베디드기사 국가기술자격이 있다. 하지만 전자계산기기사 쪽이 인지도가 더 높고 임베디드기사를 인정하는 기업 수가 거의 없으며, 컴퓨터시스템응용기술사를 제외한 다른 기술사 응시가 불가능하다는 단점이 있어 응시율이 높지 않은 편이다.