0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

preemptの設定

Posted at

今回buildrootで作成した環境でデバドラをmakeした際に、
生成した.koをmodinfoで見てみるとvermagicにpreemptが入ってなかったので
preemptを入れるための手順を書き残す

今回はandroid-kvmの環境を利用したので実施手順は以下
(android-kvmのbuildroot -> https://android-kvm.googlesource.com/buildroot/)

  1. git clone https://android-kvm.googlesource.com/buildroot
  2. cd buildroot
  3. make linux-menuconfig
  4. General Setup -> Preemption Model ↓

で、以下の3つが出てくるので、好きなものを選んだらOK

No Forced Preemption
Voluntary Kernel Preemption
Preemptible Kernel

ちなみに上記3つについて詳しくないので、ChatGPTさんに聞いてみたところ以下のように説明してくださいました。

No Forced Preemption(強制プリエンプションなし)
この設定では、カーネルが割り込みを受け付けたときに、実行中のプロセスを中断しないようにします。つまり、カーネルは、プロセスが完全に処理を終了するまで、その処理を中断することはありません。この設定は、リアルタイムシステムのような、高度に予測可能で安定したシステムに適しています。

Voluntary Kernel Preemption(任意のカーネルプリエンプション)
この設定では、カーネルは、実行中のプロセスを割り込むことができますが、プロセスが自発的に実行を中断するまで待ちます。つまり、カーネルは、プロセスが次の待ち状態になるまで、割り込みを行いません。この設定は、リアルタイム性を重視しなければならないが、安定性も必要な場合に適しています。

Preemptible Kernel(プリエンプティブカーネル)
この設定では、カーネルは、実行中のプロセスをいつでも割り込むことができます。つまり、カーネルは、プロセスがどのような状態にあっても、割り込みを行うことができます。この設定は、リアルタイム性を重視する場合に適していますが、安定性に影響を与える可能性があるため、慎重に使用する必要があります。

上記の設定は、システムの目的や要件に応じて適切に設定する必要があります。例えば、リアルタイムシステムでは、プリエンプションの制御が重要であり、安定性が重視される場合は、"No Forced Preemption"を設定することが望ましいでしょう。

とのことです。
わかりやすくて、勉強になる。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?