리눅스 커널 소스 실행 분석기

rgbi3307의 이미지

커널 소스 실행 분석기 개요

"리눅스 커널 소스 실행 분석기”는 커널연구회(www.kernel.bz)에서 제작한 어플리케이션 입니다. 리눅스 커널 소스를 qt 어플리케이션 프로젝트로 구성하여 사용자 콘솔에서 직접 실행하면서 분석할 수 있습니다. 커널 소스는 커널 모드에서 실행해야 하는 특성으로 인해서 소스를 빌드하고 실행 및 디버깅하기가 상당히 까다롭습니다. 커널연구회는 그동안 커널 소스를 분석하면서 이런 불편한 점들을 해결하기 위해서 많은 노력을 했습니다. 커널 소스 중에서 하드웨어 의존적인 소스는 커널 모드에서 하드웨어를 직접 제어해야 하므로 따로 분리해서 실행하기 어렵습니다. 그러나 하드웨어에 상관없이 소프트웨어 알고리즘으로 동작하는 소스들(자료구조, 구조체, 공통 라이브러리, 스케쥴러 등)은 별도로 분리하여 사용자 어플리케이션으로 실행할 수 있습니다. 이렇게 하면 소스를 분석 및 디버깅하기 좋아지고 소스도 쉽게 익힐 수 있습니다. 커널연구회는 다년간의 노력과 노하우로 커널 소스 중에서 단독으로 분리할 수 있는 소스들을 파일 단위로 분리하여 qt 프로젝트로 구성하여 사용자 콘솔 어플리케이션으로 실행할 수 있도록 했습니다. 이렇게 하면 커널 소스를 행단위로 하나씩 실행하면서 자세히 분석 및 디버깅 할 수 있습니다.

리눅스 커널 소스는 다음과 같이 분류할 수 있는데, 아래에서 * 글자로 시작하는 항목이 사용자 어플리케이션 소스로 따로 분리할 수 있는 것들입니다.

*환경설정 소스(Kconfig)
*초기화 소스(init)
*자료구조 구조체 소스(include/linux)
*공통 라이브러리 소스(lib)
공유자원 접근제어(Locking) 소스
CPU 아키텍쳐 의존 소스(arch)
메모리 의존 소스(mm)
*스케쥴러 소스(sched)
*디바이스 트리 파싱 소스(drivers/of)
*디바이스 코어 소스(drivers/base)
하드웨어 의존 디바이스 드라이버 소스들(drivers)

커널연구회에서 제작한 "리눅스 커널 소스 실행 분석기”는 리눅스 커널 소스들중에서 환경설정, 초기화, 자료구조, 구조체, 공통 라이브러리, 스케쥴러, 디바이스 트리 파싱, 디바이스 코어 소스를 따로 분리 했습니다. 분리한 소스들은 파일 단위로 qt 어플리케이션 프로젝트로 구성하여 qt에서 실행 및 디버깅할 수 있습니다. 또한 사용자 콘솔 화면에서 직접 실행하여 소스를 분석할 수 있습니다.

소스 파일 경로 구조는 리눅스 커널 소스 구조와 동일하게 구성하여 소스를 학습할때 혼선없이 일관성을 유지할 수 있도록 했습니다. 리눅스 커널 소스는 Long Term 안정화 버전인 v5.4을 기준으로 분석기에 적용 했습니다.

커널연구회의 "리눅스 커널 소스 실행 분석기”는 콘솔 화면에 실행된 메뉴별로 커널 소스를 분석할 수 있도록 구성되어 있습니다. 작업 메뉴는 번호를 입력 하도록 되어 있으며, 해당 번호의 메뉴가 실행되면 그것에 해당하는 커널 소스가 실행되는 과정(함수 호출)이 트리 구조 형태로 콘솔 화면에 출력 됩니다. 함수가 실행 되면서 출력되는 데이터들도 자세히 확인하여 소스와 비교하면서 분석할 수 있습니다.

콘솔 화면에서 실행되는 메뉴 구조는 다음과 같이 Main Menu에서부터 메뉴 순번을 입력하여 실행을 전개할 수 있습니다. 해당 메뉴에서 0번을 입력하면 앞메뉴로 이동(exit) 합니다.

소스 공유(github)

지금까지 요약 설명한 커널연구회의 "리눅스 커널 소스 실행 분석기”의 소스는 github을 통해서 공유 하여 다같이 참여하여 기능을 지속적으로 개선하는 방향으로 진행 합니다. 아울러 커널연구회 멥버쉽에 가입하시면 다음과 같은 혜택이 주어 집니다.

멤버쉽 혜택:
커널연구회 제작 커널 소스 분석기 소스 제공.
커널 소스 분석기 github 접근 계정(commit & push 권한) 제공.
커널연구회 소스 실시간 동영상 강의 제공.
오프라인 강화 교육 참여권 제공.
커널 소스 메인테이너 맞춤형 성장 지원.
커널 엔지니어 인증 수료증서 제공.
커널 엔지니어로 성장할 수 있도록 멤버쉽 지원.
커널연구회 멤버쉽에는 가입비 및 월회비가 있습니다.(상담 및 면접시 비용 결정)

또한 자립형 사립으로 개설되어 있는 커널연구회에 입소하실 수도 있습니다. 입소생은 학기별로 일년에 두번(3월과 7월) 소수 정예인원을 모집합니다. 입소생에게는 커널연구회 멤버쉽 혜택과 함께 연구소에 상주하면서 커널 엔지니어로 성장할 수 있는 맞춤형 교육 프로그램들을 진행합니다. 입소생 모집은 2021년 3월에 커널연구회 홈페이지(www.kernel.bz) 공고를 통하여 진행할 예정입니다. 입소비용은 면접을 통해서 결정하며 많은 관심과 참여 바랍니다.

*커널연구회의 "리눅스 커널 소스 실행 분석기” 소스는 2021년 3월부터 github에 공개할 예정입니다.
분석기에 대한 좀더 자세한 내용은 아래 링크 참조 바랍니다.

https://www.kernel.bz/blogPost/kanalyzer

기타 궁금한 사항은 댓글 주시기 바랍니다. 감사합니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.