3

OS の起動前に実行される非常に低レベルのアプリ システム、実際には起動アプリケーションを開発しています。
問題は、CPU コア/スレッドをどのように利用すべきかということです。
そして、いくつのスレッドを実行するでしょうか?
それはまったく可能ですか?リンク/チュートリアルはありますか?

4

1 に答える 1

12

OS を起動する前のスレッド化について話しているので、カーネルはまだ利用できないと仮定します。つまり、システム コールがないため、fork() や clone() はありません。ただし、この回答の目的のために、A20 ゲート、GDT、保護 (IA-32 の場合) またはロング (x86-64 の場合) モードを既にセットアップしていると仮定します。の上。これらが何であるかわからない場合は、そもそも起動前にスレッドについて話すべきではないでしょう。

プロセッサに他のコアを使用させるために使用できるオペコードとトリックがあり、スレッド化を非常に直接的に実装します。これらすべては Intel x86 で見つけることができます (x86 で作業していますよね? 別のアーキテクチャを使用している場合は、明らかに別のマニュアル セットが必要です)。http://www.intel.com/ content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-manual-325462.pdf

このようなチュートリアルがない理由は、率直に言って、あまり役に立たないからです。カーネルをメモリにロードする前に設定することの全体的なポイントは、カーネルをメモリにロードしやすくすることです。スレッド化は、この目標に正確には貢献しません。そのような低レベルの実装要件をカーネルに処理させることをお勧めします。これにより、すべてのスレッド化のニーズに対して fork() および clone() システム コールを使用できるようになります。

編集:Sinnによる適切な修正:fork()は新しいプロセスを作成しますが、これはもちろん実際にはスレッド化されていません。

于 2013-10-31T23:02:34.577 に答える