리눅스 커널코드 구조에 대해서 이해하고, 커널 모듈을 만드려 하는데 관련 서적좀 추천해주세요

kckjn97의 이미지

내년에 대학원 연구실에 들어가는데
교수님께 미리 공부할 걸 여쭤봤더니
논문 읽거나,
리눅스 커널코드 보고 공부하면서 수정해보라고 하시더라구요..
논문은 교수님이 추천해주신걸 몇개 읽어보고 공부해보려 하는데
커널은.. 도무지 어떻게 해야할지 모르겠더라구요...
그냥 소스코드를 보면서 ctags로 따라가자니,
자주 쓰이는 자료구조나 함수도 잘 모르니 도무지 분석을 못하겠어요 ㅜㅜ
또 디버깅도 어찌해야 할지 몰라서
printk찍으면서 컴파일하고 돌려가면서 확인하고 있는데
혹시 좀더 효율적인 방법은 없을까요??

지금 딱 C언어 처음배울때의 느낌이에요...
새로생긴 연구실이 선배도 없어서 모를때 물어볼 사람도 딱히 없네요 ㅜㅜ
도서관에서 책을 보려하는데 책이 너무 옛날버전에 대한 책이라
개인적으로 최신 서적을 사려하는데...

선배님들 책좀 추천부탁드릴게요 ㅜㅜ
커널 구조에 대해서 자세히 나와있는 책이랑
커널 모듈 수정하는것에 대해서 자세히 나와있는 책이면 좋을거 같아요 ..
(가능하면 한글판인게 좋을거 같구요)

그리고 혹시 커널 공부할때 도움이 되는 팁이 있거나,
좋은 사이트 있으면 정보 공유좀 부탁드릴게요 ㅜㅜ

ps. 제가 KLDP에 글써보는게 거의 처음이라서 커뮤니티 룰 같은거에 대해서 잘 모르는데
혹시 제가 쓴 글에서 잘못된 것이 있거나, 고쳐야할게 있으면
언제든 지적 부탁드리겠습니다.

세벌의 이미지

https://kldp.org/node/153095
링크 따라가 보시면 책 소개, 관련 사이트, 이메일 주소 나옵니다.

shint의 이미지

알아보기 편할지도 모르죠. ㅇ_ㅇ;;

- 똑같은 기능을 만들기
- 원리를 비교하고 이해해보기

그냥 배우려면. 어렵더라구요.

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

ddoman의 이미지

디바이스 드라이버를 작성하기 위한것이라면 크게 도움이 안될수도 있지만
커널의 구조와 핵심모듈에 대한 이해를 하기위해서는 다음의 책을 강추합니다.

http://www.amazon.com/Linux-Kernel-Development-3rd-Edition/dp/0672329468

좋은 책이란 어려운주제를 아주쉽게 이해할수있도록 설명하는것이라고 생각합니다.
그런면에서, 저는 이 책을 한번도 지루하게 느끼지 않고, 정말 재미있게 (거의) 대부분 정독했습니다.
Robert Love라는 저자는 구글에서 안드로이드 커널개발팀에 참여했던 사람인데,
정말 글쓰는 재주가 있는것 같습니다.

아주 쉽게 잘 쓰여진 멋진 책입니다.

번역본도 있더군요. 번역본은 보지 않아 번역의 질은 모르겠습니다.
http://book.interpark.com/product/BookDisplay.do?_method=detail&sc.shopNo=0000400000&sc.prdNo=210880147&sc.saNo=003002001&bid1=search&bid2=product&bid3=title&bid4=001

서평만 봐서는 번역의 질도 괜찮지않을까 싶습니다.

Quote:

이 책은 리눅스 커널을 이해하고자 하는 소프트웨어 개발자를 대상으로 쓰여졌다. 이 책은 커널 소스를 줄 단위로 설명하는 해설서가 아니다. 또한 드라이버 개발을 위한 가이드도, 커널 API 참고도서도 아니다. 이 책의 목적은 리눅스 커널의 설계와 구현에 대한 충분한 정보를 제공하여, 프로그래머가 커널 코드 개발을 시작할 수 있게 해주는 것이다. 커널 개발은 재미있고 보람찬 일이므로, 나는 독자를 가능한 한 순조롭게 이 세상으로 이끌고자 한다. 이 책은 학구적인 독자와 실용적인 독자 모두를 만족시키기 위해 이론과 응용 모두를 다룬다. 나는 항상 응용을 이해하려면 이론부터 이해해야 한다고 생각하지만, 이 책에서는 둘 사이의 균형을 맞추려고 노력했다. 여러분이 리눅스 커널을 공부하려는 동기가 무엇이든, 이 책의 커널 설계와 구현에 대한 설명이 여러분의 필요를 충분히 만족시킬 수 있기를 바란다.

mv3142의 이미지

최근 미국 학부에서는 xv6라는 x86용 unix v6를 가르치는 곳이 많은 것 같더군요. 리눅스가 어렵다면, 일단 xv6를 가지고
공부해보는것도 좋을듯 합니다. 리눅스야 오랜기간에 걸쳐 개발되면서 꽤 복잡해졌지만 (이렇게 복잡해지면, 잡다한
optimization이나 hack들이 실제 core를 파악하기 힘들게 만듭니다), xv6는 태고적 형태 그대로라 훨씬 쉽게 이해할수
있으리라 생각합니다.

학생이시면 시간도 많으실것 같은데, 아래 사이트에서 lab들을 죽 따라가 보시면 OS나 시스템 기초를 닦는데는 더 할 나위 없이
좋으리라 생각합니다.

https://pdos.csail.mit.edu/6.828/2014/

시스템 분야를 공부하실 계획이신 듯 한데, 일단 가장 기본적인 것들 (프로세스, VM, I/O, system call 등) 이 어떻게
동작하는지를 마스터해놓으세요. 아래 파일을 출력하셔서 (한 50번 반복해서 읽는다고 마음먹으시고) 문장 하나
하나가 환하게 이해가 될 때까지 읽어보시기를 권해드립니다

https://pdos.csail.mit.edu/6.828/2014/xv6/book-rev8.pdf