|  |
| |
| 김답변 |
커널의 모든걸 다 분석하는게 목표라면 디렉토리 트리부터 분석을해서 어디에 뭐가있는지부터 먼저 파악을 하셔야 하구요
그다음에 커널의 각 기능들의 요소마다 해당하는 소스코드를 찾고, 특히 그 요소의 시작점을 찾아서 분석을 하시면 됩니다
이왕이면 커널소스를 분석하실 땐 비교적 우리한테 익숙한 read시스템콜(do_read)이라든지, 아니면 execve(do_execve) 시스템콜들의 핸들러를 분석해보시면 비교적 쉽게 시작하실 수 있을겁니다
그리고 운영체제 공부를 잘 하셨다면 리눅스에서는 프로세스 스케쥴링을 어떻게 처리하는지에 포커싱해서 분석하시면 더 재밌으실겁니다.
그 다음으로는 리눅스커널이 유저의 디바이스드라이버를 어떻게 처리해주는지, 이런것도 보면 재밌을거구요
사실 저는 리눅스커널은 시스템콜만 몇개 찾아보고 주로 glibc 소스코드를 읽어봤었는데 glibc 소스코드를 읽어보시면 평소에 개발할 때 굉장히 많은 도움이 됩니다
이거는 그냥 추가하는 말로, 커널소스에는 likely, unlikely 매크로가 굉장히 많이 사용됩니다
이 매크로들은 소프트웨어적인 branch prediction을 위한 매크로들입니다 |
2017/08/14 |
|
| 김답변 |
위에서 한 얘기는 무슨 리눅스 커널책을 사도 보통 저런 포맷을 따릅니다
근데 문제는 저런 포맷은 분석하는사람 입장에선 재밌지만 책으로 옮겨져있으면 책을 읽을 땐 되게 재미없습니다
그래서 그냥 책을 보지 않으시거나, 아니면 보더라도 디렉토리 구조정도 파악하고, 리눅스에 어떤 기능들이 있나, 예를들어서 SELinux같이 리눅스를 잘 모르시는 분들이 생소하지만 보안하는 사람 입장에서 굉장히 중요한 기능 등, 이런것들의 존재를 알아가는 정도로만 책을 사용하시는걸 추천드립니다 |
2017/08/14 |
|
| pkdo1030 |
답변 담사합니다 말씀하신대로 한번 분석해보겠습니다. |
2017/08/14 |
|