새로운 시대의 패러다임... 사물인터넷과 리눅스 프로그래밍

 

전문가와 모든 매체가 앞으로의 미래는 사물인터넷의 시대가 될 거라고 합니다. 그럼 사물인터넷이란 대체 무엇일까요? 그리고 왜 리눅스 프로그래밍을 배워야만 할까요? 이제 그 이유에 대해서 이야기 해보려고 합니다.
 

 

 

스마트 디바이스의 발전과 사물인터넷의 등장

2007년 애플의 스티브 잡스가 발표한 아이폰에 의해서 세상은 스마트 디바이스의 시대로 접어들었습니다. 2007년의 스마트폰과 2010년의 스마트 패드, 2010년의 스마트 TV, 2011년의 스마트 워치와 같은 웨어러블 장치의 시작으로 다양한 스마트 디바이스들이 사람들의 생활 속으로 깊이 다가왔습니다.
 

<그림 1> 스마트 디바이스와 사물인터넷의 발달

 

이러한 스마트 디바이스의 발전으로 열린 새로운 시대가 바로 사물인터넷입니다. 사물인터넷(Internet of things)은 인터넷에 연결된 기기로 정의할 수 있는데, 이러한 기기들이 인터넷을 통해 능동적으로 통신하고 상호 작용할 수 있는 시스템을 의미합니다.
 

 

사물인터넷과 오픈 소스 하드웨어

이러한 사물인터넷 발전의 중심에는 오픈 소스와 오픈 컨텐츠, 그리고 오픈 소스 하드웨어가 있습니다. 오픈 소스로는 리눅스와 KDE, GNOME과 같은 프로젝트들이 있으며, 오픈 컨텐츠로는 위키디피아나 TED가 있습니다. 오픈 소스 하드웨어는 여러 가지가 있는데, 대표적인 것으로는 아두이노와 라즈베리 파이가 꼽힙니다.

 

아두이노는 이탈리아에서 예술적인 분야와 IT를 융합하기 위해서 개발되었는데, 스케치라는 개발 환경을 이용하면 IT를 잘 모르더라도 쉽게 접근할 수 있습니다. 한편 가격이 싸고 개발이 편리하다는 장점을 제공하지만, 다른 오픈 소스 하드웨어에 비해서 CPU의 성능이 낮고 메모리가 작습니다. 이러한 이유로 리눅스와 같은 운영체제를 사용할 수 없기 때문에 보다 복잡한 작업에는 적합하지 않습니다.

 

<그림 2> 아두이노와 라즈베리 파이

 

아두이노를 대신하여 복잡한 작업에 최적화된 오픈 소스 하드웨어가 바로 라즈베리 파이입니다. 라즈베리 파이는 영국의 라즈베리 파이 제단에서 임베디드 리눅스 교육을 위해서 만든 보드로 20$ ~ 35$의 저렴한 가격으로 구매가 가능하며, 최근에 발표된 라즈베리 파이 2의 경우에는 900MHz 쿼드 코어와 1GB의 메모리 탑재로 별도의 PC 없이 라즈베리 파이만 가지고도 애플리케이션 개발이 가능합니다. 특히, 다른 많은 오픈 소스 하드웨어에서는 제공하고 있지 않는 HDMI 단자를 기본으로 제공하므로 모니터나 TV를 연결하여 디스플레이로 사용할 수 있습니다.

 

라즈베리 파이는 기본적으로 리눅스를 운영체제로 사용하고 있으며, 마이크로소프트에서도 윈도우10을 무료로 지원하고 있습니다. 최근에는 타이젠에서도 라즈베리 파이를 이용해서 IoT 장비를 개발할 수 있도록 지원하고 있습니다.
 

 

라즈베리 파이와 리눅스 프로그래밍

라즈베리 파이를 사용하기 위해서는 파이썬(Python)과 같은 스크립트 언어나 C 언어와 같은 고급 언어, 스크래치나 Perl 등의 일반적인 PC에서 사용하는 대부분의 프로그래밍 언어를 사용할 수 있습니다.

 

라즈베리 파이에서 자주 사용되는 파이썬과 같은 스크립트 언어는 배우기 쉽고 개발이 편리합니다. 하지만 코드를 보호하기가 힘들고 중간에 번역하는 과정이 필요하기 때문에 속도면에서 제한이 있습니다. 그래서 멀티미디어나 게임과 같은 높은 성능이 요구되는 분야나 임베디드 장비와 같이 속도가 느린 디바이스에서는 사용하기 힘듭니다. 이러한 분야에서는 어셈블러와 같은 저급 언어나 C와 같은 고급 언어가 좋습니다.

 

라즈베리 파이는 운영체제로 리눅스를 사용하고 있는데, 일반적으로 리눅스 시스템 프로그래밍이나 네트워크 프로그래밍에서는 C 언어를 기본으로 사용하고 있습니다. 그리고 리눅스 커널은 대부분의 코드가 C 언어로 되어 있습니다.

 

리눅스는 네트워크 서버와 임베디드 기기, 모바일 기기까지 대부분의 장비에서 사용되는 운영체제입니다. 리눅스는 유닉스 계열의 운영체제로서 현재 안드로이드나 타이젠(Tizen), 미고(MeeGo) 등 대부분의 스마트 디바이스에서 사용 중입니다. iOS도 마하(Mach) 계열의 BSD 유닉스를 커널로 사용하고 있는데, 이 또한 유닉스 계열이므로 리눅스와 프로그래밍하는 방법이 동일합니다.
 

 

새로운 시대에 맞는 패러다임리눅스 프로그래밍

사물인터넷은 인터넷을 통한 기기들의 통신이기 때문에 여러 가지 기술을 필요로 합니다. 리눅스에서는 커널과 통신을 위해서 유닉스 시스템 프로그래밍을 지원하고 있으며, 네트워크 프로그래밍을 위해서는 BSD 소켓 기반의 유닉스 네트워크 프로그래밍을 지원하고 있습니다. 리눅스 커널은 사운드나 비디오 입출력을 위한 멀티미디어 프로그래밍 환경을 지원하며, 또한 Qt, GTK+, EFL 등의 X 윈도우 툴킷을 통한 GUI 프로그래밍을 지원하고 있습니다.

 

기본적으로 개발 언어로 C를 사용하기 때문에 포인터가 없는 다른 프로그래밍 언어보다 배우기 힘들고 숙련된 개발자가 되기 위해서는 그만큼 오랜 시간이 필요합니다. 안드로이드나 주요 플랫폼에서 사용되기 때문에 리눅스 프로그래머는 산업 발전 측면에서도 중요한 위치를 차지합니다. 이런 이유로 현재 미국을 비롯한 많은 나라에서 능력있는 리눅스 개발자를 육성하기 위해 적극적으로 나서고 있습니다.

 

국내에서도 삼성전자나 LG 전자와 같은 대기업들에서도 스마트폰이나 스마트 TV와 같은 하드웨어 제조사도 리눅스를 이용해서 전자제품에서 동작하는 시스템 프로그램을 만들고 사용하고 있습니다. 또한, 안드로이드에서 사용하는 ART Dalvik과 같은 가상 머신도 바로 C 언어로 되어 있습니다. 리눅스 프로그래밍을 배운다면 새로이 도래한 사물인터넷 시대에 보다 각광받는 개발자가 될 수 있을 것입니다.

0개의 상품이 있습니다.



전체선택 장바구니에 담기

전체선택 장바구니에 담기

0개의 상품이 있습니다.

댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기