<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      菜鳥之旅——學習線程(基礎)

        在現在的軟件編程中,不可避免的會用到多線程或者其他方式來實現異步的目的,那么,線程是個什么東西,如何使用?這些都是需要去學習與摸索的東西。不過在學習線程之前,還是有一些知識需要掌握的,雖說都是書本上的東西,但是還是對線程的學習有一定的作用的。

       

      進程

       目的

        現在的計算機存在很多的操作系統(OS),大部分操作系統都是實時操作系統,可以實時的響應用戶的操作,它們往往都有共同的基本特征:并發、共享虛擬,進程的產生于并發、共享有很大的聯系。

        操作系統可以“同時”運行著很多的程序,并且很多程序有可能會有通訊、共同使用某些I\O設備,比如打印機之類的,這些都是操作系統為我們提供的諸多便利,但是實際上CPU在同一時刻只能處理一道程序,但是操作系統卻實現了程序并發的特征,這是因為在微觀上是因為多個程序交替使用CPU和其他資源;但是在多道程序環境下,程序之間將會失去封閉性,并具有間斷性及不可再現性,為了能夠更好的實現并發特征,引入了進程這一概念。每個進程通過一種時間片輪轉調度算法來進行調度,分配運行時間片,在時間片內可以使用CPU或是其他資源,由于時間片非常短暫,用戶感覺不到進程之間的切換。

        注意:在多處理機上,每個處理機可以處理不同的程序,可以說是真正的并發。

       定義

        從不同的角度,進程可以有不同的定義,比較典型的定義有:

        1、進程是程序的一次執行過程。

        2、進程是一個程序及其數據在處理機上順序執行時所發生的活動。

        3、進程是具有獨立功能的程序在一個數據集上運行的過程,是操作系統進行資源分配和調度的一個獨立單位。

       組成

        PCB:進程控制塊,為了使參與并發執行的程序(含數據)能夠獨立的運行,更好的并發且不會沖突,于必須給進程配置一個專門的數據結構,操作系統利用PCB來控制和管理進程,PCB是進程的唯一標識

        程序段:程序段就是能被進程調度程序調度到CPU執行的程序代碼段,注意程序是固定的,可以被多個進程共享,就是說多個進程可以運行同一段程序。

        數據段:一個進程的數據段,可以是進程對應的程序加工處理的原始數據,也可以是程序執行時產生的中間或最終結果。

        由PCB、程序段和數據段三部分構成了進程映像,進程的創建就是創建進程映像中的PCB,進程的撤銷就是撤銷進程的PCB。在引入進程映像的概念后,可以把傳統操作系統中的進程定義為:進程是進程映像的運行過程,是系統進行資源分配和調度的一個獨立單位。進程是動態的,而進程映像是靜態的。

       狀態

        進程存在5種狀態,分別是創建、就緒、運行、阻塞和終止,而進程大部分時間是在就緒、阻塞和終止三個狀態下切換。
                   

        進程的切換:進程切換就是處理機(CPU)從一個進程的運行轉到另一個進程上,進程的運行環境發生了實質性的變化:

        1、保存CPU上下文,包括程序計數器和其他寄存器;

        2、更新PCB信息;

        3、把進程的PCB移入相應的隊列,比如就緒或者等待隊列;

        4、選擇另一個進程運行,更新其PCB;

        5、更新內存管理的數據結構;

        6、恢復CPU上下文信息。

       

      線程 

        我們從上面簡單的回顧了一下進程的基本知識,當然,進程還有很多知識點沒有介紹到,因為本人能力有限,就不更多的介紹了。下面開始回顧線程的基本知識:

       目的

        進程的引入是為了解決操作系統實現多個程序并發執行,進程的出現使各個程序在并發執行具有良好的封閉性,在進程切換的時候總會消耗一些資源,有一定量的時空消耗,但是隨著軟件復雜度提升,進程所占用的資源也會變多,在進程切換時需要付出更多的時空開銷!于是為了減小程序在并發執行時所付出的時空開銷,提升操作系統的并發性能,便引入了線程的概念。

       定義

        對于線程的最直接理解就是:輕量級進程,它是一個基本的CPU執行單元,由線程ID、程序計數器、寄存器集合和堆棧組成;線程是進程中的一個實體,是被系統獨立調度和分派的基本單位,線程自己不擁有系統資源,只擁有一些在運行中必不可少的資源,但是可以與同一進程下的線程共享進程的全部資源。

        引入線程之后,進程的內涵發生了變化,進程只作為除CPU以外系統資源的分配單元,線程則作為CPU的分配單元,進程內線程切換時不會引起進程切換,減少時空開銷。

       與進程的比較

         1、調度:在傳統的操作系統中,擁有資源和獨立調度的基本單位都是進程,在引入線程之后,線程則變為獨立調用的基本單位,進程則是擁有資源 的基本單位;同一進程內線程切換不會引起進程的切換,但是不同進程間的線程切換則會引起進程的切換。

        2、擁有資源:進程是擁有資源的基本單位,而線程不擁有系統資源(除一些必不可少的資源),但是線程可以使用其進程的資源。

        3、系統開銷:由于線程并不擁有系統資源,所以同一進程下線程在被調度到CPU執行時,只需保存和設置少量寄存器內容,而無需保存、更新進程在CPU運行的環境,所付出的時空開銷相對變得更少。

        4、并發性:在引入線程的操作系統中,由于線程不論在創建、撤銷或者在調度切換時時空消耗更低,且進程間的線程切換也不會引起進程的切換,所以在整體的并發性能上,引入線程的操作系統吞吐量更高。

      總結

        進程:計算機的CPU在同一時刻只有一道程序運行,且CPU是高速的,若是CPU等待程序的其他資源就緒,就會造成CPU的性能浪費,若是并發執行程序,在等待當前程序的其他資源就緒時,先去運行別的程序,就可以盡量減少CPU性能的浪費;這時引入了進程的概念,且CPU是以時間片調度的方式運行進程,進程的出現使得多到程序并發執行具有良好的封閉性和可控,使得操作系統擁有可控、穩定的并發性能。

        線程:進程作為系統資源和調度的基本單元本身是沒什么問題,但是隨著程序的日漸復雜,進程所擁有的資源變多,在進程被調度到CPU進行切換時,CPU需要保存當前進程的運行環境和設置要執行進程的運行環境,這里所付出的時空開銷會越來越大;為了減少在調度時的開銷,引入了更輕量的進程-線程,這時進程不再作為調度的基本單元,線程變為調度的基本單元,線程在進行切換要比進程的切換的開銷小很多,這時操作系統的并發性能能夠得到更良好的應用。

        總結的知識點不是很多,深一層的運行機制、數據結構和調度算法等,因本人知識限制都沒有涉及到,這里還需要后續的學習。

       

      posted on 2018-02-12 09:32  愉悅的紳士  閱讀(903)  評論(1)    收藏  舉報

      主站蜘蛛池模板: 17岁日本免费bd完整版观看| 久久人与动人物a级毛片| gogogo高清在线观看视频中文| 中文字幕在线亚洲精品| 91精品久久一区二区三区| 在线中文字幕亚洲日韩2020| 老司机免费的精品视频| 国产日韩久久免费影院| 日韩无码视频网站| 亚洲av天堂天天天堂色| 日韩深夜免费在线观看| 久热伊人精品国产中文| 欧洲性开放老太大| 99国精品午夜福利视频不卡99| 深夜精品免费在线观看| 亚洲乱码国产乱码精品精| 韩国午夜理伦三级| 伊人久久大香线蕉综合网站| 377P欧洲日本亚洲大胆| 亚洲国产美女精品久久久| 一本色道久久综合熟妇人妻| 内射极品少妇xxxxxhd| 国产做a爱片久久毛片a片| 野花社区www视频日本| 377P欧洲日本亚洲大胆| 国产高颜值不卡一区二区| 四虎成人精品无码| 成年女人片免费视频播放A| 精品国产亚洲一区二区三区| 国产精品人妻系列21p| 日本一区不卡高清更新二区| 国产成人精品一区二区三区| 亚洲熟妇少妇任你躁在线观看无码| 伊人色综合九久久天天蜜桃| 日本A级视频在线播放| 69天堂人成无码免费视频| 亚洲码亚洲码天堂码三区| 欧美寡妇xxxx黑人猛交| 午夜免费视频国产在线| 国语自产少妇精品视频蜜桃| 国产熟睡乱子伦视频在线播放 |