程式與執行緒的區別

Nyitong發表於2020-10-09

執行緒具有許多傳統程式所具有的特徵,故又稱為輕型程式(Light—Weight Process)或程式元;而把傳統的程式稱為重型程式(Heavy—Weight Process),它相當於只有一個執行緒的任務。在引入了執行緒的作業系統中,通常一個程式都有若干個執行緒,至少包含一個執行緒。

根本區別:程式是作業系統資源分配的基本單位,而執行緒是處理器任務排程和執行的基本單位

資源開銷:每個程式都有獨立的程式碼和資料空間(程式上下文),程式之間的切換會有較大的開銷;執行緒可以看做輕量級的程式,同一類執行緒共享程式碼和資料空間,每個執行緒都有自己獨立的執行棧和程式計數器(PC),執行緒之間切換的開銷小。

包含關係:如果一個程式內有多個執行緒,則執行過程不是一條線的,而是多條線(執行緒)共同完成的;執行緒是程式的一部分,所以執行緒也被稱為輕權程式或者輕量級程式。

記憶體分配:同一程式的執行緒共享本程式的地址空間和資源,而程式之間的地址空間和資源是相互獨立的

影響關係:一個程式崩潰後,在保護模式下不會對其他程式產生影響,但是一個執行緒崩潰整個程式都死掉。所以多程式要比多執行緒健壯。

執行過程:每個獨立的程式有程式執行的入口、順序執行序列和程式出口。但是執行緒不能獨立執行,必須依存在應用程式中,由應用程式提供多個執行緒執行控制,兩者均可併發執行

相關文章