분류 전체보기
-
입출력제어(ioctl)개발/컴퓨터사이언스 2017. 2. 11. 13:10
리눅스는 크게 시스템 영역(kernel)과 사용자 영역(user space)을 분리해서 악의적으로 만든 사용자 애플리케이션이 시스템 핵심 영역에 침범 할 수 없도록 만들어졌다. 하지만 애플리케이션을 개발하다보면 커널 영역내에 있는 함수들을 사용해야 할 일이 있는데 이런 경우 커널에서는 기본적으로 시스템 콜을 이용해 커널영역에 있는 함수들을 사용 할 수 있도록 지원한다. 하지만 시스템 콜은 기껏 해야 300개 정도 등록 할 수 있는데 모든 사용자 애플리케이션이 시스템 콜에 필요한 함수를 등록하기엔 수가 부족하다. 이때 사용 할 만한 툴이 ioctl이다. ioctl은 유저영역에 있는 애플리케이션이 현재 동작 중인 드라이버에 값을 전달하거나 받아 올 수 있도록 한다. 동작 과정을 간단히 그림으로 설명해보면 다..
-
자동차시장 오픈소스 - 2개발/오픈소스 2017. 1. 31. 23:48
스마트폰 OS로 재미를 본 안드로이드가 자동차 OS까지 노리고 있다는 건 이미 잘 알려진 사실이다. 스마트폰때처럼 안드로이드는 차량 제조사(OEM)들이 제공하는 하드웨어 환경(MCU, 네트워크, 자동차 서비스)을 간단히 구조화해 여러 OEM 하드웨어 환경에서 동일하게 작동 할 수 있는 프레임워크를 제공한다. 하드웨어를 추상화해 공통된 프레임워크를 제공하는 방법을 HAL(Hardware Abstraction Layer)라 한다. HAL의 가장 큰 장점은 API화이다. 일반 사용자들은 느낄 수 없지만 API화는 개발 할 때 강력한 무기가 된다. 스마트폰의 경우를 생각해보면, 안드로이드 애플리케이션을 개발 할 때 가장 편리 했던 점은 소프트웨어 개발자가 하드웨어를 전혀 신경 쓸 필요가 없다는 점이었다. GPS..
-
6. XenStore, Xenbus개발/가상화 2017. 1. 22. 13:40
Dom0의 장치드라이버인 Backend와 DomU의 장치드라이버인 Frontend가 서로 통신하기 위해선 각 상대 드라이버(Otherend) 상태와 연결 포트와 같은 정보들이 필요하다. 이런 정보들을 각 드라이버들마다 따로 정보를 관리하는 툴을 만들어서 처리 할 수 있겠지만, Xen에서는 이런 정보들을 Xenstore라는 자료구조를 통해 일괄적으로 관리할 수 있게 한다. Xenstore에는 이런 정보들이 입력된다. Dom0에서 xenstore-ls를 입력하면 현재 활성화된 Domain의 목록과 각 Domain들이 갖고 있는 장치들의 종류와 상태, 위치, 타입 등등을 알 수 있다. 그림을 보면 "local/domain/[domain id]/[device type]/[driver name]"처럼 경로의 형태..
-
자동차 시장 오픈소스 - 1개발/오픈소스 2017. 1. 15. 19:18
IoT 기술의 발달로 전보다 자동차 내에 다양한 기능을 넣을 수 있게 되면서 이런 다양한 기술을 자동차 내에 개발 할 수 있는 표준을 제공하는 것이 업계 내에선 화두가 되었다. 이에 따라 큼직한 자동차 회사들은 다른 IT 회사들이 자동차 내 IVI(In Vehicle Infotainment) 소프트웨어 개발할 수 있는 표준을 제공하기 위해 끼리끼리 모여서 오픈소스 프로젝트를 진행하고 있다. 대표적인 오픈소스 프로젝트로 GENIVI와 AGL(Automotive Grade Linux)가 있다. 두 프로젝트는 여러 면에서 유사한데 굳이 차이점을 고르라면 참여하고 있는 멤버와 AGL이 오픈소스로 유명한 Linux재단에서 운영되고 있다는 점 정도 일 것이다. 두 프로젝트 모두 Yocto 기반의 개발 환경을 두고 ..
-
5. 이벤트 채널 소개개발/가상화 2017. 1. 7. 17:52
이벤트 채널에 대해 설명하기 전에 인터럽트에 대해서 간단히 소개를 하자. 인터럽트는 CPU에 즉각적인 처리가 필요한 작업을 알리는데 사용되는 프로세스이다. 사용 방법은 네트워크, 블럭 드라이버 같은 하드웨어에 처리가 필요한 작업이 들어온 경우 인터럽트 핸들러에 알리고, 요청을 받은 인터럽트 핸들러는 이들의 요구 사항을 디바이스 정보와 함께 CPU에 전달한다. CPU는 현재 실행중인 프로세스를 잠시 중단 시키고 요청을 처리한다. 인터럽트가 있기 때문에 나는 블로그 포스트를 쓰면서도 친구의 카톡메시지를 동시에 받을 수 있다. 이벤트 채널의 역할은 인터럽트와 거의 동일하다. 단지 쓰이는 곳이 다를 뿐이다. 앞서 포스트에서 DomainU들은 Domain0와 Frontend-Backend Driver 관계를 가진..
-
이런 오픈 소스도 있다!개발/오픈소스 2017. 1. 7. 00:39
어떤 오픈소스에 참여 해볼까 조사하던 중에 신박한 주제를 가지고 있는 프로젝트들을 발견 했다. 이번 포스팅에서는 조사 과정에서 발견한 신박한 오픈소스 프로젝트들에 대해서 정리를 해보려고 한다. 1. Open MRS Google Code in에선 이 프로젝트대한 부연 설명으로 "Write code, save lives!" 딱 한 줄을 내놨다. 코드를 작성하고 생명을 구하자는 말인데 코딩을 하는 거랑 환자를 치료하는 거랑 전혀 무관 할 것 같지만 실제로 이 프로젝트는 의료지식이 전혀 없는 프로그래머들이 자신이 만든 소프트웨어로 HIV/AIDS같은 불치병을 치료하는 프로젝트를 진행한다. 여기서 만든 소프트웨어는 개발도상국에서 환자들의 정보를 별도의 전문적인 지식 없이 저장 및 재사용이 가능한 데이터베이스 환경..
-
디바이스트리(Device Tree)개발/컴퓨터사이언스 2017. 1. 4. 19:07
운영체제(Operating System)가 하드웨어와 소프트웨어 사이의 중간자 역할을 하고 사용자의 애플리케이션이 하드웨어를 조작하기 쉬운 환경을 제공 한다는 것은 컴퓨터 전공자라면 운영체제 수업시간에 귀가 빠지도록 배웠을 것이다. 운영체제는 오드로이드, 아두이노, 주노보드처럼 다양한 보드 위에 있는 RAM, CPU, EMMC등 하드웨어들을 초기화 및 조작하는 역할을 한다. 지금 이 글을 쓰기 위해 타자를 치는 동안 운영체제는 타자 입력 인터럽트를 처리하고 소프트웨어에 전달하는 일을 계속 하고 있다. 어떤 메인 보드를 사용하더라도 운영체제의 기본 뼈대는 동일해야 한다. 하지만 메인 보드들마다 상세 하드웨어 스펙은 천지 차이다. 예를 들면 RAM의 크기나 USB의 물리 주소의 위치처럼 당연한 것 부터 이 ..
-
오픈소스 시작하기개발/오픈소스 2017. 1. 1. 11:48
사오정이란 말이 난무하지만 정작 사십오세까지 직장을 다니기도 버거운 고용불안 시대에 한 회사에만 나의 운명을 맡길 수 없어 입사 2년차인 2017년 올해 부터는 회사 안에서 뿐만 아니라 밖에서도 링크드인에 남길만한 이력을 채우는 것을 새해 목표로 삼았다. 하지만 머릿 속에선 '뭘 해야 하지?' 라는 질문이 먼저 들었다. 안드로이드이나 윈도우 응용 애플리케이션을 개발하는 개인 프로젝트를 해볼까 했지만 이런건 모든걸 혼자 해야한다. 아이디어도 혼자 생각해야하고 기획도 혼자 해야하고 디자인도 혼자 해야하고 개발도 혼자 (그것도 잘)해야한다. 개인 프로젝트이기에 개발과정에서 나오는 이슈들을 같이 고민하는 사람들이 없다(스택 오버플로우에 물어보면 좀 모를까). 산적한 문제들을 해결하다 보면 순수한 마음으로 시작했..