標籤:暫停 pcb 中斷 程式碼片段 提高 可見 地址 單位 寄存器
彙集很多部落格於一體的,大概就這些
1.調度
在傳統的作業系統中,擁有資源的基本單位和獨立調度、指派的基本單位都是進程。而在引入線程的作業系統中,則把線程作為調度和指派的基本單位。而把進程作 為資源擁有的基本單位,使傳統進程的兩個屬性分開,線程便能輕裝運行,從而可顯著地提高系統的並發程度。
在同一進程中,線程的切換不會引起進程的切換,在 由一個進程中的線程切換到另一個進程中的線程時,將會引起進程的切換。
2.並發性
在引入線程的作業系統中,不僅進程之間可以並發執行,而且在一個進程中的多個線程之間,亦可並發執行,因而使作業系統具有更好的並發性,從而能更有效地使 用系統資源和提高系統輸送量。提高輸送量
3.擁有資源
不論是傳統的作業系統,還是設有線程的作業系統,進程都是擁有資源的一個獨立單位,它可以擁有自己的資源。一般地說,線程自己不擁有系統資源(也有一點必 不可少的資源),但它可以訪問其隸屬進程的資源。亦即,一個進程的程式碼片段、資料區段以及系統資源,如已開啟的檔案、I/O裝置等,可供問一進程的其它所有線 程共用。
4.系統開銷
由於在建立或撤消進程時,系統都要為之分配或回收資源,如記憶體空間、I/o裝置等。因此,作業系統所付出的開銷將顯著地大於在建立或撤消線程時的開銷。類 似地,在進行進程切換時,涉及到整個當前進程CPU環境的儲存以及新被調度啟動並執行進程的CPU環境的設定。而線程切換隻須儲存和設定少量寄存器的內容,並 不涉及儲存空間管理方面的操作。可見,進程切換的開銷也遠大於線程切換的開銷。此外,由於同一進程中的多個線程具有相同的地址空間,致使它們之間的同步和通訊的實現,也變得比較容易。在有的系統中,線程的切換、同步和通訊都無須
5:宏觀狀態
進程的執行過程是線狀的,儘管中間會發生中斷或暫停,但該進程所擁有的資源只為該線狀執行過程服務。一旦發生進程環境切換,這些資源都是要被保護起來的。這是進程宏觀上的執行過程。而進程又可有單線程進程與多線程進程兩種。我們知道,進程有 一個進程式控制制塊 PCB ,相關程式段 和 該程式段對其進行操作的資料結構集 這三部分,單線程進程的執行過程在宏觀上是線性,微觀上也只有單一的執行過程;而多線程進程在宏觀上的執行過程同樣為線性,但微觀上卻可以有多個執行操作(線程),如不同程式碼片段以及相關的資料結構集。線程的改變只代表了 CPU 執行過程的改變,而沒有發生進程所擁有的資源變化。出了 CPU 之外,電腦內的軟硬體資源的分配與線程無關,線程只能共用它所屬進程的資源。
6:PCB,TCB
與進程式控制製表和 PCB 相似,每個線程也有自己的線程式控制製表 TCB ,而這個 TCB 中所儲存的線程狀態資訊則要比 PCB 表少得多,這些資訊主要是相關指標用堆棧(系統棧和使用者棧),寄存器中的狀態資料。
進程和線程區別