커널 선점 구성을 어떻게 확인할 수 있습니까?


11

Linux 커널이 선점 형인지 비선 점형인지 확인하고 싶습니다. 다음과 같은 명령을 사용하여 이것을 어떻게 확인할 수 uname -a있습니까?

답변:


10

커널이 선점 형인지 여부는 Linux 커널에서와 같이 선점하려는 대상에 따라 달라지며 선점을 별도로 활성화 / 비활성화 할 수있는 여러 가지가 있습니다.

커널이 활성화 CONFIG_IKCONFIG하고 CONFIG_IKCONFIG_PROC활성화 한 /proc/config.gz경우 다음을 통해 선점 구성을 찾을 수 있습니다 (없는 경우 일부 배포판은 커널 구성을 /boot대신 제공합니다).

$ gzip -cd /proc/config.gz | grep PREEMPT
CONFIG_TREE_PREEMPT_RCU=y
CONFIG_PREEMPT_RCU=y
CONFIG_PREEMPT_NOTIFIERS=y
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not set
CONFIG_PREEMPT=y
CONFIG_PREEMPT_COUNT=y
# CONFIG_DEBUG_PREEMPT is not set
# CONFIG_PREEMPT_TRACER is not set

CONFIG_IKCONFIG하지만 아직 가지고 있지 않은 CONFIG_IKCONFIG_PROC커널 커널 이미지에서 커널 이미지를 얻을 수 있습니다 extract-ikconfig.


라즈베리에 커널 모듈을 만들어 외부 센서와 대화하여 온도를 묻습니다. 센서와 통신하려면 지정된 시간 (ms) 동안 GPIO 핀 입력 및 출력을 설정해야합니다. 모듈이 잘 작동합니다. 스케줄러가 다른 프로세스에 의해 선점되지 않은 커널 모듈도 선점되면 타이밍이 잘못되고 센서에서 얻은 결과가 잘못되기 때문입니다.
mikmik

2

선점 가능한 커널 (대기 시간이 짧은 데스크탑) PREEMPT의 버전 이름 ( uname -a)으로 태그 가 지정되었습니다 . 이것은 또한 /proc/version주어진 커널에서 모듈을로드 할 수 있는지 여부를 결정하는 데 사용되는 "version magic"문자열에 표시됩니다 (예 :

mymodule: version magic '3.4.35 mod_unload ARMv7 p2v8 ' 
              should be '3.4.35 preempt mod_unload ARMv7 p2v8 '

에 대한 태그가 없습니다 CONFIG_PREEMPT_VOLUNTARY.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.