久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久


Linux下多任務系統之線程介紹

分享(xiang)到:
           

    前面(mian)已(yi)經(jing)提到(dao),進(jin)(jin)程(cheng)(cheng)是(shi)系統(tong)中程(cheng)(cheng)序執行和資源分(fen)配(pei)的(de)(de)基本單位。每個進(jin)(jin)程(cheng)(cheng)都擁有自己的(de)(de)數(shu)據段、代碼段和堆(dui)棧段,這就造成了進(jin)(jin)程(cheng)(cheng)在進(jin)(jin)行切(qie)(qie)換等操作時(shi)需要較(jiao)復雜的(de)(de)上(shang)下文(wen)(wen)切(qie)(qie)換等動作。為了進(jin)(jin)一步減(jian)少(shao)處理(li)機的(de)(de)空(kong)轉時(shi)間,支持(chi)多(duo)處理(li)器及減(jian)少(shao)上(shang)下文(wen)(wen)切(qie)(qie)換開(kai)銷,進(jin)(jin)程(cheng)(cheng)在演化(hua)中出現了另一個概念——線(xian)(xian)程(cheng)(cheng)。它(ta)是(shi)進(jin)(jin)程(cheng)(cheng)內獨立的(de)(de)一條運行路線(xian)(xian),是(shi)處理(li)器調(diao)度(du)的(de)(de)小(xiao)單元,也(ye)可以稱為輕量級進(jin)(jin)程(cheng)(cheng)。線(xian)(xian)程(cheng)(cheng)可以對進(jin)(jin)程(cheng)(cheng)的(de)(de)內存(cun)空(kong)間和資源進(jin)(jin)行訪問,并與同(tong)一進(jin)(jin)程(cheng)(cheng)中的(de)(de)其他線(xian)(xian)程(cheng)(cheng)共享(xiang)。因此線(xian)(xian)程(cheng)(cheng)的(de)(de)上(shang)下文(wen)(wen)切(qie)(qie)換的(de)(de)開(kai)銷比創建進(jin)(jin)程(cheng)(cheng)小(xiao)得多(duo)。

    一個(ge)進程(cheng)(cheng)(cheng)(cheng)可以擁(yong)有(you)(you)多(duo)個(ge)線(xian)程(cheng)(cheng)(cheng)(cheng),每個(ge)線(xian)程(cheng)(cheng)(cheng)(cheng)必須有(you)(you)一個(ge)父進程(cheng)(cheng)(cheng)(cheng)。線(xian)程(cheng)(cheng)(cheng)(cheng)不擁(yong)有(you)(you)系統資(zi)(zi)源(yuan),它只具有(you)(you)運行所(suo)(suo)必需的(de)(de)一些數據結構,如(ru)堆棧、寄存(cun)器與線(xian)程(cheng)(cheng)(cheng)(cheng)控制塊(TCB),線(xian)程(cheng)(cheng)(cheng)(cheng)與其父進程(cheng)(cheng)(cheng)(cheng)的(de)(de)其他(ta)線(xian)程(cheng)(cheng)(cheng)(cheng)共享(xiang)該進程(cheng)(cheng)(cheng)(cheng)所(suo)(suo)擁(yong)有(you)(you)的(de)(de)全部資(zi)(zi)源(yuan)。要注(zhu)意的(de)(de)是,由于線(xian)程(cheng)(cheng)(cheng)(cheng)共享(xiang)了進程(cheng)(cheng)(cheng)(cheng)的(de)(de)資(zi)(zi)源(yuan)和地址空間,因此(ci),任何線(xian)程(cheng)(cheng)(cheng)(cheng)對(dui)系統資(zi)(zi)源(yuan)的(de)(de)操作都會(hui)給其他(ta)線(xian)程(cheng)(cheng)(cheng)(cheng)帶來影響。由此(ci)可知,多(duo)線(xian)程(cheng)(cheng)(cheng)(cheng)中(zhong)的(de)(de)同(tong)步是非常重要的(de)(de)問題。在(zai)多(duo)線(xian)程(cheng)(cheng)(cheng)(cheng)系統中(zhong),進程(cheng)(cheng)(cheng)(cheng)與線(xian)程(cheng)(cheng)(cheng)(cheng)的(de)(de)關系如(ru)圖3.4所(suo)(suo)示。


圖3.4 進程(cheng)和線程(cheng)之間的關系

    在Linux系統中,線程可(ke)以分為(wei)以下3種。

    1.用(yong)戶級線程

    用(yong)(yong)戶(hu)級線(xian)程(cheng)(cheng)(cheng)主(zhu)要(yao)解決的是上下文切換的問題,它(ta)的調(diao)度(du)算法(fa)(fa)和調(diao)度(du)過程(cheng)(cheng)(cheng)全部由用(yong)(yong)戶(hu)自行(xing)(xing)選擇(ze)決定(ding)(ding),在(zai)(zai)運(yun)行(xing)(xing)時(shi)(shi)不需要(yao)特(te)定(ding)(ding)的內核支持。在(zai)(zai)這(zhe)里,操作(zuo)系統往往會提供(gong)一(yi)個(ge)(ge)用(yong)(yong)戶(hu)空間(jian)的線(xian)程(cheng)(cheng)(cheng)庫,該線(xian)程(cheng)(cheng)(cheng)庫提供(gong)了線(xian)程(cheng)(cheng)(cheng)的創建、調(diao)度(du)和撤銷(xiao)等功能,而內核仍然僅對進(jin)程(cheng)(cheng)(cheng)進(jin)行(xing)(xing)管(guan)理。如(ru)果一(yi)個(ge)(ge)進(jin)程(cheng)(cheng)(cheng)中的某一(yi)個(ge)(ge)線(xian)程(cheng)(cheng)(cheng)調(diao)用(yong)(yong)了一(yi)個(ge)(ge)阻(zu)塞(sai)的系統調(diao)用(yong)(yong)函(han)數,那么該進(jin)程(cheng)(cheng)(cheng)包括該進(jin)程(cheng)(cheng)(cheng)中的其他所有線(xian)程(cheng)(cheng)(cheng)也同時(shi)(shi)被阻(zu)塞(sai)。這(zhe)種用(yong)(yong)戶(hu)級線(xian)程(cheng)(cheng)(cheng)的主(zhu)要(yao)缺點是在(zai)(zai)一(yi)個(ge)(ge)進(jin)程(cheng)(cheng)(cheng)的多個(ge)(ge)線(xian)程(cheng)(cheng)(cheng)的調(diao)度(du)中無法(fa)(fa)發揮多處(chu)理器的優勢。

    2.輕量(liang)級進程

    輕量級進程是內(nei)核(he)(he)支(zhi)持的用戶線程,是內(nei)核(he)(he)線程的一種(zhong)抽象對(dui)象。每(mei)個線程擁有一個或多個輕量級進程,而每(mei)個輕量級進程分別被(bei)綁定在一個內(nei)核(he)(he)線程上(shang)。

    3.內核線(xian)程(cheng)

    內(nei)核線(xian)程(cheng)(cheng)允(yun)許不同進(jin)程(cheng)(cheng)中的(de)線(xian)程(cheng)(cheng)按照同一相(xiang)對優(you)先調度方法進(jin)行調度,這(zhe)樣就可以(yi)發(fa)揮多處理器的(de)并(bing)發(fa)優(you)勢。

    現在大(da)多數(shu)系統(tong)都采(cai)用用戶級線(xian)(xian)程(cheng)與核(he)(he)心(xin)級線(xian)(xian)程(cheng)并存的(de)(de)方法。一個(ge)(ge)用戶級線(xian)(xian)程(cheng)可(ke)以對(dui)(dui)應一個(ge)(ge)或(huo)幾個(ge)(ge)核(he)(he)心(xin)級線(xian)(xian)程(cheng),也就是“一對(dui)(dui)一”或(huo)“多對(dui)(dui)一”模型。這樣既可(ke)以滿足多處理(li)器系統(tong)的(de)(de)需要(yao),也可(ke)以大(da)限度(du)地減少調度(du)開(kai)銷。

    使用線(xian)程(cheng)機(ji)制大大加(jia)(jia)快(kuai)了(le)上下文切換速度,而且節省了(le)很多(duo)(duo)資源(yuan)。但是因為(wei)在(zai)用戶(hu)態(tai)和(he)內核(he)態(tai)均要實現(xian)調度管(guan)理,所以會增加(jia)(jia)實現(xian)的(de)復雜度和(he)引起優先級翻轉的(de)可能性。同(tong)時,一個多(duo)(duo)線(xian)程(cheng)程(cheng)序的(de)同(tong)步設計與調試也會增加(jia)(jia)程(cheng)序實現(xian)的(de)難度。

    本文選自華清遠見嵌入式培訓教材《從實踐中學嵌入式Linux應用程序開發》

   熱點(dian)鏈接(jie):

   1、Linux下多任務系統之進程的基本概念
   2、Linux下多任務系統之任務介紹
   3、Linux下進程的內存結構
   4、Linux下進程的創建、執行和終止
   5、Linux下的進程結構

更多新聞>>