<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule"
>

<channel>
	<title>EMSTONE Bebop &#187; Embedded</title>
	<atom:link href="http://bebop.emstone.com/tags/embedded/feed/" rel="self" type="application/rss+xml" />
	<link>http://bebop.emstone.com</link>
	<description>엠스톤 개발팀 블로그</description>
	<lastBuildDate>Sun, 29 Jan 2012 05:25:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/2.0/kr/</creativeCommons:license>
		<item>
		<title>PCD – Process Control Daemon</title>
		<link>http://lethean.pe.kr/2011/05/30/pcd-process-control-daemon/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=pcd-process-control-daemon&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=pcd-%25e2%2580%2593-process-control-daemon</link>
		<comments>http://lethean.pe.kr/2011/05/30/pcd-process-control-daemon/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=pcd-process-control-daemon#comments</comments>
		<pubDate>Mon, 30 May 2011 03:49:14 +0000</pubDate>
		<dc:creator>lethean</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Embedded]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[카스탈리엔]]></category>

		<guid isPermaLink="false">http://lethean.pe.kr/?p=1660</guid>
		<description><![CDATA[아치리눅스를 비롯한 몇몇 리눅스 배포판은 여전히 시스템 부팅 초기화에 필요한 작업, 예를 들어 로컬 파일 시스템을 마운트하거나 웹서버, X서버 같은 시스템 프로그램을 자동으로 실행하기 위해 전통적인 유닉스의 SysV 시스템 구동 스크립트 방식(런레벨, rc.d 스크립트 등) 혹은 비슷한 방식을 이용하고 있습니다. &#8230; <a href="http://lethean.pe.kr/2011/05/30/pcd-process-control-daemon/">Continue reading <span>&#8594;</span></a> <a href="http://lethean.pe.kr/2011/05/30/pcd-process-control-daemon/?utm_source=rss&#38;utm_medium=rss&#38;utm_campaign=pcd-process-control-daemon">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>아치리눅스를 비롯한 몇몇 리눅스 배포판은 여전히 시스템 부팅 초기화에 필요한 작업, 예를 들어 로컬 파일 시스템을 마운트하거나 웹서버, X서버 같은 시스템 프로그램을 자동으로 실행하기 위해 전통적인 유닉스의 SysV 시스템 구동 스크립트 방식(런레벨, rc.d 스크립트 등) 혹은 비슷한 방식을 이용하고 있습니다. 하지만 오래된 이 방식은 셸 스크립트 기반이라 전반적인 실행 속도가 느릴 뿐 아니라 프로세스간 의존성, 프로세스 종료시 예외처리(예: 자동 재실행) 등과 같은 기능을 지원하지 않아 많은 시스템 관리자 및 개발자의 불만을 산 것도 사실입니다. 특히 최근 몇 년동안 이슈가 되었던 리눅스 부팅 속도 단축을 위해 제일 먼저 처리되어야 하는 걸림돌로 여겨지기도 했습니다. 이런 이유로, 우분투(Ubuntu)는 오래전부터 자체적으로 개발한 <a href="http://upstart.ubuntu.com/">Upstart</a> 프로그램으로 이를 교체했고, 페도라(Fedora) 역시 Fedora 15부터 <a href="http://www.freedesktop.org/wiki/Software/systemd">Systemd</a> 프로그램을 이용해 구동 과정을 관리합니다. 즉, 요즘 리눅스 서버 / 데스크탑 시스템에서 시스템 초기 부팅 작업을 위한 솔루션은, 가히 춘추전국시대라고 할 수 있을만큼, 각각을 리눅스 표준으로 정착하려고 노력하는 이들이 있는가 하면, 그냥 옛것이 좋은 것이라고 고수하는 이도 있고, 더 단순하고 본인 입맛에 맞는 시스템을 직접 개발해서 사용하는 이도 있을만큼 다양합니다.</p>
<p>그런데 여담이지만, 아치리눅스 부팅 과정 커스터마이징과 속도를 경험해봐서 그런 건지, 범용 배포판은 어쩔 수 없이 모든 사용자가 만족할 수 있도록 가능한 많은 서비스 프로그램을 기본적으로 설치하고 이를 모두 시작하기 때문에 느려질 수 밖에 없는 건데, 부팅 속도 향상을 위해 시작 프로세스 관리 데몬의 성능과 기능을 개선하는 방향으로만 접근하고 있는 게 아닌가 하는 생각도 듭니다. 물론 다른 고급 기능을 제공한다고 하지만, 어차피 대부분의 기능은 배포판 개발자들만 사용하는 거고&#8230; :) 참고로, 이 <a href="http://free-electrons.com/blog/boot-time-genivi-2011/">발표자료</a>만 봐도 부팅 속도와 초기화 프로그램의 능력은 무관한 것 같습니다.</p>
<p>아무튼, 지금까지 설명한 배경이 최근 <a href="http://free-electrons.com/blog/elc-2011-videos/">임베디드 리눅스 컨퍼런스 2011 발표 슬라이드</a>를 읽다가 <a href="http://elinux.org/images/b/ba/Elc2011_shalom.odp">PCD(Process Control Daemon)라는 프로세스 관리 데몬을 소개하는 내용</a>을 보고 흥미를 가질 수 밖에 없었던 이유입니다. 위에 소개한 최신 프로그램들이 제공하는 기본 기능을 충실히 구현한 것은 물론, 임베디드 시스템을 우선 대상으로 개발했기 때문에 실행파일 크기가 매우 작고 빠르다는 점이 가장 매력적인 장점인 것 같습니다. (자세한 기능은 직접 확인해 보시길&#8230; :)</p>
<p>Systemd / Upstart 프로그램은 기능은 강력하지만 임베디드 시스템에 적용하기에는 너무 덩치가 크고 라이브러리 의존성도 무시하지 못할만큼 무겁습니다. 또한 임베디드 시스템은 개발자가 시스템의 모든 프로세스를 통제하고 완벽하게 관리해야 하기 때문에, 시스템에 대해 배포판 개발자와 동등하거나 더 많은 이해를 필요로 하므로 이러한 도구를 이용하면 작업이 수월해질 수 있습니다. 더 나아가, 이 프로그램을 조금 더 응용하면 데스크탑 / 서버용 시스템에서 여러 프로세스로 동작하는 시스템을 개발할 때도 유용하지 않을까 하는 생각도 듭니다.</p>
<p>물론 임베디드 리눅스 개발시 하나의 셸 스크립트 안에서 부팅 과정에 필요한 모든 작업을 처리하는 방식이 무조건 나쁜 건 아닙니다. 다만 복잡도가 더 높은 시스템을 설계할 때는 반드시 이런 프로세스 / 세션 관리 / 예외 처리 프로그램을 사용하거나 알아두면 나중에 참고하는 데 도움이 되지 않을까 생각해 봅니다.</p>
]]></content:encoded>
			<wfw:commentRss>http://lethean.pe.kr/2011/05/30/pcd-process-control-daemon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/2.0/kr/</creativeCommons:license>
	</item>
		<item>
		<title>libmicrohttpd 내장 웹서버 라이브러리</title>
		<link>http://lethean.pe.kr/2011/05/02/libmicrohttpd-embedded-web-server-library/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=libmicrohttpd-embedded-web-server-library&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=libmicrohttpd-%25eb%2582%25b4%25ec%259e%25a5-%25ec%259b%25b9%25ec%2584%259c%25eb%25b2%2584-%25eb%259d%25bc%25ec%259d%25b4%25eb%25b8%258c%25eb%259f%25ac%25eb%25a6%25ac</link>
		<comments>http://lethean.pe.kr/2011/05/02/libmicrohttpd-embedded-web-server-library/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=libmicrohttpd-embedded-web-server-library#comments</comments>
		<pubDate>Mon, 02 May 2011 04:26:52 +0000</pubDate>
		<dc:creator>lethean</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Embedded]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[카스탈리엔]]></category>

		<guid isPermaLink="false">http://lethean.pe.kr/?p=1656</guid>
		<description><![CDATA[최근 프로젝트에서 내장 웹서버를 운영하기 위해 libmicrohttpd 라이브러리를 적용해 보았습니다. 물론, 임베디드 시스템에서 많이 사용하는 GoAhead 등과 같은 상용 라이브러리를 사용하거나, BusyBox 내장 웹서버, 또는 다른 많은 오픈소스 라이브러리를 사용할 수도 있지만, 라이센스도(LGPL 또는 eCos) 괜찮고, 성능과 API 구성이 단순하고 &#8230; <a href="http://lethean.pe.kr/2011/05/02/libmicrohttpd-embedded-web-server-library/">Continue reading <span>&#8594;</span></a> <a href="http://lethean.pe.kr/2011/05/02/libmicrohttpd-embedded-web-server-library/?utm_source=rss&#38;utm_medium=rss&#38;utm_campaign=libmicrohttpd-embedded-web-server-library">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>최근 프로젝트에서 내장 웹서버를 운영하기 위해 <a href="http://www.gnu.org/software/libmicrohttpd/">libmicrohttpd</a> 라이브러리를 적용해 보았습니다. 물론, 임베디드 시스템에서 많이 사용하는 <a href="http://www.goahead.com/">GoAhead</a> 등과 같은 상용 라이브러리를 사용하거나, <a href="http://www.busybox.net/">BusyBox</a> 내장 웹서버, 또는 다른 많은 오픈소스 라이브러리를 사용할 수도 있지만, 라이센스도(LGPL 또는 eCos) 괜찮고, 성능과 API 구성이 단순하고 명쾌한 것 같아서 시도해 보았습니다. (물론 아직도 주변에는 라이센스 무시하고 상용 라이브러리 몰래 사용하는 곳이 많긴 하지만&#8230; :-) 참고로, 이 라이브러리는 <a href="http://xbmc.org/">XBMC</a> 프로젝트를 들여다보다가 내부에서 사용하는 걸 우연하게 발견했습니다.</p>
<p>내장 웹서버 라이브러리를 사용하면 얻을 수 있는 가장 좋은 장점은 MJPEG, RTSP-over-HTTP 등과 같은 웹기반 스트리밍 서버를 만들때 매우 편리하다는 점입니다. 한 프로세스 안에서 웹서버 + 스트리밍 생성 루틴이 함께 동작하므로 메모리 복사 오버헤드가 줄어들고 프로그래밍 복잡도 역시 감소합니다. 또한 CGI 프로세스가 따로 동작할 필요가 없으므로 웹을 통해 설정을 변경해도 별도의 프로세스간 통신이 불필요합니다.</p>
<p>물론, 내장 웹서버 방식이 장점만 있는 건 아닙니다. 기존 스탠드얼론 웹서버가 알아서 자동으로 해주던 부분, 예를 들어 디렉토리 인덱스 파일 생성, 동시 접속 클라이언트 수 관리, 클라이언트 캐시를 위한 수정 시각 고려 등을 프로그래머가 직접 작성해야 합니다. 특히 libmicrohttpd 라이브리는 GoAhead 등과 같은 상용 라이브러리에 비하면 자동화 부분이 조금 부족합니다. 예를 들어 파일 시스템의 일반 파일에 대한 웹서비스 처리도 직접 만들어야 합니다. 물론, 대부분 필요한 기능은 예제 소스를 참고하면 어렵지 않게 구현할 수 있습니다. 하지만 제 생각에는, 웹서버 라이브러리가 너무 많은 기능을 자동화하지 않는게 오히려 더 맞다고 생각하는데, 왜냐하면 대부분 응용 프로그램에서 웹서버를 내장하는 경우는 특수한 용도(RESTful / SOAP)이거나 필요한 기능만 구현하기 위해서이기 때문에 나머지는 모두 개발자가 제어하는게 라이브러리의 제 역할이 아닌가 생각합니다.</p>
]]></content:encoded>
			<wfw:commentRss>http://lethean.pe.kr/2011/05/02/libmicrohttpd-embedded-web-server-library/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/2.0/kr/</creativeCommons:license>
	</item>
		<item>
		<title>0MQ: 메시지 시스템 라이브러리</title>
		<link>http://lethean.pe.kr/2010/01/29/0mq-a-new-approach-to-messaging/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=0mq-a-new-approach-to-messaging&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=0mq-%25eb%25a9%2594%25ec%258b%259c%25ec%25a7%2580-%25ec%258b%259c%25ec%258a%25a4%25ed%2585%259c-%25eb%259d%25bc%25ec%259d%25b4%25eb%25b8%258c%25eb%259f%25ac%25eb%25a6%25ac</link>
		<comments>http://lethean.pe.kr/2010/01/29/0mq-a-new-approach-to-messaging/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=0mq-a-new-approach-to-messaging#comments</comments>
		<pubDate>Fri, 29 Jan 2010 06:50:49 +0000</pubDate>
		<dc:creator>lethean</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Embedded]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[카스탈리엔]]></category>

		<guid isPermaLink="false">http://lethean.pe.kr/?p=1215</guid>
		<description><![CDATA[LWN.net에서 0MQ라는 매우 흥미로운 라이브러리를 소개하길래 조금 자세히 살펴 보았습니다. 일단 소개부터 하자면, BSD 소켓 비슷한 API를 지원하는 경량 메시지 시스템입니다. 소켓 비슷한 API라... <a href="http://lethean.pe.kr/2010/01/29/0mq-a-new-approach-to-messaging/?utm_source=rss&#38;utm_medium=rss&#38;utm_campaign=0mq-a-new-approach-to-messaging">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[LWN.net에서 0MQ라는 매우 흥미로운 라이브러리를 소개하길래 조금 자세히 살펴 보았습니다. 일단 소개부터 하자면, BSD 소켓 비슷한 API를 지원하는 경량 메시지 시스템입니다. 소켓 비슷한 API라고 하지만, 소켓보다 사용하기 훨씬 편합니다. 실행 중 차지하는 용량이 1~20 KB 정도밖에 안될 뿐 아니라, 처음 &#8230; <a href="http://lethean.pe.kr/2010/01/29/0mq-a-new-approach-to-messaging/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></content:encoded>
			<wfw:commentRss>http://lethean.pe.kr/2010/01/29/0mq-a-new-approach-to-messaging/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/2.0/kr/</creativeCommons:license>
	</item>
		<item>
		<title>Power of 10: 안전성이 중요한 코드 개발을 위한 규칙</title>
		<link>http://lethean.pe.kr/2010/01/25/power-of-10-rules-for-developing-safety-critical-code/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=power-of-10-%25ec%2595%2588%25ec%25a0%2584%25ec%2584%25b1%25ec%259d%25b4-%25ec%25a4%2591%25ec%259a%2594%25ed%2595%259c-%25ec%25bd%2594%25eb%2593%259c-%25ea%25b0%259c%25eb%25b0%259c%25ec%259d%2584-%25ec%259c%2584%25ed%2595%259c-%25ea%25b7%259c%25ec%25b9%2599</link>
		<comments>http://lethean.pe.kr/2010/01/25/power-of-10-rules-for-developing-safety-critical-code/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 03:59:39 +0000</pubDate>
		<dc:creator>lethean</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Embedded]]></category>
		<category><![CDATA[카스탈리엔]]></category>

		<guid isPermaLink="false">http://lethean.pe.kr/?p=1197</guid>
		<description><![CDATA[`정적 분석과 코딩 규칙을 이용한 임베디드 소프트웨어 버그 줄이기&#8216;라는 제목의 기사를 읽다가 `Power of 10&#8216; 규칙이 언급되었길래 다시 읽어볼 기회가 생겼습니다. 기사 내용은 필자가 개발한 정적 분석 도구 제품을 홍보하는 느낌을 받았지만, 어느 정도의 가이드라인을 지킨 코드는 정적 분석 도구의 도움을 받아 미리 오류를 발견하고 수정하기가 더 쉽기 때문에 상호 보완하는 것이 좋다는 점에는 동의합니다. [...] <a href="http://lethean.pe.kr/2010/01/25/power-of-10-rules-for-developing-safety-critical-code/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[`정적 분석과 코딩 규칙을 이용한 임베디드 소프트웨어 버그 줄이기&#8216;라는 제목의 기사를 읽다가 `Power of 10&#8216; 규칙이 언급되었길래 다시 읽어볼 기회가 생겼습니다. 기사 내용은 필자가 개발한 정적 분석 도구 제품을 홍보하는 느낌을 받았지만, 어느 정도의 가이드라인을 지킨 코드는 정적 분석 도구의 도움을 받아 미리 오류를 발견하고 수정하기가 더 쉽기 때문에 상호 보완하는 것이 좋다는 점에는 동의합니다. [...]]]></content:encoded>
			<wfw:commentRss>http://lethean.pe.kr/2010/01/25/power-of-10-rules-for-developing-safety-critical-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/2.0/kr/</creativeCommons:license>
	</item>
	</channel>
</rss>

