linux程序和執行緒的區別 面試

linux程序和執行緒的區別 面試

1.區別:

2.1、多程序中資料共享複雜、同步簡單,而多執行緒中資料共享簡單、同步複雜;

3.2、多程序佔用記憶體多、切換複雜、速度慢、CPU利用率低,而多執行緒佔用記憶體少、切換簡單、CPU利用率高;

4.3、多程序的程式設計簡單、除錯簡單,而多執行緒的程式設計複雜、除錯複雜。

小編還為您整理了以下內容,可能對您也有幫助:

linux 下 程序和執行緒的區別

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

簡而言之,一個程式至少有一個程序,一個程序至少有一個執行緒。

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

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

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

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

linux裡面,程序與執行緒到底有什麼本質的區別?

執行緒:是程序中執行的一條路徑,是系統排程的最小單位。

程序:是正在執行的程式,是系統分配資源的最小單位。

執行緒與程序關係

1.一個程序可以有多個執行緒,一個執行緒只能屬於一個程序。

2.同一個程序下的所有執行緒共享該程序下的所有資源。

3.真正在處理機上執行的是執行緒,不是程序,執行緒是程序內的一個執行單元,是程序內的可排程實體。

Linux執行緒與程序區別

程序:

優點:多程序可以同時利用多個CPU,能夠同時進行多個操作。

缺點:耗費資源(建立一個程序重新開闢記憶體空間)。

程序不是越多越好,一般程序個數等於cpu個數。

執行緒:

優點:共享記憶體,尤其是進行IO操作(網路、磁碟)的時候(IO操作很少用cpu),可以使用多執行緒執行併發操作。

缺點:搶佔資源。

linux作業系統多程序和多執行緒的區別

程序:執行中的程式,-->執行過程稱之為程序。

執行緒:執行緒是輕量級的程序,是程序中的一條執行序列,一個程序至少有一條執行緒。

多執行緒優點:①無需跨程序邊界;②程式邏輯和控制方式簡單;③所有執行緒可以直接共享記憶體和變數;④執行緒方式消耗的總資源比程序少。

多程序優點:①每個程序相互,不影響主程式的穩定性,子程序崩潰沒關係;②通過增加CPU就可以容易擴充效能;③可以儘量減少執行緒加鎖/解鎖的影響,極大提高效能。

多執行緒缺點:①每條執行緒與主程式共用地址空間,大小受限;②執行緒之間的同步和加鎖比較麻煩;③一個執行緒的崩潰可能影響到整個程式的穩定性;④到達一定的執行緒數之後,即使在增加CPU也無法提高效能。

多程序缺點:①邏輯控制複雜,需要和主程式互動;②需要跨程序邊界,如果有大資料傳輸,不適合;③多程序排程開銷比較大。

Linux系統中多程序和多執行緒的區別是什麼?

1、多程序中資料共享複雜、同步簡單;而多執行緒中資料共享簡單、同步複雜。

2、多程序佔用記憶體多、切換複雜、速度慢、CPU利用率低;而多執行緒佔用記憶體少、切換簡單、CPU利用率高。

3、多程序的程式設計簡單、除錯簡單;而多執行緒的程式設計複雜、除錯複雜。

程序和執行緒的區別

程序和執行緒的區別如下:

1、功能不同

程序是計算機中的程式關於某資料集合上的一次執行活動,是系統進行資源分配和排程的基本單位,是作業系統結構的基礎。

執行緒是作業系統能夠進行運算排程的最小單位。它被包含在程序之中,是程序中的實際運作單位。

2、工作原理不同

在早期面向程序設計的計算機結構中,程序是程式的基本執行實體;在當代面向執行緒設計的計算機結構中,程序是執行緒的容器。程式是指令、資料及其組織形式的描述,程序是程式的實體。

執行緒是排程和分派的基本單位。執行緒可以為作業系統核心排程的核心執行緒,如Win32執行緒;由使用者程序自行排程的使用者執行緒,如Linux平臺的POSIX Thread;或者由核心與使用者程序,如Windows 7的執行緒,進行混合排程。

3、作用不同

程序是作業系統中最基本、重要的概念。是多道程式系統出現後,為了刻畫系統內部出現的動態情況,描述系統內部各道程式的活動規律引進的一個概念,所有多道程式設計作業系統都建立在程序的基礎上。

通常在一個程序中可以包含若干個執行緒,它們可以利用程序所擁有的資源。在引入執行緒的作業系統中,通常都是把程序作為分配資源的基本單位,而把執行緒作為執行和排程的基本單位。

4、定義不同

程序指在系統中正在執行的一個應用程式;程式一旦執行就是程序;或者更專業化來說:程序是指程式執行時的一個例項,即它是程式已經執行到課中程度的資料結構的彙集。從核心的觀點看,程序的目的就是擔當分配系統資源(CPU時間、記憶體等)的基本單位。

執行緒是指系統分配處理器時間資源的基本單元,或者說程序之內執行的一個單元執行流。程序——資源分配的最小單位,執行緒也就是程式執行的最小單位。

5、結構程式不同

現在程式結構上,舉一個簡明易懂的列子:當我們使用程序的時候,我們不自主的使用if else巢狀來判斷pid,使得程式結構繁瑣,但是當我們使用執行緒的時候,基本上可以甩掉它,當然程式內部執行功能單元需要使用的時候還是要使用,所以執行緒對程式結構的改善有很大幫助。