리눅스 커널 소스의 구조

김민세·2022년 11월 1일
0
post-thumbnail

리눅스 커널 소스의 구조

앞에 내용을 보고 왔으면 커널 코드를 수정해서 실습 코드를 빌드할 수 있는 준비를 끝낸 것이다. 리눅스 커널 코드의 디렉터리 구조를 볼 것이다.


디렉터리

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

  • arm: 32비트 계열 ARM 아키텍처 코드가 있으며, 라즈비안도 이 하부 디렉터리 코드를 실행한다.
  • arm64: 64비트 계열 ARM 아키텍처 모드가 있다.
  • x85: 폴더 이름과 같이 인텔 x86 아키텍처 코드가 있다.

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

kernel
커널의 핵심 코드가 있는 디렉터리이다.

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

위 디렉터리에는 아키텍처와 무관한 커널 콩통 코드가 있다. 아키텍처별로 동작하는 커널 코드는 arch/*/kernel/에 있다. 라즈비안의 경우 ARMv7 아키텍처 관련 코드를 arch/arm/kernel/에서 확인할 수 있다.

mm
Memory Management의 약자로 가상 메모리 및 페이징 관련 코드가 있다.
아키텍처별로 동작하는 메모리 관리 코드는 arch/arm/mm에서 확인할 수 있다.

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

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

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

profile
김민세

0개의 댓글