Android Kernel 주요 디렉토리

Kernel 주요 디렉토리

Top

  • Kernel의 Top디렉토리는 kernel을 빌드하기 위한 Makefile을 가지고 있으며 모든 빌드 동작은 이 디렉토리에서 시작된다.

arch

  • Architecture 즉 프로세서(CPU), Soc(AP) 및 타깃 보드 관련된 소스가 구현된 디렉토리이다.
  • 각 CPU별 디렉토리를 가지고 있으며, ARM프로세스 관련 소스는 arm 디렉토리에 구현
  • arm 디렉토리는 kernel의 로우 레벨 처리를 위한 kernel 데릭토리, 로우 레벨 메모리 관리를 위한 mm 디렉토리, 그리고 어셈블리어로 kernel 라이브러리를 구현한 lib 디렉토리가 있다.
  • 칩셋, 타겟 보드 소스를 구현한 platform 및 머신 디렉토리를 포함한다.
  • Kernel 초기화는 압축 해제 이후 kernel 디렉토리의 head.S 어셈블리 소스에서 시작된다.

crypto

  • 암호화 API

Documentation

  • 리눅스 커널 및 디바이스 드라이버에 대한 많은 자료를 가지고 있다.

drivers

  • 리눅스의 디바이스 드라이버를 구현
  • 각 드라이버는 별도의 디렉토리와 소스로 구성되어 있다.

fs

  • VFS와 그밖의 파일 시스템
  • fat, ext2, ext3, ext4 등 다양한 파일시스템을 구현한 디렉토리로 구성

include

  • 리눅스 커널에서 사용되는 일반적인 헤더를 정의한 디렉토리
  • 타깃 CPU 및 보드에 대한 헤더 파일은 arch 디렉토리의 include 디렉토리에 구현

init

  • kernel의 초기화 절차를 관리하는 main.c 파일을 가지는 디렉토리
  • main.c 파일의 start_kernel() 함수에서 kernel의 초기화 절차를 일괄적으로 관리
  • 디바이스 드라이버 초기화 이후 루트 파일 시스템을 mount하고 init 프로세스(응용 프로그램 시작)를 실행
  • start_kernel() 함수는 arch/arm/kernel 디벡토리의 어셈블 소스 head.S 및 head-commons.S에서 kernel 초기화를 위한 시스템 설정 후 호출

ipc

  • 시스템 V IPC
  • 세마포어, 메시지 큐, 공유메모리 기능을 구현한 디렉토리
  • Android의 driver/binder 및 ashem 폴더에 구현

kernel

  • 스케쥴러, 프로세스 등 kernel의 주요기능 구현
  • 예외처리 및 인터럽트 처리, 주기적인 타이머 인터럽트를 처리하기 위한 소스 등이 구현
  • 이 디렉토리에 구현된 소스는 모두 프로세서와 무관하게 kernel에서 동작하는 소스
  • 프로세스 관련 로우레벨 소스는 arch/arm/kernel 디렉토리에 구현

lib

  • kernel에서 사용되는 라이브러리를 구현한 디렉토리
  • 이 디렉토리에 구현된 라이브러리는 c언어로 구현
  • 라이브러리 중에서 고속 처리를 위한 어셈블 언어로 구현된 라이브러리는 arch/arm/lib 디렉토리에 있음

mm

  • 가상 주소 관리, 페이지 관리, 프로세스의 모미르 관리 등의 소스가 구현
  • 이 디렉토리는 프로세스와 무관한 메모리 관리 루틴이 구현
  • 프로세스의 메모리 시스템과 MMU나 캐시등 로우레벨 제어 동작은 arch/arm/mm 디렉토리에 구현

block

  • 블록 디바이스의 관리를 위한 소스가 구현
  • 블록 디바이스 드라이버는 drivers/block 디렉토리에 구현

net

  • 네트워크 시스템을 구현하고 있는 디렉토리
  • 소켓 관리에서 부터 시작하여 TCP/IP등 다양한 네트워크 프로토콜을 구현

script

  • kernel 빌드에 사용되는 다양한 스크립트를 가지는 디렉토리이다.
  • 주로 Host에서 Kernel 빌드에 사용되며 Kernel 소스는 아니다.

security

  • Kernel에서 필요한 보안기능을 구현
  • 응용 프로그램의 보안정책(Sercurity Policy)을 관리
  • 보안정책 수정은 /system/sepolicy, 벤더측은 /device/제조사/sepolicy
  • ps -z, ls -z로 옵션을 볼 수 있음

sound

  • 사운드 드라이버를 구현하고 있는 디렉토리
  • 사운드 드라이버는 ALSA드라이버를 기반으로 한다.
  • 칩의 사운드 인터페이스 및 코덱 드라이버가 구현
공유하기