Linux

리눅스 커널 소스의 구조

arch

arch 하부 디렉토리에는 아키텍처별로 동작하는 커널 코드가 있습니다.

  • arm: 32비트 계열 ARM 아키텍처 코드가 있다.
  • arm64: 64비트 계열 ARM 아키텍처 코드가 있습니다.
  • x86: 폴더 이름과 같이 인텔 x86 아키텍처 코드가 있습니다.

include

include에는 커널 코드 빌드에 필요한 헤더 파일이 있습니다.

Documentation

커널 기술 문서가 있는 폴더로, 커널 시스템에 대한 기본 동작을 설명하는 문서를 찾을 수 있습니다. 커널 개발자를 대상으로 작성된 문서이기에 커널에 대한 기본 지식이 없으면 이해하기가 조금 어렵습닏.

kernel

커널의 핵심 코드가 있는 디렉토리로, 다음과 같은 하위 디렉토리를 확인할 수 있습니다.

  • irq: 인터럽트 관련 코드
  • sched: 스케줄링 코드
  • power: 커널 파워 매니지먼트 코드
  • locking: 커널 동기화 관련 코드
  • printk: 커널 콘솔 관련 코드
  • trace: ftrace 관련 코드

위 디렉토리에는 아키텍처와 무관한 커널 공통 코드가 있으며, 아키텍처별로 동작하는 커널 코드는 arch/*/kernel/에 있습니다.

mm

Memory Management의 약자로 가상 메모리 및 페이징 관련 코드가 들어 있습니다.

 

아키텍처별로 동작하는 메모리 관리 코드는 arch/*/mm/ 아래에 있습니다.

drivers

모든 시스템의 디바이스 드라이버 코드가 있습니다. 하부 디렉토리에 드라이버 종류별 소스가 들어 있습니다.

fs

모든 파일 시스템 코드가 담긴 폴더입니다. fs 폴더에 있는 파일에는 파일 시스템 공통 함수가 들어 있고 파일 시스템별로 하나씩 세분화된 폴더를 볼 수 있습니다.

lib

lib 디렉토리에는 커널에서 제공하는 라이브러리 코드가 있습니다. 아키텍처에 종속적인 라이브러리 코드는 arch/*/lib/에 있습니다.

 

'Linux' 카테고리의 다른 글

PCIe ASPM Error  (0) 2023.07.02
i2c-tools  (0) 2023.01.28
SSD 자동 인식  (0) 2023.01.28
Memory mapping  (0) 2022.11.27
CANdevStudio  (0) 2022.05.19