1

ユーザー レベルのスレッド パッケージを作成する課題があります。このスレッドを読みましたが、多くの質問に答えてくれました。しかし、私はまだいくつかのことについて混乱しています...

主に、pthread ライブラリを使用せずにユーザーレベルのスレッドを実際に作成する方法を理解できません... スタック、スタック ポインター、スレッド ID、およびスレッド状態を考慮したスレッド構造があります。これは単純な作業だと思いますが、現在のプロセスでスレッドがどのように「作成」されるかについては頭に浮かびません。

私が持っている別の質問は、スレッドがスケジューラにどのように渡されるかを扱っています。ラウンド ロビン スケジューラを実装し、スレッドの状態をチェックするために 100 ミリ秒ごとに割り込みを処理するシグナル ハンドラを実装しました。しかし、スケジューラはどのようにしてスレッドを認識しているのでしょうか?

スレッドの作成と操作を理解するのを妨げているユーザーレベルのスレッド化の概念が欠けているように感じます。

私を助けてください!前もって感謝します!

4

1 に答える 1

1

ユーザーレベルのスレッドは、さまざまな方法で作成できます。それらの 1 つは経由context switchingです。プロセスは 1 つだけで、コンテキストを一定の方法で変更しますround-robin

短い時間間隔ごとに、コンテキストを別のスレッドに変更します。単一のプロセスですが、切り替えが速いため、まるで並行して実行されているように見えます。

スケジューリングを可能にするには、現在実行中のすべてのスレッドを追跡する必要があります。割り込みが発生すると、実行される対応するルーチンには、現在contextのスレッドを次のスレッドと交換するコードが含まれています。このようにして、スケジューリングが処理されます。

これについては、私のブログで詳しく説明します:)

于 2013-10-18T17:43:28.417 に答える