9P by GN⁺ 6일전 | ★ favorite | 댓글 1개
  • 리눅스 커널은 단일 프로세스가 아닌 시스템 전체를 구성하는 핵심 계층으로, 하드웨어와 소프트웨어를 연결하는 상시 존재 구조
  • 사용자 프로세스를 위해 시스템 호출, 인터럽트, 스케줄링을 조정하며 실행을 유지
  • 커널은 가상화·매핑·격리·제어된 다층 구조로 동작
  • 학습용으로 init/main.c, kernel/fork.c, include/linux/sched.h, arch/x86/kernel/entry_64.S 등의 핵심 소스 파일 제시
  • 커널의 구조와 역할을 이해하기 위한 기초 학습 자료로서 중요

커널의 본질

  • 커널은 프로세스가 아닌 시스템 자체로, 하드웨어와 소프트웨어를 연결하는 항상 존재하는 권위적 계층
    • 사용자 프로세스의 실행을 지원하고, 시스템 자원을 관리하는 중심 역할 수행
  • 커널은 프로세스를 서비스하는 주체로, 시스템 호출(syscall), 인터럽트, 스케줄링을 조정하여 사용자 작업을 유지

시스템의 계층 구조

  • 커널은 가상화되고 매핑된 격리된 제어 구조로 구성
    • 런타임에서 여러 계층이 상호작용하며 시스템 안정성과 제어를 유지

학습용 파일

  • 커널 구조를 이해하기 위한 주요 파일로 다음 네 가지 제시
    • init/main.c
    • kernel/fork.c
    • include/linux/sched.h
    • arch/x86/kernel/entry_64.S

개념 확인 문제

  • 커널과 프로세스의 근본적 차이: B. 커널은 프로세스가 아니라 시스템 자체
  • 커널이 사용자 프로세스를 지원하는 방식: B. 시스템 호출, 인터럽트, 스케줄링을 조정
  • 커널의 계층적 특성: C. 가상화되고 매핑된, 격리되고 제어된 구조
Hacker News 의견
  • 정말 멋진 프로젝트임. 탈무드 페이지 구성이 떠오름 — 수백 년간의 주석이 한 페이지 안에 겹겹이 쌓여 있는 구조가 흥미로웠음
    코드가 그런 식으로 선형적이지는 않지만, 이 Linux Kernel Explorer에서도 비슷한 ‘주석의 층위’가 느껴짐
    옆에 달린 노트 형식이 특히 마음에 듦
    관련 참고 링크: Talmud 페이지 레이아웃, Talmud 레이아웃 노트

    • 탈무드는 말하자면 원조 하이퍼텍스트 같음 (확신은 없지만 그런 느낌임)
  • 뭔가 놓친 게 있는 듯함. 이미 오래전부터 커널 소스를 웹에서 탐색할 수 있었음 — 예를 들어 Elixir Bootlin 같은 사이트가 있음
    그런데 이건 어떤 추가 기능을 제공하는지 모르겠음. Bootlin은 검색도 되는데 여기선 안 보임
    요즘 시대라면 LLM 기반 코드 설명이나 의존성 그래프 같은 걸 기대했음

    • “AI 시대의 황금기!”라며 기대했는데, 실제로는 기존 기능을 새 웹 프레임워크로 포장한 AI 리믹스 수준이라 조금 아쉬움
  • GitHub API가 rate limit에 걸려 파일 목록이 안 뜸
    같은 문제 겪는 사람은 VPN이나 Cloudflare Wrap으로 IP를 바꾸면 해결됨
    개발자라면 GitHub 로그인 옵션이나 캐싱 레이어를 추가해주면 새 사용자가 접근하기 쉬울 것 같음

    • 문제를 알려줘서 고맙다는 답변을 받았음. 구현이 단순했음을 깨닫고 개선하겠다고 함
  • 이런 도구 정말 좋아함. 예전에 Red Hat에서 만든 비슷한 툴로 브라질 전자투표기 소스코드를 분석했던 기억이 있음
    당시엔 중복 파일과 기능을 정리하는 일을 맡았는데, Motif UI 기반의 데스크톱 앱이었음

  • 이런 아이디어가 정말 마음에 듦. 복잡한 프로젝트 코드를 탐색할 때 어디서부터 봐야 할지 막막했는데, 이 툴은 핵심 구조를 빠르게 파악할 수 있게 해줌
    다만 버그를 발견했음 — Chapter 2에서 “mm/” 같은 디렉터리를 열면 “Invalid file response” 오류가 남. 아마 디렉터리를 파일로 열려고 시도하는 듯함

  • 이 Explorer는 많은 개발자에게 꼭 필요했던 도구 같음
    커널 소스는 방대하고 복잡해서 어디서 시작해야 할지 몰랐는데, 이건 일종의 지도처럼 구조를 보여줌
    VFS나 모듈 연결 방식도 한눈에 볼 수 있고, API 제한이나 디렉터리 오류 같은 문제는 있어도 훌륭한 첫걸음임

    • 예전의 LXR이 떠오름.
      나도 리눅스 일을 시작할 때 큰 도움이 되었고, 이후 Python으로 재구현된 Elixir소스코드도 있음
    • 하지만 “master를 pull할 수도, grep이나 gmake도 안 되는데 이게 무슨 용도인가?”라는 의문도 있음
  • Elixir Bootlin은 이미 오래됐지만 모바일에서 더 잘 작동

    • 모바일 대응성 피드백 고맙다는 답변을 받았고, 개선하겠다고 함
    • Elixir는 태그 탐색이 가능해서 파일 단위가 아닌 코드 전체 탐색에 더 적합함
  • 정말 멋져 보임. 작성자는 fabiomaia.eu였음
    비슷한 툴을 Python용으로 만들어달라고 요청할 생각임
    새 엔지니어들에게 CPython 저장소 구조를 가르칠 때 유용할 것 같음

    • “직접 만들어보면 어떨까?”라는 반응도 있었음. 오픈소스에서는 빠른 구현과 이슈 대응을 기대하는 게 흔한 일임
  • 문득 궁금함 — 커널 코드 중에서 가장 감탄스러운 부분은 어디인지?

    • 아마도 fs/select.cpolling 메커니즘 부분일 것 같음
  • Chapter 1의 arch/x86/kernel/entry_64.S 파일이 열리지 않음
    디렉터리 트리에도 보이지 않음
    (이 문제를 언급한 다른 댓글이 있었는데 삭제된 듯함)

    • 경로 오타일 가능성이 높음. 실제로는 arch/x86/entry/entry_64.S여야 함