程序和執行緒的區別
最佳答案 程序是作業系統資源分配的基本單位,而執行緒是處理器任務排程和執行的基本單位。還存在資源開銷、包含關係、記憶體分配、影響關係、執行過程等區別。同一程序的執行緒共享本程序的地址空間和資源,而程序之間的地址空間和資源相互獨立。
程序和執行緒的根本區別是程序是作業系統資源分配的基本單位,而執行緒是處理器任務排程和執行的基本單位。另外區別還有資源開銷、包含關係、記憶體分配、影響關係、執行過程等。
資源開銷:每個程序都有獨立的程式碼和資料空間(程式上下文),程式之間的切換會有較大的開銷;執行緒可以看做輕量級的程序,同一類執行緒共享程式碼和資料空間,每個執行緒都有自己獨立的執行棧和程式計數器(PC),執行緒之間切換的開銷小。
包含關係:如果一個程序內有多個執行緒,則執行過程不是一條線的,而是多條線(執行緒)共同完成的;執行緒是程序的一部分,所以執行緒也被稱為輕權程序或者輕量級程序。
記憶體分配:同一程序的執行緒共享本程序的地址空間和資源,而程序之間的地址空間和資源是相互獨立的。
影響關係:一個程序崩潰後,在保護模式下不會對其他程序產生影響,但是一個執行緒崩潰整個程序都死掉。所以多程序要比多執行緒健壯。
執行過程:每個獨立的程序有程式執行的入口、順序執行序列和程式出口。但是執行緒不能獨立執行,必須依存在應用程式中,由應用程式提供多個執行緒執行控制,兩者均可併發執行。
程序和執行緒的根本區別是程序是作業系統資源分配的基本單位,而執行緒是處理器任務排程和執行的基本單位。