程序與執行緒的區別

2022-09-15 08:09:02 字數 783 閱讀 2340

簡而言之,乙個程式至少有乙個程序,乙個程序至少有乙個執行緒.

執行緒的劃分尺度小於程序,使得多執行緒程式的併發性高。

另外,程序在執行過程中擁有獨立的記憶體單元,而多個執行緒共享記憶體,從而極大地提高了程式的執行效率。

執行緒在執行過程中與程序還是有區別的。每個獨立的執行緒有乙個程式執行的入口、順序執行序列和程式的出口。但是執行緒不能夠獨立執行,必須依存在應用程式中,由應用程式提供多個執行緒執行控制。

從邏輯角度來看,多執行緒的意義在於乙個應用程式中,有多個執行部分可以同時執行。但作業系統並沒有將多個執行緒看做多個獨立的應用,來實現程序的排程和管理以及資源分配。這就是程序和執行緒的重要區別。

程序是具有一定獨立功能的程式關於某個資料集合上的一次執行活動,程序是系統進行資源分配和排程的乙個獨立單位.

執行緒是程序的乙個實體,是cpu排程和分派的基本單位,它是比程序更小的能獨立執行的基本單位.執行緒自己基本上不擁有系統資源,只擁有一點在執行中必不可少的資源(如程式計數器,一組暫存器和棧),但是它可與同屬乙個程序的其他的執行緒共享程序所擁有的全部資源.

乙個執行緒可以建立和撤銷另乙個執行緒;同乙個程序中的多個執行緒之間可以併發執行.

程序和執行緒的主要差別在於它們是不同的作業系統資源管理方式。程序有獨立的位址空間,乙個程序崩潰後,在保護模式下不會對其它程序產生影響,而執行緒只是乙個程序中的不同執行路徑。執行緒有自己的堆疊和區域性變數,但執行緒之間沒有單獨的位址空間,乙個執行緒死掉就等於整個程序死掉,所以多程序的程式要比多執行緒的程式健壯,但在程序切換時,耗費資源較大,效率要差一些。

但對於一些要求同時進行並且又要共享某些變數的併發操作,只能用執行緒,不能用程序。

程序執行緒區別與聯絡

定義 一程式只是一組指令的有序集合,二程序是具有一定獨立功能的程式關於某個資料集合上的一次執行活動,是系統進行資源分配和排程的乙個獨立單位 三線程是程序的乙個實體,是cpu排程和分派的基本單位,它是比程序更小的能獨立執行的基本單位.執行緒自己基本上不擁有系統資源,只擁有一點在執行中必不可少的資源 如...

多執行緒跟多程序區別

如果一台計算機有多個cpu,情況就不同了,如果程序數小於cpu數,則不同的程序可以分配給不同的cpu來執行,這樣,多個程序就是真正同時執行的,這便是並行。但如果程序數大於cpu數,則仍然需要使用併發技術。在windows中,進行cpu分配是以執行緒為單位的,乙個程序可能由多個執行緒組成,這時情況更加...

Intel雙核與超執行緒的區別與聯絡

在現有的計算機裡,程式由多個執行執行緒組成的,這些執行緒是一系列相關指令。在個人電腦時代早期,大多數程式僅含有單個執行緒。當時的作業系統在某一時間僅能執行乙個此類程式。由於系統不能同時處理兩項任務,下乙個任務必須等到上乙個任務處理結束時才能處理,後來的作業系統創新引入了多工處理,從而能夠掛起乙個程式...