임베디드: 두 판 사이의 차이

편집 요약 없음
4번째 줄: 4번째 줄:
거기다, 일반적인 x86 및 x64 CPU는 전력 소모도 높고 너무 고성능이다. 상대적으로 저성능에 저발열인 AVR, ARM등을 이용한 마이크로프로세서를 활용하면 저전력, 저발열인 시스템을 구성할수 있게 된다. 그만큼 절대적인 성능이 떨어지는 것은 당연지사.
거기다, 일반적인 x86 및 x64 CPU는 전력 소모도 높고 너무 고성능이다. 상대적으로 저성능에 저발열인 AVR, ARM등을 이용한 마이크로프로세서를 활용하면 저전력, 저발열인 시스템을 구성할수 있게 된다. 그만큼 절대적인 성능이 떨어지는 것은 당연지사.


즉, 범용성을 포기하고 특정 목표에 최적화 시킨 컴퓨터라고 생각하면 간단하다. 우리가 볼수있는 임베디드 시스템은 NAS, 자판기, [[스마트폰]] 등을 범주에 넣을 수 있다. <s>스마트폰은 임베디드라기엔 고성능이라는 것이 함정</s> 하지만 넓게 보면 일반적인 PC를 특정 목적에 맞게 변형시킨 것([[POS]], [[ATM]], 광고판 등) 또한 넓게 보면 이 범주에 포함시킬 수 있으며, x86-AMD64 진영의 [[마이크로소프트]] 또한 임베디드 시장 공략에 적극 나서 일반적인 윈도우에서 불필요한 요소를 제거해 자원 소모를 절약한 임베디드 OS를 출시했다.
즉, 범용성을 포기하고 특정 목표에 최적화 시킨 컴퓨터라고 생각하면 간단하다. 우리가 볼수있는 임베디드 시스템은 NAS, 자판기, [[스마트폰]] 등을 범주에 넣을 수 있다. 하지만 넓게 보면 일반적인 PC를 특정 목적에 맞게 변형시킨 것([[POS]], [[ATM]], 광고판 등) 또한 넓게 보면 이 범주에 포함시킬 수 있으며, x86-AMD64 진영의 [[마이크로소프트]] 또한 임베디드 시장 공략에 적극 나서 일반적인 윈도우에서 불필요한 요소를 제거해 자원 소모를 절약한 임베디드 OS를 출시했다.


==특징==
==특징==
14번째 줄: 14번째 줄:


===최적화===
===최적화===
<s>안타까운 자원</s></br>
일반 PC용 소프트웨어의 경우 어셈블리로 최적화 하는 경우는 보가 힘들다. 하지만 임베디드 시스템에서는 nano sec단위로 제어한다거나 ATtiny 같이 바이트 단위의 메모리만 있는경우 C를 쓰긴하지만 인라인 어셈을 이용하여 개발하는 경우가 굉장히 많다. 특히 [[PIC]] 같이 컴파일러가 시원찮은 경우 프로그래머가 처음부터 끝까지 어셈블리로 짜는 경우도 있다.
일반 PC용 소프트웨어의 경우 어셈블리로 최적화 하는 경우는 보가 힘들다. 하지만 임베디드 시스템에서는 nano sec단위로 제어한다거나 ATtiny 같이 바이트 단위의 메모리만 있는경우 C를 쓰긴하지만 인라인 어셈을 이용하여 개발하는 경우가 굉장히 많다. 특히 [[PIC]] 같이 컴파일러가 시원찮은 경우 프로그래머가 처음부터 끝까지 어셈블리로 짜는 경우도 있다. <s>갈려나간 프로그래머에게 애도를</s>


== 문제점 ==
== 문제점 ==
22번째 줄: 21번째 줄:


이에 따라 온라인에 물리는 임베디드 기기에 대한 보안이 중요해졌으나 사용자가 간단하게 올릴 수 있는 윈도우 업데이트, 리눅스 커널 패치와 달리 기기 개발자가 개입하지 않으면 업데이트가 불가능에 가깝기 때문에 지원이 중단된 기기를 계속 쓰는 경우 해킹에 노출된 상태로 방치할 수 밖에 없다. 또한 보안 패치가 나오더라도 안전 불감증으로 인해 관리자가 방치해두는 경우가 많아 세심한 관리가 요구된다.
이에 따라 온라인에 물리는 임베디드 기기에 대한 보안이 중요해졌으나 사용자가 간단하게 올릴 수 있는 윈도우 업데이트, 리눅스 커널 패치와 달리 기기 개발자가 개입하지 않으면 업데이트가 불가능에 가깝기 때문에 지원이 중단된 기기를 계속 쓰는 경우 해킹에 노출된 상태로 방치할 수 밖에 없다. 또한 보안 패치가 나오더라도 안전 불감증으로 인해 관리자가 방치해두는 경우가 많아 세심한 관리가 요구된다.
== 범용 임베디드 기기 ==
== 범용 임베디드 기기 ==
일반적으로 임베디드 기기는 사용 환경에 맞는 맞춤형이 대부분이지만, 아래 상품들은 사용자가 직접 프로그램을 주입하고 작동 환경을 쉽게 조성할 수 있도록 도와준다.
일반적으로 임베디드 기기는 사용 환경에 맞는 맞춤형이 대부분이지만, 아래 상품들은 사용자가 직접 프로그램을 주입하고 작동 환경을 쉽게 조성할 수 있도록 도와준다.

2017년 5월 20일 (토) 13:55 판

개요

우리가 컴퓨터라고 부르는 물건은 생각보다 널리 사용된다. 하지만 특정 목적으로, 예를 들면 자판기라는 시스템을 구성할때 일반 PC를 이용하여 개발한다면 굉장히 비효율적일 것이다. 하지만 CPU만 이용하여 특정 (자판기는 거스름돈, 각종 음료만 잘 주는) 프로그램 하나만 입력하여 만들면 일반적인 컴퓨터에 들어가는 키보드, 그래픽 카드 따위를 사용하지 않아도 된다.

거기다, 일반적인 x86 및 x64 CPU는 전력 소모도 높고 너무 고성능이다. 상대적으로 저성능에 저발열인 AVR, ARM등을 이용한 마이크로프로세서를 활용하면 저전력, 저발열인 시스템을 구성할수 있게 된다. 그만큼 절대적인 성능이 떨어지는 것은 당연지사.

즉, 범용성을 포기하고 특정 목표에 최적화 시킨 컴퓨터라고 생각하면 간단하다. 우리가 볼수있는 임베디드 시스템은 NAS, 자판기, 스마트폰 등을 범주에 넣을 수 있다. 하지만 넓게 보면 일반적인 PC를 특정 목적에 맞게 변형시킨 것(POS, ATM, 광고판 등) 또한 넓게 보면 이 범주에 포함시킬 수 있으며, x86-AMD64 진영의 마이크로소프트 또한 임베디드 시장 공략에 적극 나서 일반적인 윈도우에서 불필요한 요소를 제거해 자원 소모를 절약한 임베디드 OS를 출시했다.

특징

신뢰성

임베디드 시장에서 아직도 8비트기반이 가장 인기있다. 일반적으로 32비트, 64비트에 비해 성능이 부족해 부족해 보이기에 의아할 수도 있다. 하지만 성능과 신뢰성은 비례하지 않는다. 단순히 얘기하면 32, 64비트 기반 프로세서는 한번에 접근 가능한 경우의 수가 2^32~2^64개이다.(비유를 위한 정석적 설명임) 하지만 8비트는 2^8개이다. 어느 쪽이 에러 확률이 높을지는 자명하다.

Real-Time

특히 계측이나 기계제어의 목적일때 굉장히 중요해지는 특성이다. 대부분의 MCU는 다양한 종류의 Interrupt를 지원한다. Interrupt란 일종의 감시병 같은 역할이다. 예를들어 도둑잡는 경비 임베디드 시스템을 개발한다고 했을 때 프로그램이 감지 센서를 읽고 통신 보내기라는 두 가지 프로세스로 개발했다. 그러나 도둑이 운 좋게 통신중인 시스템 상태에서 침투하면 이 시스템은 뚫리고 만다. 하지만 Interrupt는 main 프로그램 상황에 관계없이 작동하고 Interrupt에 서비스 루틴을 걸면 main이 딴짓 중이라도 Interrupt가 도둑을 감지하면 바로 경보를 울릴 수 있다. 이를 Real-Time이라고 한다.

최적화

일반 PC용 소프트웨어의 경우 어셈블리로 최적화 하는 경우는 보가 힘들다. 하지만 임베디드 시스템에서는 nano sec단위로 제어한다거나 ATtiny 같이 바이트 단위의 메모리만 있는경우 C를 쓰긴하지만 인라인 어셈을 이용하여 개발하는 경우가 굉장히 많다. 특히 PIC 같이 컴파일러가 시원찮은 경우 프로그래머가 처음부터 끝까지 어셈블리로 짜는 경우도 있다.

문제점

보안 취약성

임베디드라는 물건은 특성상 한번 자리잡으면 업데이트 없이 장시간 굴리게 된다. 각 임베디드 기기들이 독자적으로 작동하던 때에는 버그만 안 나고 잘 작동하면 그만이었으나, 중앙 집중 관리와 기계간 상호작용을 위해 네트워크를 접목시키면서 보안 취약성이 화두에 올랐다. 외부 침입자가 네트워크를 통해 임베디드 기기에 접속해 악의적인 행동을 하면, 좀비 PC로 전락하는 것부터 사용자 개인정보 탈취, 기기 오작동으로 안한 인명 피해, 재산 피해가 발생할 수 있는 상황에 까지 이르렀다.

이에 따라 온라인에 물리는 임베디드 기기에 대한 보안이 중요해졌으나 사용자가 간단하게 올릴 수 있는 윈도우 업데이트, 리눅스 커널 패치와 달리 기기 개발자가 개입하지 않으면 업데이트가 불가능에 가깝기 때문에 지원이 중단된 기기를 계속 쓰는 경우 해킹에 노출된 상태로 방치할 수 밖에 없다. 또한 보안 패치가 나오더라도 안전 불감증으로 인해 관리자가 방치해두는 경우가 많아 세심한 관리가 요구된다.

범용 임베디드 기기

일반적으로 임베디드 기기는 사용 환경에 맞는 맞춤형이 대부분이지만, 아래 상품들은 사용자가 직접 프로그램을 주입하고 작동 환경을 쉽게 조성할 수 있도록 도와준다.

각주