[Linuxカーネル]リアルタイムスケジューリングクラス①(プロセス分類|リアルタイムプロセス、共通プロセス| LinuxカーネルSCHED_FIFO、SCHED_RRスケジューリングポリシー|リアルタイムスケジューリングエンティティsched_rt_entity)





1.プロセス分類(リアルタイムプロセス|通常のプロセス)



Linuxプロセスは、「リアルタイムプロセス」「通常プロセス」の2つのカテゴリに分類されます。

「リアルタイムプロセス」の 優先度は 「通常プロセス」よりも高くなります。現在のLinuxシステムの実行キューに「リアルタイムプロセス」がある場合、スケジューラは「リアルタイムプロセス」を優先的選択します。スケジューリング用。

実行キューに複数のリアルタイムプロセスがある場合、スケジューラーは実行の優先度が最も高い「リアルタイムプロセス」を選択します。


プロセス分類「リアルタイムプロセス」「通常プロセス」「限定プロセス」、参照可能

ブログ;





2.Linuxカーネルスケジューリングポリシー



[ Linuxカーネル]スケジューラ⑨(Linuxカーネルスケジューリングポリシー|SCHED_NORMALポリシー|SCHED_FIFOポリシー|SCHED_NORMALポリシー|SCHED_BATCHポリシー)ブログでは、Linuxカーネル関連のスケジューリングポリシーが紹介されています。


1.SCHED_FIFOスケジューリングポリシー


SCHED_FIFO「リアルタイムプロセススケジューリング戦略」であり先入れ先出し(先入れ先出し)スケジューリング戦略です。

この戦略には、CPUタイムスライスメカニズム(時分割多重メカニズム)は含まれていません。優先度の高いプロセスがない場合は、他のプロセスがCPUリソースをアクティブに解放するのを待つ。

SCHED_FIFOスケジューリング戦略では、スケジューラーによって実行されるようにスケジュールされたプロセスの実行時間は無制限であり、任意の時間実行できます。


2.SCHED_RRスケジューリング戦略


SCHED_RRこれはタイムスライスローテーションメカニズムを使用する「リアルタイムプロセススケジューリング戦略」であり、対応する時間値は実行時に減少します。

プロセス がCPUタイムスライス後、プロセスの優先度に対応する実行キュー最後に追加されます。

同時に、CPUリソースが解放され、CPUタイムスライスが同じます。





3.リアルタイムスケジューリングエンティティsched_rt_entity



リアルタイムスケジューリングエンティティは、Linuxカーネルソースコードのsched_rt_entity構造。

sched_rt_entityLinuxカーネルソースコードのlinux-5.6.18\include\linux\sched.hヘッダー

struct sched_rt_entity {
    
    
	struct list_head		run_list;
	unsigned long			timeout;
	unsigned long			watchdog_stamp;
	unsigned int			time_slice;
	unsigned short			on_rq;
	unsigned short			on_list;

	struct sched_rt_entity		*back;
#ifdef CONFIG_RT_GROUP_SCHED
	struct sched_rt_entity		*parent;
	/* rq on which this entity is (to be) queued: */
	struct rt_rq			*rt_rq;
	/* rq "owned" by this entity/group: */
	struct rt_rq			*my_q;
#endif
} __randomize_layout;

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/han1202012/article/details/123858582