標籤:
我對於線程,進程的概念一直都是比較模糊,最近整理了一下。總結起來就是,線程是進程的一部分,進程是程式的一部分。
線程的引入:例如,有一個Web伺服器要進程的方式並發地處理來自不同使用者的網頁訪問請求的話,可以建立父進程和多個子進程的方式來 進行處理,但是建立一個進程要花費較大的系統開銷和佔用較多的資源。除外,這些不同的使用者子進程在執行的時候涉及到進程環境切換,環境切換是一個複雜 的過程。所以,為了減少進程切換和建立的開銷,提高執行效率和節省資源,人們在作業系統中引入了"線程(thread)"的概念。
進程的作用和定義:進程是為了提高CPU的執行效率,減少因為程式等待帶來的CPU空轉以及其他電腦軟硬體資源的浪費而提出來的。進程是為了完成使用者任務所需要的程式的一次執行過程和為其分配資源的一個基本單位,是一個具有獨立功能的程式段對某個資料集的一次執行活動。
線程和進程的區別:
1、線程是進程的一部分,所以線程有的時候被稱為是輕權進程或者輕量級進程。
2、一個沒有線程的進程是可以被看作單線程的,如果一個進程內擁有多個進程,進程的執行過程不是一條線(線程)的,而是多條線(線程)共同完成的。
3、系統在啟動並執行時候會為每個進程分配不同的記憶體地區,但是不會為線程分配記憶體(線程所使用的資源是它所屬的進程的資源),線程組只能共用資源。那 就是說,出了CPU之外(線程在啟動並執行時候要佔用CPU資源),電腦內部的軟硬體資源的分配與線程無關,線程只能共用它所屬進程的資源。
4、與進程的控製表PCB相似,線程也有自己的控製表TCB,但是TCB中所儲存的線程狀態比PCB表中少多了。
5、進程是系統所有資源分派時候的一個基本單位,擁有一個完整的虛擬空間地址,並不依賴線程而獨立存在。
進程與程式的區別:
程式是一組指令的集合,它是靜態實體,沒有執行的含義。而進程是一個動態實體,有自己的生命週期。一般說來,一個進程肯定與一個程式相對應,並且只有一個,但是一個程式可以有多個進程,或者一個進程都沒有也可以只有一個進程。除此之外,進程還有並發性和交往性。簡單地說,進程是程式的一部分,程式啟動並執行時候會產生進程。
總結:
線程是進程的一部分,進程是程式的一部分。
轉自: https://www.ezloo.com/2007/10/thread_process_program.html
轉: 關於程式 進程 和 線程