進程與線程有何區別
進程與線程的區別?進程與線程的區別
方法
進程:指在系統中能獨立執行並作爲資源分配的基本單位,它是由一組機器指令、數據和堆棧等組成的,是一個能獨立執行的活動實體。
進程一般有三個狀態:就緒狀態、執行狀態和等待狀態【或稱阻塞狀態】;進程只能由父進程建立,系統中所有的進程形成一種進程樹的層次體系;掛起命令可由進程自己和其他進程發出,但是解除掛起命令只能由其他進程發出。
由程序段、相關的數據段和PCB三部分構成了進程實體(又稱進程印像),一般,我們把進程實體就簡稱爲進程。
進程的特徵:
1.動態性:進程的實質是程序的一次執行過程,進程是動態產生,動態消亡的。
2.併發性:任何進程都可以同其他進程一起併發執行。
3.獨立性:進程是一個能獨立執行的基本單位,同時也是系統分配資源和調度的獨立單位。
4.異步性:由於進程間的相互制約,使進程具有執行的間斷性,即進程按各自獨立的、不可預知的速度向前推進。
線程:線程是進程中的一個實體,作爲系統調度和分派的基本單位。Linux下的線程看作輕量級進程。
線程的性質:
1.線程是進程內的一個相對獨立的可執行的單元。若把進程稱爲任務的話,那麼線程則是應用中的一個子任務的執行。
2.由於線程是被調度的基本單元,而進程不是調度單元。所以,每個進程在創建時,至少需要同時爲該進程創建一個線程。即進程中至少要有一個或一個以上的線程,否則該進程無法被調度執行。
3.進程是被分給並擁有資源的基本單元。同一進程內的多個線程共享該進程的資源,但線程並不擁有資源,只是使用他們。
4.線程是操作系統中基本調度單元,因此線程中應包含有調度所需要的必要資訊,且在生命週期中有狀態的變化。
5.由於共享資源【包括數據和檔案】,所以線程間需要通信和同步機制,且需要時線程可以創建其他線程,但線程間不存在父子關係。