質問:どのように複数のOSを切り替えのプロセスを切り替えていますか?
=の+リソース命令実行処理シーケンス
資源:メモリマップ
スレッド:同時スイッチングのプロセスの費用を回避する利点を保持する(ハンドオーバ手順のみ、リソースを切り替えず)
(作成)及び収率()関数の
スタック
二つのスレッドの2つのTCB、2つのスタック、スタックスイッチPCの
プログラム:
void WebExplorer()//main()
{ ThreadCreate(GetData,URL, buffer);...
while(1)Yield(); }
void GetData(char *URL, char *p){
连接URL;下载; Yield();...}
void ThreadCreate(func,arg1){
申请栈;申请TCB;func等入栈;关联TCB与栈;...}
void Yield(){
压入现场;esp放在当前TCB 中;Next();
从下个TCB取出esp;弹栈切换线程;}
スケジューリング機能次に()、システムに大きな影響。
収量は、ユーザプログラムであります
コアレベルのスレッド:スレッド作成システムが呼び出され、カーネルに入ります。カーネルは、TCBの知っている
gccがget.c yeild.cを探検-o ...またはgccのget.c ... -lthread
システムによってポイントを派遣、ユーザーには見えない収量();カーネルレベルスレッドのgcc -oエクスプローラexplorer.c ...; ThreadCreateシステムコール決めます