Android 기반 커널

개요

  • Hardware System을 관리할 뿐 아니라 응용 소프트웨어를 실행하기 위한 기능과 서비스를 제공하는 System Software이다.
  • 실행되는 응용 프로그램들이 Memory, CPU, I/O장치 등의 자원들을 사용할 수 있도록 만들어 주고 공통적으로 사용할 수 있는 Service를 제공한다.

Process 관리

  • Process 생성, 제거, Process간 통신(IPC)를 관리
  • 스케쥴링에 의한 승인 여부 및 CPU Time 할등 등을 제어

메모리 관리

  • 모든 Process에 대한 가상 주소(Virtual Address)영역을 구축하며 System Call을 통해 메모리 관리 하위 시스템(Memory Subsystem)과 통신
  • 메모리 할당 및 보호

네트워크 관리

  • 입력되는 패킷은 모두 비동기식 이벤트이므로 Process가 처리할 수 있게 Packet을 모아서 식별한 후 Process로 전달해 주어야 함.

File System 관리

  • FS는 File을 관리하는 방법(파일의 생성, 접근 제어, 디렉토리 관리)을 의미
  • 제품별로 FS의 종류가 다를 수 있음
  • FS는 Kernel 내부에 포함되어 있으며 응용프로그램에서 사용할 FS를 선택 가능(mount등)
  • UNIX 계역은 FS 구조에 크게 의존하며 응용프로그램의 거의 모든 요소를 파일로 취급

Device(장치) 제어

  • Device를 제어하기 위한 Software는 OS에 포함되어 있으며 이를 Device Driver라 한다.

Process

  • 응용프로그램을 실행하고 있는 동안, Kernel은 실행되는 모든 Processor들을 스케쥴링 하며 마치 그들이 동시에 수행되는 것 처럼 보이는 효과를 낸다.

    Kernel의 Process

    → 한 Process당 4GB(32bit 기준)의 가상 메모리를 할당 받는다.

Device Driver

  • Android에서 사용되는 Kernel의 경우 추가적인 Device Driver가 필요하다.
    • Binder, Ashmem, Low Memory Killer, Logcat Utility, early suspend, late resume등
  • Module 구동 방식
    • Kernel이 동작중인 상태에서 Device Driver를 동적으로 추가하거나 제거할 수 있는 개념
    • Kernel 버전이 동일해야 하는 문제(컴파일 시)가 있으며 Resource를 적게 사용할 수 있는 장점이 있다.
공유하기