이 페이지에서는 Android의 원활한 작동에 필요한 Linux 커널 인터페이스의 하위 집합을 설명합니다. 이러한 인터페이스의 존재 여부와 정확성은 공급업체 테스트 모음(VTS)의 일부로 테스트됩니다. 이 하위 집합은 시간이 지남에 따라 확장되어 Android 커널 인터페이스의 많은 부분을 포함하게 됩니다.
시스템 호출
모든 시스템 호출은 동일한 버전의 업스트림 Linux 커널에서처럼 같은 서명 및 의미 체계를 제공해야 합니다.
prctl
Android는 지원되는 커널 버전에 관한 업스트림 prctl
연산 외에 추가 prctl
연산을 사용하며 구현은 android-common 커널에서 찾을 수 있습니다.
PR_SET_TIMERSLACK_PID PR_SET_VMA
파일 시스템
Linux 커널은 여러 파일 시스템을 통해 인터페이스를 내보냅니다. Android에서는 이러한 인터페이스가 같은 형식으로 동일한 정보를 전달하고 업스트림 Linux 커널에서와 동일한 의미 체계를 제공할 것으로 기대합니다. 업스트림에 없는 인터페이스의 경우 Android 공통 커널의 상응하는 분기가 적절한 동작을 지정합니다.
procfs
인터페이스 | 설명 |
---|---|
/proc/asound/ | 현재 구성된 ALSA 드라이버의 목록을 보여주는 읽기 전용 파일입니다. |
/proc/cmdline | 커널에 전달되는 명령줄 인수가 포함된 읽기 전용 파일입니다. |
/proc/config.gz | 커널 빌드 구성을 포함하는 읽기 전용 파일입니다. |
/proc/cpuinfo | 아키텍처 관련 CPU 세부 정보가 포함된 읽기 전용 파일입니다. |
/proc/diskstats | 블록 기기의 I/O 통계를 표시하는 읽기 전용 파일입니다. |
/proc/filesystems | 커널에서 현재 지원하는 파일 시스템을 나열하는 읽기 전용 파일입니다. |
/proc/kmsg | 커널 메시지를 실시간으로 표시하는 읽기 전용 파일입니다. |
/proc/loadavg | 시간에 다른 CPU 및 IO 로드 평균을 나타내는 읽기 전용 파일입니다. |
/proc/meminfo | 메모리 하위 시스템 세부 정보를 표시하는 읽기 전용 파일입니다. |
/proc/misc | 기타 주요 기기에 등록된 기타 드라이버를 나열하는 읽기 전용 파일입니다. |
/proc/modules | 로드된 커널 모듈에 대한 정보가 들어있는 읽기 전용 파일입니다. |
/proc/mounts | 마운트된 파일 시스템에 관한 정보를 나열하는 읽기 전용 파일인 /proc/self/mounts 에 관한 심볼릭 링크입니다. |
/proc/net | 다양한 네트워크 스택 매개변수가 포함된 디렉터리입니다. |
/proc/net/xt_qtaguid/ | 태그가 지정된 소켓에 대한 정보를 제공하는 읽기-쓰기 파일입니다. |
/proc/pagetypeinfo | 페이지 할당자 정보가 포함된 읽기 전용 파일입니다. |
/proc/stat | 다양한 커널 및 시스템 통계를 포함하는 읽기 전용 파일입니다. |
/proc/swaps | 스왑 공간 사용률을 보여주는 읽기 전용 파일입니다. 이 파일은 선택 사항입니다. 파일이 있는 경우에만 파일의 내용과 권한이 VTS에서 확인됩니다. |
/proc/sys/abi/swp | 사용되지 않는 ARM 명령 SWP의 동작을 결정하는 읽기/쓰기 파일입니다. |
/proc/sys/fs/pipe-max-size | 개별 파이프 버퍼의 최대 크기를 바이트 단위로 보고하는 읽기/쓰기 파일입니다. |
/proc/sys/fs/protected_hardlinks | 하드 링크 생성 동작을 제어하는 읽기-쓰기 파일입니다. |
/proc/sys/fs/protected_symlinks | 심볼릭 링크 생성 동작을 제어하는 읽기/쓰기 파일입니다. |
/proc/sys/fs/suid_dumpable | setuid 또는 그렇지 않은 경우 보호되는/지원되지 않는 바이너리의 코어 덤프 모드를 제어하는 읽기/쓰기 파일입니다. |
/proc/sys/kernel/core_pattern | 코어 덤프 파일 이름 패턴을 지정하는 읽기-쓰기 파일입니다. |
/proc/sys/kernel/core_pipe_limit | 사용자 애플리케이션으로 동시에 전달될 수 있는 동시 충돌 프로세스 수를 정의하는 읽기/쓰기 파일입니다. |
/proc/sys/kernel/dmesg_restrict | 권한이 없는 사용자가 dmesg에 액세스할 수 있는지를 제어하는 읽기/쓰기 파일입니다. |
/proc/sys/kernel/domainname | 시스템의 YP/NIS 도메인 이름이 포함된 읽기-쓰기 파일입니다. |
/proc/sys/kernel/hostname | 시스템의 호스트 이름을 결정하는 읽기-쓰기 파일입니다. |
/proc/sys/kernel/hung_task_timeout_secs | 작업이 무응답 상태가 되어 중단된 것으로 간주되어야 할 시점을 판단하는 데 사용되는 시간 제한을 제어하는 읽기/쓰기 파일입니다. 이 파일은 선택 사항입니다. 파일이 있는 경우에만 파일의 내용과 권한이 VTS에서 확인됩니다. |
/proc/sys/kernel/kptr_restrict | 커널 포인터를 proc 파일 및 다른 인터페이스로 인쇄할지 판단하는 읽기/쓰기 파일입니다. |
/proc/sys/kernel/modules_disabled | 커널 모듈을 로드할지 여부를 제어하는 읽기-쓰기 파일입니다. |
/proc/sys/kernel/panic_on_oops | OOP에 대한 커널의 동작을 제어하는 읽기-쓰기 파일입니다. |
/proc/sys/kernel/perf_event_max_sample_rate | 성능 이벤트의 최대 샘플링 레이트를 제어하는 읽기/쓰기 파일입니다. |
/proc/sys/kernel/perf_event_paranoid | 권한이 없는 사용자의 성능 이벤트 시스템 사용을 제어하는 읽기/쓰기 파일입니다. |
/proc/sys/kernel/pid_max | PID 할당 줄 바꿈 값이 포함된 읽기-쓰기 파일입니다. |
/proc/sys/kernel/random/boot_id | 각 부팅 시 임의의 새 ID를 포함하는 읽기 전용 파일입니다. |
/proc/sys/kernel/randomize_va_space | 시스템의 주소 레이아웃 무작위 순서 지정 정책을 판단하는 읽기/쓰기 파일입니다. |
/proc/sys/kernel/sched_child_runs_first | 일정 예약 시 상위 작업보다 새로 포크된 작업을 우선할지를 제어하는 읽기/쓰기 파일입니다. |
/proc/sys/kernel/sched_latency_ns | 예약되기 전에 작업이 발생할 수 있는 최대 지연 시간(나노초)을 포함하는 읽기/쓰기 파일입니다. |
/proc/sys/kernel/sched_rt_period_us | 시스템 전체 RT 실행 제한(마이크로초)에 사용되는 기간이 포함된 읽기/쓰기 파일입니다. |
/proc/sys/kernel/sched_rt_runtime_us | 시스템에서 RT 작업을 실행할 수 있는, sched_rt_period_us를 기준으로 한 시간의 양이 포함된 읽기/쓰기 파일입니다. |
/proc/sys/kernel/sched_tunable_scaling | sched_latency_ns가 CPU 수에 따라 스케줄러에 의해 자동으로 조정되어야 하는지를 제어하는 읽기/쓰기 파일입니다. |
/proc/sys/kernel/sched_wakeup_granularity_ns | 작업 B가 작업 A보다 우선하기 위해 작업 A가 작업 B보다 더 많이 보유하고 있어야 하는 가상 런타임(나노초)이 포함된 읽기/쓰기 파일입니다. |
/proc/sys/kernel/sysrq | sysrq 키를 통해 호출하도록 허용되는 함수를 제어하는 읽기/쓰기 파일입니다. |
/proc/sys/net/* | 다양한 네트워크 스택 매개변수가 포함된 디렉터리입니다. |
/proc/sysrq-trigger | sysrq 함수를 시작하는 데 사용할 수 있는 쓰기 전용 파일입니다. |
/proc/sys/vm/dirty_background_ratio | 백그라운드 커널 플러셔 스레드가 더티 데이터 쓰기를 시작하는 페이지 수를 총 가용 메모리(여유 페이지 및 다시 사용 가능한 페이지)의 백분율로 포함하는 읽기/쓰기 파일입니다. |
/proc/sys/vm/dirty_expire_centisecs | 커널 플러셔 스레드에서 더티 데이터가 쓰기에 적합하도록 오래되는 시점을 정의하는 읽기/쓰기 파일입니다. |
/proc/sys/vm/drop_caches | 커널이 클린 캐시를 삭제하도록 강제하는 데 사용할 수 있는 읽기/쓰기 파일입니다. |
/proc/sys/vm/extra_free_kbytes | 백그라운드 회수(kswapd)가 시작되는 임계값과 프로세스를 할당하여 직접 회수가 시작되는 임계값 사이에 추가 여유 메모리를 유지하는 데 사용할 수 있는 읽기/쓰기 파일입니다. 이 파일은 선택 사항입니다. 파일이 있는 경우에만 파일의 내용과 권한이 VTS에서 확인됩니다. |
/proc/sys/vm/max_map_count | 프로세스가 가질 수 있는 메모리 맵 영역의 최대 개수가 포함된 읽기/쓰기 파일입니다. |
/proc/sys/vm/mmap_min_addr | mmap 될 수 있는 최소 주소를 판단하는 읽기/쓰기 파일입니다. |
/proc/sys/vm/mmap_rnd_bits | mmap 된 주소의 임의성 정도를 지정하는 읽기/쓰기 파일입니다. |
/proc/sys/vm/mmap_rnd_compat_bits | mmap 된 주소의 임의성 정도를 지정하는 읽기/쓰기 파일입니다. |
/proc/sys/vm/overcommit_memory | 커널 가상 메모리 계산 모드를 판단하는 읽기/쓰기 파일입니다. |
/proc/sys/vm/page-cluster | 단일 시도에서 스왑으로부터 연속 페이지를 읽는 최대 페이지 수를 제어하는 읽기/쓰기 파일입니다. |
/proc/uid_cputime/remove_uid_range | 쓴 경우 /proc/uid_cputime/show_uid_stat 에 UID가 표시되지 않도록 하는 쓰기 전용 파일입니다. |
/proc/uid_cputime/show_uid_stat | 사용자 및 커널 공간에서 UID 프로세스에 소요된 시간이 포함된 읽기 전용 파일입니다. |
/proc/uid_io/stats | 시스템에서 각 UID의 I/O 통계 목록을 포함하는 읽기 전용 파일입니다. |
/proc/uid_procstat/set | UID를 포그라운드 또는 백그라운드로 구성하는 데 사용되는 쓰기 전용 파일입니다. |
/proc/uid_time_in_state | 각 UID의 프로세스가 사용 가능한 빈도로 실행될 때 소요되는 시간을 포함하는 읽기 전용 파일입니다. 이 파일은 선택 사항입니다. 파일이 있는 경우에만 파일의 내용과 권한이 VTS에서 확인됩니다. |
/proc/uptime | 시스템이 실행된 기간을 표시하는 읽기 전용 파일입니다. |
/proc/version | 커널 버전을 설명하는 문자열이 포함된 읽기 전용 파일입니다. |
/proc/vmallocinfo | vmalloc 된 범위를 포함하는 읽기 전용 파일입니다. |
/proc/vmstat | 커널의 가상 메모리 통계가 포함된 읽기 전용 파일입니다. |
/proc/zoneinfo | 메모리 영역에 대한 정보가 포함된 읽기 전용 파일입니다. |
dev
인터페이스 | 설명 |
---|---|
/dev/ashmem | 익명의 공유 메모리 기기 파일입니다. |
/dev/binder | 바인더 기기 파일입니다. |
/dev/hwbinder | 하드웨어 바인더 기기 파일입니다. |
/dev/tun | 범용 TUN/TAP 기기 파일입니다. |
/dev/xt_qtaguid | QTAGUID 넷필터 기기 파일입니다. |
sysfs
인터페이스 | 설명 |
---|---|
/sys/class/net/*/mtu | 각 인터페이스의 최대 전송 단위를 포함하는 읽기/쓰기 파일입니다. |
/sys/class/rtc/*/hctosys | 특정 rtc가 부팅 및 다시 시작 시 시스템 시간을 제공하는지 표시하는 읽기 전용 파일입니다. |
/sys/devices/system/cpu/ | CPU 구성 및 실행 빈도에 관한 정보가 포함된 디렉터리입니다. |
/sys/kernel/wakeup_reasons | 마지막 일시 정지 시간 및 다시 시작 사유가 포함된 읽기 전용 파일의 디렉터리입니다. |
/sys/power/state | 시스템 절전 상태를 제어하는 읽기-쓰기 파일입니다. |
/sys/power/wake_lock | 활성 wake lock이 포함된 읽기-쓰기 파일입니다. |
/sys/power/wake_unlock | 비활성 wake lock을 포함하는 읽기-쓰기 파일입니다. |
/sys/power/wakeup_count | wakeup 이벤트의 동시 도착을 고려하여 시스템을 절전 모드 상태로 전환하는 데 사용할 수 있는 읽기/쓰기 파일입니다. |
selinuxfs
이 프레임워크는 /sys/fs/selinux
에서 selinuxfs
를 마운트합니다.
경로 | 설명 |
---|---|
/sys/fs/selinux/checkreqprot | mmap 및 mprotect 호출 시 selinux 보호가 검사되는 방식을 판단하는 바이너리 플래그가 포함된 읽기/쓰기 파일입니다. |
/sys/fs/selinux/null | selinux에서 사용하도록 null 기기를 읽고 씁니다. |
/sys/fs/selinux/policy | selinux 정책을 바이너리 형식으로 포함하는 읽기 전용 파일입니다. |