Câu trả lời:
Việc một hạt nhân có được ưu tiên hay không phụ thuộc vào những gì bạn muốn ưu tiên, như trong nhân Linux, có nhiều thứ khác nhau có thể được kích hoạt / vô hiệu hóa quyền ưu tiên.
Nếu kernel của bạn có CONFIG_IKCONFIG
và CONFIG_IKCONFIG_PROC
được bật, bạn có thể tìm hiểu cấu hình quyền ưu tiên của mình thông qua /proc/config.gz
(nếu bạn không có điều này, một số bản phân phối sẽ gửi cấu hình kernel /boot
thay thế):
$ 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
Nếu bạn có CONFIG_IKCONFIG
, nhưng không CONFIG_IKCONFIG_PROC
, bạn vẫn có thể lấy nó ra khỏi ảnh kernel extract-ikconfig
.
Một hạt nhân có thể chấp nhận được (máy tính để bàn có độ trễ thấp) đã PREEMPT
được gắn thẻ trong tên phiên bản của nó ( uname -a
). Điều này cũng xuất hiện trong /proc/version
và trong chuỗi "phiên bản ma thuật" được sử dụng để quyết định xem các mô-đun có thể / không thể được tải trên một hạt nhân nhất định hay không, vd
mymodule: version magic '3.4.35 mod_unload ARMv7 p2v8 '
should be '3.4.35 preempt mod_unload ARMv7 p2v8 '
Không có gắn thẻ như vậy tồn tại cho CONFIG_PREEMPT_VOLUNTARY
, afaik.