あなたの読み物は良いです。だから問題はありません。また、スタンフォード大学のオペレーティングシステム設計に関するCSのダウンロード可能な講義もご覧ください。
- スケジューリングアルゴリズムは、より高度なものにする必要があるかもしれません。これは、実行中のアプリケーションの種類とそれらがどれほど貪欲であるかによって異なります。彼らは屈服するのか、それとも強制されるのか。そういうこと。これは、プロセスが何を望んでいるか、または何を期待しているかという問題です。RTOSは、デスクトップよりも複雑なスケジューリングを行います。
- 1つのプロセス内の2つのスレッドは並行して実行できますが、同じコア上で同じリアルタイムで実行することはできないため、スレッドは1つのコアに親和性がある必要があります。それらを異なるコアに配置すると、実際に並行して実行できます。また、キャッシュはコアアフィニティ用に最適化できます。これは実際には、スレッドの実装とスケジューラーの組み合わせです。スケジュールでは、スレッドが相互に待機する時間を短縮するために、アドホックではなく、コアでスレッドが同時に開始されるようにしたい場合があります。スレッドライブラリがユーザースペースの場合は、コアを割り当てるか、スケジューラーが容量または最近の死亡に基づいて決定できるようにします。
- 多くの場合、スケーラビリティはカーネルの制限です(任意の場合があります)。Linuxでは、思い出してください。制限は、スケジューラーでCPU情報構造体を保持する配列の静的なサイズ設定によるものです。したがって、それらは固定サイズです。これは、カーネルを再コンパイルすることで変更できます。最も優れたスケジューリングアルゴリズムは、非常に多くのコアをサポートします。コアまたはプロセッサの数が増えるにつれて、プロセスの実行を断片化しすぎないように注意する必要があります。プログラムに2つのスレッドがある場合は、それらの間に因果関係が(共有データを介して)存在する可能性があるため、それらを近接してスケジュールしてみてください。
また、スレッドをどのように実装するか、およびプロセスをカーネルでどのように表現するか(重いか軽いか)を決定する必要があります。スレッドはカーネル管理されていますか?ユーザースペース管理?これらはすべて、スケジューラーの設計に影響を与えます。POSIXスレッドがさまざまなオペレーティングシステムでどのように実装されているかを見てください。あなたが考えることはたくさんあります:)
要するに、ロジックが存在する場所、または存在すべき場所に対する直接的な答えは実際にはありません。それはすべて、設計、アプリケーションの期待、(プログラムの)時間の制約などにかかっています。
これがお役に立てば幸いですが、私はここでは専門家ではありません。