ARM アーキテクチャの ASID (アドレス空間識別子) は、レジスタ内の 8 ビットを占有します。つまり、256 個の ASID を割り当てることができます。しかし、Linux カーネルでは、同時に実行できるタスクの数は 1024 を超えます。Linux カーネルで ASID が使い果たされた場合の対処方法は? カーネルのソース コードを確認したところ、ASID が使い果たされると、カーネルは最初から ASID を新しいタスクに割り当てます。1 つの状況を考慮すると、最新のタスクが最初の ASID (0b1000 0000 0000 0001) を所有していますが、1 つのタスクが既に同じ ASID を所有している必要があります。その 2 つのタスクでテキストを切り替える必要がある場合はどうすればよいでしょうか? 関連するカーネル ソース コードが見つかりませんでした。Linux カーネルの関連コードは ~/kernel/core.c context_switch() にあります。
よろしくお願いします。ヘロン