임베디드 커널 개발자 입장에서 몇가지 눈에 띄었던 점을 이야기 하겠습니다.

1. 리눅스의 커널 아키텍쳐가 세부적인 점까지 잘 정립되어 있지 않아서 다른 OS 에 비해서 여러가지로 너저분한 점이 많습니다. 비교대상은 역시 Windows NT 5.0 혹은 Windows CE 가 되겠습니다.

- 디바이스 매니저의 부재 - 디바이스 마다 고유의 특성이 있는 반면에 같은 부류의 디바이스 간에는 공통적인 특성도 있는데, 이러한 공통적인 특성을 묶어서 한군데에서 처리하는것이 필요한 리소스도 줄고, 개별적인 모듈을 빨리 안정적으로 제작할수 있겠죠. 리눅스는 이런게 좀 아쉬운듯 합니다. 각 디바이스 드라이버가 어느 정도는 중복된 기능을 가지고 있다고 생각됩니다.

- functional object 와 physical object 이 명확하게 분리되어 있지 않습니다. 아키텍쳐가 이를 명확하게 분리할것을 요구하지 않으므로 디바이스 드라이버 프로그래머가 편한대로 나눕니다. 따라서 front-end 와 back-end 가 한 코드안에서 섞이게 됩니다. 물론 개별 프로그래머의 능력/취향에 따라서 얼마나 깔끔하게 정리가 되는지 차이가 있겠죠.

- 위의 원인과 또 다른 그외 몇몇 원인으로 인해서, 드라이버가 캡슐화되지 않는 경우가 많습니다. 논리적으로 분명 캡슐화 될수 있음에도 불구하고 이를 지원하는 인프라스트럭쳐가 없기 때문에, 함수를 export 하고 다른 파일을 수정해서 probe 하는 함수를 호출해야 한다든지 하는 경우가 발생합니다.

- 모듈 계층간의 인터페이스에서 필요한 기능이 제때에 정의되지 않는 경우가 있습니다. 예로 블록 디바이스와 파일 시스템간에 synchronous write 가 없었는데, 굳이 그 기능을 지원하려면 여러 군데를 손봐줘야 하는 경우가 있다던지 하는 경우입니다. 지금 이러한 기능이 정의/구현되었는지가 관건이 아니고 예전 몇년 동안 필요성은 대두되어 왔는데 해결책이 없는채로 오랜 시간이 지났다는 이야기입니다. 파워세이빙도 비슷한 예가 될것 같군요.

2. 개발 툴 문제 입니다.
하드웨어 플랫폼 바뀔때마다 툴 새로 다 깔고, 심하면 glib 다시 컴파일하고... 어쩌다가 커널버젼 바뀌면 gcc 버젼도 바꿔야 되고 등등. 이렇게 한번 툴 깔아놓고 나면 그 개발 호스트는 옴짝달싹 손도 못대게 됩니다. 다시 한번 그 생노가다를 반복할수는 없으니까.

임베디드니까 그렇다고 봐주려고 해도 상대적으로 플랫폼 빌더와 비교해 보면 별로 설득력이 없는 이유라는 생각이 듭니다. 각 업체 나름대로의 지향하는 바가 다르겠지만, 어느 정도 표준화가 되어주면 개발자들이 훨씬 편하겠다는 생각이 듭니다.

3. 그 다음은 복잡한 라이선스 문제입니다.
회사의 입장에서 보면 오픈소스로 나와있는 플랫폼을 최대한 활용해서 제품의 핵심과 무관한 부분은 빨리 준비를 끝내고, 자체적으로는 핵심모듈 개발과 제품 최적화등에 최대한 신경을 써서 제품을 내는게 목적일겁니다. 또 개발이 끝나면 자체적으로 공을 들인 부분에 대해서는 IP 를 확보해야죠. 그런데 GPL 등의 라이선스에 맞추면서 IP 를 확보하려면 아무래도 변호사+엔지니어 로 짜여진 리뷰팀이 필요합니다. 또 SDK 에 딸려오는 각종 부속들의 라이선스도 무시 못할 것이죠. 한편 윈도우즈는 마이크로소프트와 파트너 체결해서 공동개발해야 되지 않는 이상 돈만 내면 왠만한것은 다 따라오죠.

이런 저런것을 모두 종합해볼때, 리눅스로 뭔가 뛰어난 임베디드 제품을 만들려면 일단 커널/드라이버쪽을 대폭 손봐줄수 있는 강력한 팀이 필요합니다. 상대적으로 윈도우즈를 써서 개발 하는것보다 노동집약적인 경우가 많다고 봅니다. 이점은 저희같은 개발자에게는 나쁜 소식은 아닙니다. (그동안 아무리 미국 IT 노동시장이 안좋아도 커널 개발자들은 별 영향을 안받았던것으로 보입니다.) 다만 무엇을 하던지 개인의 생산성이 최대한으로 발휘되기는 좀 힘들다고 봅니다. 회사의 이익도 개인의 생산성과 밀접한 연관이 있겠죠.

두서없이 적었습니다. 혹시 리눅스와 윈도우즈 두 플랫폼 모두에서 개발에 경험이 많으신 분이 있으면 반론 혹은 보충해 주세요.


출처 : KLDP,


WRITTEN BY
RootFriend
개인적으로... 나쁜 기억력에 도움되라고 만들게되었습니다.

,