進程與線程的區(qū)別?進程與線程的區(qū)別
方法
進程:指在系統(tǒng)中能獨立運行并作為資源分配的基本單位,它是由一組機器指令、數(shù)據(jù)和堆棧等組成的,是一個能獨立運行的活動實體。
進程一般有三個狀態(tài):就緒狀態(tài)、執(zhí)行狀態(tài)和等待狀態(tài)【或稱阻塞狀態(tài)】;進程只能由父進程建立,系統(tǒng)中所有的進程形成一種進程樹的層次體系;掛起命令可由進程自己和其他進程發(fā)出,但是解除掛起命令只能由其他進程發(fā)出。
由程序段、相關的數(shù)據(jù)段和PCB三部分構成了進程實體(又稱進程印像),一般,我們把進程實體就簡稱為進程。
進程的特征:
1.動態(tài)性:進程的實質(zhì)是程序的一次執(zhí)行過程,進程是動態(tài)產(chǎn)生,動態(tài)消亡的。
2.并發(fā)性:任何進程都可以同其他進程一起并發(fā)執(zhí)行。
3.獨立性:進程是一個能獨立運行的基本單位,同時也是系統(tǒng)分配資源和調(diào)度的獨立單位。
4.異步性:由于進程間的相互制約,使進程具有執(zhí)行的間斷性,即進程按各自獨立的、不可預知的速度向前推進。
線程:線程是進程中的一個實體,作為系統(tǒng)調(diào)度和分派的基本單位。Linux下的線程看作輕量級進程。
線程的性質(zhì):
1.線程是進程內(nèi)的一個相對獨立的可執(zhí)行的單元。若把進程稱為任務的話,那么線程則是應用中的一個子任務的執(zhí)行。
2.由于線程是被調(diào)度的基本單元,而進程不是調(diào)度單元。所以,每個進程在創(chuàng)建時,至少需要同時為該進程創(chuàng)建一個線程。即進程中至少要有一個或一個以上的線程,否則該進程無法被調(diào)度執(zhí)行。
3.進程是被分給并擁有資源的基本單元。同一進程內(nèi)的多個線程共享該進程的資源,但線程并不擁有資源,只是使用他們。
4.線程是操作系統(tǒng)中基本調(diào)度單元,因此線程中應包含有調(diào)度所需要的必要信息,且在生命周期中有狀態(tài)的變化。
5.由于共享資源【包括數(shù)據(jù)和文件】,所以線程間需要通信和同步機制,且需要時線程可以創(chuàng)建其他線程,但線程間不存在父子關系。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com