초보자를위한 리눅스 커널 소스 코드를 이해하는 방법? [닫은]


12

저는 메모리 관리 작업, 특히 리눅스 커널의 페이지 교체 구성 요소에 관심이있는 학생입니다.

커널 소스를 이해하는 데 도움이되는 다른 안내서는 무엇입니까?

Mel Gorman 의 Linux 가상 메모리 관리자 이해 와 Cesati와 Bovet 의 Linux 커널 이해 를 읽으려고했지만 코드를 통한 제어 흐름은 설명하지 않습니다. 사용 된 다양한 데이터 구조와 다양한 기능이 수행하는 작업에 대해서만 설명합니다. 이것은 코드를 더 혼란스럽게 만듭니다.

내 프로젝트는 주류 커널에서 페이지 교체 알고리즘을 조정하고 일련의 워크로드에 대한 성능을 분석합니다. 이해하기 쉬운 리눅스 커널의 풍미가 있습니까 (linux-2.6.xx 커널이 아닌 경우)?


1
복잡한 코드를 다루는 것이 쉽지 않다고 생각할 때 왜 커널 프로그래밍을 선택했는지 물어봐도 될까요?
LennyProgrammers 2013

답변:


13

데이터 구조에 중점을 둡니다 . 데이터 구조를 이해하는 것이 일반적으로 코드보다 중요합니다.

데이터 구조 만 표시되고 코드는없는 경우에도 시스템의 큰 그림을 얻을 수 있습니다.

반대로 코드 만 표시되지만 데이터 구조는 표시되지 않으면 시스템을 이해하기가 매우 어렵습니다.

"실제로 나쁜 프로그래머와 좋은 프로그래머의 차이점은 코드 나 데이터 구조가 더 중요하다고 생각하는지 여부입니다. 나쁜 프로그래머는 코드에 대해 걱정합니다. 좋은 프로그래머는 데이터 구조와 관계에 대해 걱정합니다." -리누스 토발즈

"너의 플로우 차트를 보여주고 당신의 테이블을 숨기면, 나는 계속 미스테리하게 될 것이다. 당신의 테이블을 보여 줘라. 그러면 나는 일반적으로 플로우 차트가 필요하지 않을 것이다. 그들은 분명 할 것이다." -프레드 브룩스.



3

디버거 옵션이 유용 할 수 있습니다.

디버거 옵션으로 커널을 빌드 한 후 수행 할 수있는 몇 가지 추가 작업은 커널을 호출하는 다양한 시스템 호출을 호출하는 샘플 테스트 응용 프로그램을 작성하여 한 번에 하나의 커널 코드를 통과하여 구현을 이해할 수있는 것입니다.



0

복잡한 코드베이스를 배우는 한 가지 방법 은 디버거에서 코드베이스를 실행하여 어디로 가는지를 보는 것입니다. Linux의 경우 Linux Kernel Debugger가 있습니다.


나는 이것이이 거대한 코드 조각으로 무엇을해야하는지, 어떻게 작동하는지 잘 모르겠습니다.
Mahmoud Hossam

1
거대한 코드 기반 으로이 접근법을 수행했습니다. 하지만 진입 점과 찾아야 할 아이디어가 필요합니다.
LennyProgrammers

그렇습니다. 이것이 제가 의미 한
바입니다
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.