HITのオペレーティングシステムのユーザレベルスレッドのメモ

質問:どのように複数の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システムコール決めます

カーネルレベルのスレッドを起動します

公開された16元の記事 ウォンの賞賛0 ビュー305

おすすめ

転載: blog.csdn.net/qq_43156233/article/details/104032112