Linux Kernel에 관련된 지식을 가지고 실제로 현업에 나간다면 그 지식은 어떻게 쓰이고 어떤 분야가 유망할까요? 아래는 제가 느낀 분야별 Kernel 관련 지식 활용 추세입니다. Linux Kernel의 소스 디렉토리별로 대략 나누어서 생각해 보았습니다.

/usr/src/linux/Documentation: 개발자가 아닌 사용자들에게 유용한 지식입니다. Kernel에 뭔가 새로운 기능을 스스로 추가하는 것보다는 이미 있는 기능에 대해서 잘 숙지하고 디버깅이나 퍼포먼스 프로파일링 능력을 요구받는 일이 더 많습니다. 대부분의 퍼포먼스 이슈는 사용자 레벨에서 발생하고, 커널로 인해 애플리케이션이 오동작하는 경우는 거의 없지만 커널의 각종 파라미터를 튜닝하여 동일한 하드웨어에서 더 좋은 성능을 내거나 애플리케이션이 크래쉬될 경우 그 원인을 알기 위해서는 커널 수준까지 디버깅할 수 있는 능력을 갖춘다면 회사에서 더 많은 사랑을 받을 수 있습니다.

/usr/src/linux/arch: x86 계열을 주로 사용하는 서버를 다루는 일을 하시는 분들과는 거의 관련이 없고 임베디드 엔지니어들에게 유용한 지식입니다. 새로운 CPU나 보드를 bring-up하는 일이 항상 동반되는 바, 하드웨어 & 소프트웨어 양쪽의 지식이 모두 필요합니다. 이쪽 분야는 특정 아키텍처를 다룰 수 있는 기회가 계속 주어진다면 해당 아키텍처의 maintainer가 되는 쪽으로 목표를 정하고 추진한다면 더 많은 기회가 주어집니다. (물론, maintainer가 되는 것은 어느 분야이든 좋은 일입니다만...)

/usr/src/linux/fs: 개인적으로 Kernel 개발자들에게 가장 유망하다고 보는 분야입니다. 파일시스템은 OS가 있는 한 계속해서 존재할 것이고, 스토리지 디바이스에 대한 요구사항은 제품마다, 혹은 애플리케이션마다 다르기 때문에 그러한 요구사항을 잘 반영할 수 있는 파일시스템을 개발할 수 있는 능력을 갖춘다면 정말로 많은 기회를 잡을 수 있을 것입니다. 꼭 회사에 속해 있지 않더라도 고용량 HDD나 플래쉬 메모리 디바이스 등은 쉽게 구할 수 있으므로 특정 디바이스를 요하는 디바이스 드라이버 관련 지식 등에 비해 미리 공부하기도 상대적으로 용이한 측면이 있습니다.

/usr/src/linux/drivers: 디바이스 드라이버는 계속해서 새로운 디바이스가 출시되기 때문에 그러한 추세에 발맞추어 새로운 스펙이나 특정 하드웨어에 대한 지식을 지속적으로 습득하는 작업이 필요합니다. 잘 하면 물론 좋지만 개인적으로는 들이는 노력에 비해 실제로 얻을 수 있는 것이 다른 분야에 비해 좀 작다는 느낌을 받습니다.

/usr/src/linux/kernel , /usr/src/linux/mm: Linux Kernel의 코어에 해당하는 부분입니다. 이 부분을 수정할 수 있는 능력을 갖추고 그렇게 하는 것이 언제 좋으며 왜 필요한지를 설명할 수 있는 능력을 갖춘다면 현업보다는 학교/연구소 등에서 OS에 관한 리서치를 하는 것이 좋습니다. 이 부분은 시스템 전체에 영향을 미치기 때문에 실제 현업에서는 코드 자체는 거의 바꾸지 않고 컴파일시 옵션만 선택해서 사용하는 경우가 대부분입니다. 이부분을 잘 안다면 'guru'라고 불리울 수 있는 폼나는 분야이기도 하지요.

다시한번 말씀드리지만 위의 내용은 어디까지나 제 개인적인 느낌입니다. 막상 써 놓고 다시 읽어보니 말도 안되고 앞뒤가 안맞는 부분이 많네요. 그냥 재미로 읽어 보시고... 실제로 각 분야에서 현업에 계신 분들의 의견/반론/경험담 등을 기대하겠습니다.

gurugio의 아바타

usr/src/linux/Documentation:

usr/src/linux/Documentation: 예전에 책을 쓸때나 개발 문서를 쓸 때 많이 봤었습니다. 이 문서를 번역하거나 개발 문서를 쓸 때 이용하면 좋은 문서가 될것 같구요 그러면 이름을 알리는데 도움이 될것 같습니다. 제가 만든 문서를 읽어본 분들께 도움을 받은 적이 있습니다. 부가적인 효과겠지요?

/usr/src/linux/arch: 예전에 ARM 계열 보드에 포팅할 때 많이 봤습니다. 계속 보면서 흐름에 익숙해지면 포팅하는데 많이 도움이 되구요 특히 자기가 다루는 프로세스 폴더를 많이 보다보면 부팅 흐름에 대해 기본적인 것들을 배울 수 있는것 같습니다.

/usr/src/linux/fs: 파일시스템은 주변에 다루시는 분이 안계셔서 모르겠습니다. 하지만 그만큼 기술보유자가 적고 매리트가 있다는 것 같습니다.

/usr/src/linux/kernel , /usr/src/linux/mm: 취미 생활로 작은 커널을 만들고 있는데 계속 들여다보고 있습니다만.. 적확히는 커널 책을 보는 경우가 더 많고 소스만 보는 경우는 적은것 같습니다. 그 외에 경제적이거나 직접적인 효과는 잘 모르겠습니다.... 불면증 해소? 고민을 많이 하면 체중감량에 조금 도움이 되었습니다.

----
세상을 바꾸는 것은 단 한 사람. 오직 하나님의 사람뿐이다.

anfl의 아바타

kernel - 요즘엔 이

kernel
- 요즘엔 이 분야의 중요도가 점점 더 높아지고 있습니다. 사람들이 더 빠르고, 더 화려한것을 갈구하는것을 멈추지 않는한 새로운 architecture는 계속 나올것이고, 그러한 architecture를 받쳐줄 새로운 OS는 계속 필요 할것입니다.
요즘 상황만 봐도 공정 기술과 소자의 한계로 인해 더 이상 성능을 내지 못하게 되자 multi-core로 옮겨갔는데 그로 인해 OS의 비중이 더욱 크지게 되었습니다. multi-core에서 제대로 성능을 내려면 OS의 dynamic-profiling 정보를 이용한 효율적인 scheduling이 필수적이고 그러한 일은 architecture나 compiler가 제공해주지 못하죠.
때문에 현재의 소자가 계속 사용되는한 multi-core, many-core, MPSoC는 필연적이고 그에 따른 OS의 비중이 크짐과 동시에 다양한 architecture의 다양한 OS가 나올 가능성이 큽니다.
때문에 손을 들어준다면 저는 이쪽에 손을 들어주고 싶군요. low level에서는 아직도 할일이 무궁무진합니다. 실제로 권순선님이 다니시는 회사에서도 이와 관련된 일을 제가 했었죠. SM?, LE? 라고 들어보셨는지...

arch
- linux kernel에 있는것만 이해를 해도 software 분야에서 필요한 arch는 거의 다 알았다고 할수 있을것 같습니다. embedded 개발자라면 당연히 이 부분의 지식이 반드시 필요하고 linux에 있는것만 봐도 software 쪽에서는 왠만큼 다 알았다라고 할수 있을것 같습니다.
하지만 이쪽 분야에서 그 정도로 그친다면 전망이 불투명하다고 봅니다. 사실 arch에 있는것들은 메뉴얼대로 하면 되는것들이기 때문에 고차원적인 것들이 그다지 있지 않습니다.
이 분야의 꽃은 뭐니뭐니해도 H/W와 S/W를 동시에 이해해서 architecture exploration을 할수 있는 능력이지 않을까 쉽네요.

fs
- fs는 정말 유망하죠. 특히나 flash와 같은 새로운 저장 매체가 나옴으로써, 그리고 용량이 점점 크져가면서 더욱 중요해지고 있습니다. 예를 들면 flash memory들이 대부분 FAT을 사용하는데 FAT라고 해도 다 같은 FAT가 아니죠. 성능과 안전성을 향상시키기 위해 대부분 변형된 FAT이 들어가는데 그 종류도 많죠. 그리고 그 종류는 앞으로 더욱 늘어날거라 봅니다. 지금 분산이 중요해지고 있는데 fs에서도 중요해지고 있기 때문에 할일은 정말 많을것 같습니다.

driver
- 사실 이 분야는.... 좀 노가다성이 짖죠. 밥 굶고 살일은 없겠지만 그렇다고해서 전망이 밝다고 말하지 못할것 같습니다. 물론 이건 제 주관적인 견해입니다. 
앞으로 없어지진 않겠지만 driver와 함께 할수 있는 다른 무언가를 준비하지 않으면 나중에 위기가 닥쳐올수도 있을거라 생각합니다.
예전에 손으로 artwork 그리고 PCB 뜨는 기술이 중요했다면 지금은 거의 대부분 자동화 되버리거나 SoC chip로 대체되는것을 볼때 이 분야도 어쩌면 그렇수도 있을것 같네요.

런맨의 아바타

네트웍이 빠지면

네트웍이 빠지면 안되지 않나요?ㅎㅎㅎ 갠적으로 
linux/net/netfilter/
이것도 좋다고 생각합니다.

제주위에서 보면 웬만한거는 네트웍은 되어야 한다는 생각이 들어요...유비쿼터스라고도 할까요? ^^

짧은 생각입니다.

cychong의 아바타

net/ipv4 아무래도

net/ipv4
아무래도 네트웍 쪽에 있고 TCP/IP 스택의 동작을 이해하는데 가장 좋은 자료중의 하나입니다.

Life with fun...

cookatrice의 아바타

좋은글들 잘 읽었습니다..^^

감사할 따름입니다...^^

임수서룬뫼의 아바타

흠. 파일시스템

흠. 파일시스템 하니까 생각나는데...
저는 그 뭐냐 폴더인지 뭔지 하는 개념을 박멸시키고 싶거든요.
그냥 태그나 붙이면서 살아가고 싶어요.
ex:
C:\Users\cppig1995\Documents\Memo.txt
---]
파일명: Memo.txt, 범주: 개인문서, 메모
---]
Memo.txt:개인문서;메모 (새로운 표기법)



CS최정예 만세!
최정예OS (64비트 운영 체제) 만세!
UltraScx (SC/BW 맵 에디터) 만세!

지리즈의 아바타

기발한데요.

요즘 들어서는 나오는 FS들은
물리적 제한에 대한 탈피가 최대의 화두인 것 같습니다..

전통적인 디렉토리(directory,file) 개념은 
당시에는 그나마 최대한 논리적인 선택이었죠.
사실 저장매체에 메모리의 내용을 저장한다는 것 자체가 획기적이었던 시절에
나왔던 (당시로는) 이상적인 저장 매체 관리 방법이었고, 지금까지 이어져 온거네요.

카세트 테이프에 기록하다가 랜덤 억세스가 가능한 디스크를 봤을 때 놀라운 생각이 들었던 기억을 해보니..
정말 격세지감이 드네요.

이제는 정말 디렉토리,파일 개념을 버려야 할 시기가 온 것 같아요.

보다 더 추상적이고 사용자 지향적인 저장시스템이 필요해진 것 같습니다.

There is no spoon. Neo from the Matrix 1999.

akudoku의 아바타

.

각 파일에 태그를 붙여서 관리하는 건 나쁘지 않지만,
기존의 파일을 폴더별로 관리하는 사람들을 위해서 폴더의 이름을 바로 파일의 태그로 넣을 수 있는 유틸이 필요하지 않나... 하는 생각이 듭니다.

akudoku.net

죠커의 아바타

전통적인 운영체제

전통적인 운영체제 수준의 파일시스템은 아니니 조금 다른 얘기일 수도 있습니다만 요즘 분산 파일시스템에서 계층적인 디렉토리/파일 구조를 쓰지 않는 경우가 종종 있더군요. /blah/foo/bar 라는게 있다면 전통적으로는 blah 디렉토리에 foo 디렉토리가 계층적으로 위치했는데 분산 파일시스템에선 그냥 /blah/foo/bar로 처리하고 사용자가 요청할때 /blah/foo/bar에서 /blah/foo/나 /blah/를 해석해내었습니다. 전체적인 경로에서 부분적인 경로를 역으로 찾더군요.

죠커's blog / HanIRC:#CN

gamdora의 아바타

파일 시스템이

파일 시스템이 거대한 위키가 되겠군요. :)

tolkien의 아바타

RE: Linux Kernel 쪽에서 가장 유망한 분야는?

pm (power manangement).
간단하게 하면 sleep/wakeup or suspend/resume 처리
좀 더 들어가면 intel's speed step.
좀 더 들어가면 performance monitoring & resource management

HAL.
appl과의 interaction 부분은 아직 많이 부족함.
desktop/server쪽은 현재 구현으로 그럭저럭 쓸만함.
but, small device에서는?

bootloader
kernel쪽은 아닌데, 하다보면 이쪽은 안 건드릴 수 없죠.
alpha server의 srm bootloader보다 편한 것을 보지 못했습니다.
bootloader의 함수들을 file system 처럼 넣었다 뺄 수 있으면 좋겠슴.
u-boot의 미래는?

gurugio의 아바타

지금 잠깐 든

지금 잠깐 든 생각인데요
여기 올라온 주제들을 오픈소스 프로젝트로 만들면 어떨까요..

전 kldp에서 몇가지 프로젝트를 kldp 이름으로 관리하면 좋겠다고 생각하거든요.
(배포판도 그중 하나지요 ;-)

사실 개인적으로도 흥미있는 주제들을 써주셔서 감사드립니다.

----
세상을 바꾸는 것은 단 한 사람. 오직 하나님의 사람뿐이다.

corone의 아바타

좋은 글 잘 읽었습니다

오래된 글이긴 하지만 좋은 글 잘 읽었습니다

paeksj98의 아바타

이글 오랜만에 또 보넹...

이런글 볼때마다 열심 해야지 하는 생각만...^^;

+ Recent posts