커널 공부하는데 어떤 순서가 있을까요?

gurugio의 이미지

지금 Understanding The Linux Kernel 번역판을 보고 있는데요

보호모드부터 메모리에 대한 내용을 보고있는데요

다른 책들은 메모리 부분이 뒤에 나온 것도 있고요

메모리 부분이 제일 이해하기 어렵다고 하는 분들도 계시더라구요

근데 메모리 부분이 앞에 나온게 좀 의아합니다.

근데 이 책이 순서가 좀 이상한게 프로세스 설명하다가 갑자기 타이머가

나오고 다시 메모리가 나오고 좀 섞인것 같기도 합니다.

메모리 부분이 잘 이해가 안되서 다른 챕터를 먼저 볼까 고민이 되거든요.

선배님들께서는 어떤 순서로 보셨나요?

휴... 분명 한글은 한글인데 한 페이지 읽는게 왜 이리 힘든지 모르겠습니다.. oops

seed의 이미지

제가 추천해드리는 방법은...

0.자료구조를 모른다면 자료구조부터 공부하십시요.

1. 80386보호모드에 대한 책을 한권정도는 보시기 바랍니다.
한권을 한번에 끝내기는 힘들고
일단 세그멘테이션과 페이징 관련부분을 중점적으로 보시기를...
뭐... ULK에서도 2장에서 보호모드에 대해 언급은 하는데 역시 좀 약하죠...

2. 그다음 커널소스와 understanding the linux kernel책을 같이 보시면 도움이 되실겁니다.

사실 챕터2는 정말 보호모드에 대한 기본지식이 없이
맨땅해딩으로는 정복하기 힘든 챕터지요.
그렇지만 보호모드에 대한 이해없이 커널을 이해한다는건 힘듭니다.
(물론 순수 C코드부분만 본다면야 이해할수 있을지 모르지만...)
그리고 메모리관리는 정말 커널에서 가장이해하기 힘든부분중하나이지만
이것에대한 이해없이 다른부분을 이해하기도 힘듭니다.

커널의 경우 딱 한 부분만 찝어서 이부분만 설명하기는 힘든것같습니다.
다 연관되어있으니까요..
그리고 ULK의 경우 메모리관리가 한챕터가 아니라 여러챕터에 걸쳐있는데
개인적으로는 나쁘지는 않은 배치라고 생각합니다.

저도 몇년간(?) 커널보긴했지만 모르는 부분이 더 많군요.
처음부터 너무 욕심내고 하진 마시길...
조금씩 조금씩 내공을 쌓다보면 언젠간 조금씩은 깨달아가실겁니다.
결국은 커널도 제어의 흐름일 뿐인것을요.

다른분들이 더 좋은 설명해주시리라 생각합니다.
조금이라도 도움이 되셨길...

achrom의 이미지

저도 어렵던데요..
번역이 어려운건지, 내용이 어려운건지, 머리에 잘 안들어오더라구요..
좀 보다 말았는데, 지금은 봤던 것도 다 잊어먹어버렸습니다.
그래도, 다음에 볼 때는 좀 더 잘 알 수 있겠지..라고 생각합니다.

gurugio의 이미지

보호 모드에 대한 기본적인 공부는 해뒀었습니다.

단지 직접 코딩은 아직 못해봤지요.

ULK를 할 수 있는데까지 공부하고 나서

코딩을 해볼 계획입니다.

역시 메모리를 이해못하면 다른 부분 이해하기가 쉽지 않을까요?

kkojiband의 이미지

기오님 역시 여기서 활동하셨군요...^^;

전 slug 김인혁입니다...ㅎㅎ

저도 잘 못하지만 도움이 될까해서 글 올립니다...

일단 위의 분 말씀처럼 cpu 아키텍쳐는 기본적으로 어느 정도 알고 있어야하는데 기오님은 잘 아시지않나요? cpu 아키텍처와 어셈과 c를 알면 필수적인건 다 준비가 된듯합니다...

저같은 경우는 cpu 아키텍처 공부하고, os 관련 이론서들, 리눅스 커널 관련 책과 kldp 의 좋은 문서들을 여러 개 봤습니다. 소스를 보지않아서 정확히 이해가 안되는 부분은 그냥 넘어간 부분도 많습니다...

그리고나서 시험삼아 간단한 os 를 만들었습니다. 보호모드하에서 페이징 키고, 기본적인 메모리 할당과 스케쥴링이 가능한...

그 다음에 리눅스 2.4.x 커널 소스를 봤는데도 정말 어렵더라구요...

그래서 어떤 분의 조언에 따라 0.1인가 하는 소스를 봤습니다. 이건 자세한 내용들을 본건 아니구요, 전체적으로 어떤 식으로 흘러가는지 살펴봤습니다...

그리고 이번에 방학하면서 2.4.20 커널 소스와 기오님이 보고 계신다는 리눅스 커널의 이해를 같이 보고 있습니다...

처음에 2.4.x 소스를 접했을때의 하늘이 무너져내리는듯한 절망감은 안 들더군요...^^;

그리고 커널 소스 처음에 볼때요, 메모리 부분 본다고해서 메모리 관련 부분부터 보지마시고 일단 부트로더부터 보호모드, 페이징 초기화 등등 순서대로 한번 보세요...그리고 task_struct 등 중요한 자료구조들에 대한 정확한 이해는 필수입니다...

그러고나면 실제로 커널 소스가 전체적으로 어떤 식으로 구성이 되어있는지 감이 올겁니다...

그리고 마지막으로 한 마디만 덧붙인다면,

첨엔 힘들겠지만 책만 보지마시고 소스를 같이 보세요. 리눅스 커널의 이해가 설명도 정말 잘 되어있고, 번역도 정말(!) 잘 되어있지만, 소스를 보지 않으면 의미가 명확하지 않은 부분도 많습니다...

저도 다시 커널 공부 시작한지가 얼마 안되니 앞으로 서로서로 도와가며 열심히 합시다^^

slug 화이팅~ (-_-;)

이제 졸업이다...사랑하는 SKKULUG 후배들아 안녕~

gurugio의 이미지

오옷. 역시 여기서 만나네요.

전 이제 전공관련 공부한게 2년 조금 넘습니다.

이제 겨우 시작이죠.. 아직 커널 소스는 ULK에 조금씩 나온거 정도

읽고있습니다. 앞으로 기회가 되겠죠.

방학끝나기 전에 보호 모드로 부팅하고 페이징과 메모리 할당을

만드신 소스가지고 설명좀 해주세요.

다음달쯤에 보호 모드로 전환하는 걸 만드려고 하는데 막막하네요.