當前位置:首頁 » 資源管理 » 線程佔用多少資源
擴展閱讀
產品加工溫度要多少度 2025-05-22 05:56:37
綠斑藻魚用什麼工具 2025-05-22 05:40:50

線程佔用多少資源

發布時間: 2022-04-29 06:16:22

① linux如何查看進程中各個線程的資源佔用情況

直接打開資源管理器,再進積欄目中就可以看到各個線程的資源佔用情況

② 為什麼線程要比進程佔用的資源少

童鞋,進程是資源的分配單位,進程是包含運行一個程序所需資源的容器。線程是處理器調度和執行的單位,線程主要包含記錄自身執行歷史的棧內存,其他的資源和同一進程里的其他線程共享。

線程和進程不是獨立的概念,自己去看看書吧!

③ 多線程運行時,各線程是如何佔用CPU資源的

意思是說JAVA的每個線程只能由一個CPU為它提供服務,無法實現多個CPU同時為一個線程提供計算服務,如果一個線程佔用CPU資源非常多,即使它耗盡一個CPU的所有資源時,其他空閑CPU也不會為它分擔任何負荷

④ 單線程和多線程的CPU佔用率相差多麼

單線程的也就是程序執行時,所跑的程序路徑(處理的東西)是連續順序下來的,必須前面的處理好,後面的彩繪執行到。
多線程嘛,舉個例子也就是說程序可以同時執行2個以上相同類似的操作,比如一些搜索代理或者群發email的多線程軟體,由於操作一次需要網路的返回信息 花的時間比較長,而對cpu來說卻是空閑的,如果是一個一個順序執行,那麼搜索幾千個IP就會花上好久好久。
而如果用多線程就可以在等待期間 加入其他的搜索,然後等待,這樣可以提高效率。
不過多線程和多進程公用一些資源時要考慮的問題好像也是一樣的,對於一些公共資源或者公共變數的訪問和修改時要注意特別的,需要一些鎖定什麼的,還有順序問題的考慮。
多線程編程的目的,就是"最大限度地利用CPU資源",當某一線程的處理不需要佔用CPU而只和I/O,OEMBIOS等資源打交道時,讓需要佔用CPU資源的其它線程有機會獲得CPU資源。
每個程序執行時都會產生一個進程,而每一個進程至少要有一個主線程。
這個線程其實是進程執行的一條線索,除了主線程外還可以給進程增加其它的線程,也即增加其它的執行線索,由此在某種程度上可以看成是給一個應用程序增加了多任務功能。
當程序運行後,可以根據各種條件掛起或運行這些線程,尤其在多CPU的環境中,這些線程是並發運行的。
多線程就是在一個進程內有多個線程。
從而使一個應用程序有了多任務的功能。
多進程技術也可以實現這一點,但是創建進程的高消耗(每個進程都有獨立的數據和代碼空間),進程之間通信的不方便(消息機制),進程切換的時間太長,這些導致了多線程的提出,對於單CPU來說(沒有開啟超線程),在同一時間只能執行一個線程,所以如果想實現多任務,那麼就只能每個進程或線程獲得一個時間片,在某個時間片內,只能一個線程執行,然後按照某種策略換其他線程執行。
由於時間片很短,這樣給用戶的感覺是同時有好多線程在執行。
但是線程切換是有代價的,因此如果採用多進程,那麼就需要將線程所隸屬的該進程所需要的內存進行切換,這時間代價是很多的。
而線程切換代價就很少,線程是可以共享內存的。
所以採用多線程在切換上花費的比多進程少得多。
但是,線程切換還是需要時間消耗的,所以採用一個擁有兩個線程的進程執行所需要的時間比一個線程的進程執行兩次所需要的時間要多一些。
即採用多線程不會提高程序的執行速度,反而會降低速度,但是對於用戶來說,可以減少用戶的響應時間。
上述結果只是針對單CPU,如果對於多CPU或者CPU採用超線程技術,採用多線程技術還是會提高程序的執行速度的。
因為單線程只會映射到一個CPU上,而多線程會映射到多個CPU上,超線程技術本質是多線程硬體化,所以也會加快程序的執行速度。

⑤ system中有3個線程共佔用cpu80左右

System
Idle
Process進程的作用是在系統空閑的時候分派CPU的時間,它顯示的超過80%以上的CPU資源並不是指的它佔用了這么多CPU資源,恰恰相反
而是表示有80%以上的CPU資源空閑了出來,這里的數字越大表示CPU資源越多,數字越小則表示CPU資源緊張。該進程是系統運行必需的,不能禁止哦!

⑥ 子線程佔用的是cpu資源嗎

是。
本質上是由CPU處理,當然會佔CPU資源。以C語言為例,線程自己沒有資源,線程用的是所屬進程的資源。資源由CPU分配,多線程問題操作系統通過時間片來調節。如何分配,有很多種,可以平均分配,可以按照優先順序來分配等等,看別人演算法怎麼實現咯,針對不同目的有不同演算法,另外線程阻塞,會切換到別的進程。

⑦ 進程和線程是什麼,有什麼區別呢

進程是具有一定獨立功能的程序關於某個數據集合上的一次運行活動,進程是系統進行資源分配和調度的一個獨立單位。

線程與進程的區別:

1、地址空間:進程內的一個執行單元;進程至少有一個線程;它們共享進程的地址空間;而進程有自己獨立的地址空間;

2、進程是資源分配和擁有的單位,同一個進程內的線程共享進程的資源;

3、線程是處理器調度的基本單位,但進程不是;

4、二者均可並發執行。

(7)線程佔用多少資源擴展閱讀:

線程的引入:

60年代,在OS中能擁有資源和獨立運行的基本單位是進程,然而隨著計算機技術的發展,進程出現了很多弊端,

一是由於進程是資源擁有者,創建、撤消與切換存在較大的時空開銷,因此需要引入輕型進程;

二是由於對稱多處理機(SMP)出現,可以滿足多個運行單位,而多個進程並行開銷過大。

因此在80年代,出現了能獨立運行的基本單位——線程(Threads)。

適用范圍:

1、伺服器中的文件管理或通信控制;

2、前後台處理;

3、非同步處理。

進程是60年代初首先由麻省理工學院的MULTICS系統和IBM公司的CTSS/360系統引入的。

進程是一個具有獨立功能的程序關於某個數據集合的一次運行活動。它可以申請和擁有系統資源,是一個動態的概念,是一個活動的實體。它不只是程序的代碼,還包括當前的活動,通過程序計數器的值和處理寄存器的內容來表示。

特徵:

1、動態性:進程的實質是程序在多道程序系統中的一次執行過程,進程是動態產生,動態消亡的。

2、並發性:任何進程都可以同其他進程一起並發執行

3、獨立性:進程是一個能獨立運行的基本單位,同時也是系統分配資源和調度的獨立單位;

4、非同步性:由於進程間的相互制約,使進程具有執行的間斷性,即進程按各自獨立的、不可預知的速度向前推進

5、結構特徵:進程由程序、數據和進程式控制制塊三部分組成。

多個不同的進程可以包含相同的程序:一個程序在不同的數據集里就構成不同的進程,能得到不同的結果;但是執行過程中,程序不能發生改變。

⑧ 請教關於進程和線程佔用資源的問題

線程是一種操作系統對象,代表著一個進程中要被執行的代碼的路徑。每一個WIN32應用程序至少有一個線程--通常稱為住線程或默認線程--但應用程序可以自由地創建其他線程來執行其他任務!
進程是程序的一次動態執行過程,它對應了從代碼載入、執行到執行完畢的一個完整過程,這個過程也是進程本身從產生、發展到消亡的過程
線程是比進程更小的執行單位。一個進程在其執行過程能夠中,可以產生 多個線程,形成多條執行線索。每條線索,即每個線程也有它自身的產生、存在和消亡過程,也是一個動態的概念。
一個程序應該只有一個進程吧,但是可以擁有多個線程。
可以說,一個執文件被運行後,就可以稱為是一個進程了。但是進程只是存在內存中,實際上他是不會做任何事情的。
這個時候,起作用的就是線程了。線程是程序的執行者,一個程序至少有一個線程,但是在多線程的操作系統中,可以有一個以上的線程。

其實我們可以把線程看成是我們排隊買肯德雞吃(循環的排隊,一直排下去,知道我不想買了,退出)。每人都有機會到達隊伍的最前端去買東西,這個就好比是線程,都有機會被程序執行。但是線程真正起作用的時候,就是我們在隊伍的最前端買東西到東西買完後,這一段時間,這是線程真正執行的階段。進程與線程
進程和線程是兩個相對的概念,通常來說,一個進程可以定義程序的一個實例(Instan
ce)。在Win32中,進程並不執行什麼,它只是占據應用程序所使用的地址空間。為了讓
進程完成一定的工作,進程必須至少佔有一個線程,正是這個線程負責包含進程地址空
間中的代碼。實際上,一個進程可以包含幾個線程,它們可以同時執行進程地址空間中
的代碼。為了做到這一點,每個線程有自己的一組CPU寄存器和堆棧。每個進程中至少有
一個線程在執行其地址空間中的代碼。如果沒有線程執行進程地址空間中的代碼,進程
也就沒有繼續存在的理由,系統將自動清除進程及其地址空間。
多線程的實現原理
創建一個進程時,它的第一個線程稱為主線程(Primary thread),由系統自動生成。
然後可以由這個主線程生成額外的線程,而這些線程,又可以生成更多的線程。
在運行一個多線程的程序時,從表面上看,這些線程似乎在同時運行。而實際情況並非
如此,為了運行所有的這些線程,操作系統為每個獨立線程安排一些CPU時間。單CPU操
作系統以輪轉方式向線程提供時間片(Quantum),每個線程在使用完時間片後交出控制
,系統再將CPU時間片分配給下一個線程。由於每個時間片足夠的短,這樣就給人一種假
象,好像這些線程在同時運行。創建額外線程的唯一目的就是盡可能地利用CPU時間。
多線程的問題
使用多線程編程可以給程序員帶來很大的靈活性,同時也使原來需要復雜技巧才能解決
的問題變得容易起來。但是,不應該人為地將編寫的程序分成一些碎片,讓這些碎片按
各自的線程執行,這不是開發應用程序的正確方法。
線程很有用,但當使用線程時,可能會在解決老問題的同時產生新問題。例如要開發一
個字處理程序,並想讓列印功能作為單獨的線程自己執行。這聽起來是很好的主意,因
為在列印時,用戶可立即返回,開始編輯文檔。但這樣一來,在該文檔被列印時文檔中
的數據就有可能被修改,列印的結果就不再是所期望的內容。也許最好不要把列印功能
放在單獨的線程中,不過如果一定要用多線程的話,也可以考慮用下面的方法解決:第
一種方法是鎖定正在列印的文檔,讓用戶編輯其他的文檔,這樣在結束列印之前,該文
檔不會作任何修改;另一個方法可能更有效一些,即可以把該文檔拷貝到一個臨時文件
中,列印這個臨時文件的內容,同時允許用戶對原來的文檔進行修改。當包含文檔的臨
時文件列印完成時,再刪去這個臨時文件。
通過上面的分析可以看出,多線程在幫助解決問題的同時也可能帶來新問題。因此有必
要弄清楚,什麼時候需要創建多線程,什麼時候不需要多線程。總的來說,多線程往往
用於在前台操作的同時還需要進行後台的計算或邏輯判斷的情況,而對於GUI(圖形用戶
介面),除了開發MDI(多文檔界面)應用程序外,應盡量不使用多線程。
線程的分類
在MFC中,線程被分為兩類,即工作線程和用戶界面線程。如果一個線程只完成後台計算
,不需要和用戶交互,那麼可以使用工作線程;如果需要創建一個處理用戶界面的線程
,則應使用用戶界面線程。這兩者的主要區別在於,MFC框架會給用戶界面線程增加一個
消息循環,這樣用戶界面線程就可以處理自己消息隊列中的消息。這樣看來,如果需要
在後台作一些簡單的計算(如對電子表格的重算),則首先應考慮使用工作線程,而當
後台線程需要處理比較復雜的任務,確切地說,當後台線程的執行過程會隨著實際情況
的不同而改變時,就應該使用用戶界面線程,以便能對不同的消息作出響應。
線程的優先順序
當系統需要同時執行多個進程或多個線程時,有時會需要指定線程的優先順序。線程的優
先級一般是指這個線程的基優先順序,即線程相對於本進程的相對優先順序和包含此線程的
進程的優先順序的結合。操作系統以優先順序為基礎安排所有的活動線程,系統的每一個線
程都被分配了一個優先順序,優先順序的范圍從0到31。運行時,系統簡單地給第一個優先順序
為31的線程分配CPU時間,在該線程的時間片結束後,系統給下一個優先順序為31的線程分
配CPU時間。當沒有優先順序為31的線程時,系統將開始給優先順序為30的線程分配CPU時間
,以此類推。除了程序員在程序中改變線程的優先順序外,有時程序在執行過程中系統也
會自動地動態改變線程的優先順序,這是為了保證系統對終端用戶的高度響應性。比如用
戶按了鍵盤上的某個鍵時,系統就會臨時將處理WM_KEYDOWN消息的線程的優先順序提高2到
3。CPU按一個完整的時間片執行線程,當時間片執行完畢後,系統將該線程的優先順序減
1。
線程的同步
在使用多線程編程時,還有一個非常重要的問題就是線程同步。所謂線程同步是指線程
之間在相互通信時避免破壞各自數據的能力。同步問題是由前面說到的Win32系統的CPU
時間片分配方式引起的。雖然在某一時刻,只有一個線程佔用CPU(單CPU時)時間,但
是沒有辦法知道在什麼時候,在什麼地方線程被打斷,這樣如何保證線程之間不破壞彼
此的數據就顯得格外重要。在MFC中,可以使用4個同步對象來保證多線程同時運行。它
們分別是臨界區對象(CCriticalSection)、互斥量對象(CMutex)、信號量對象(CS
emaphore)和事件對象(CEvent)。在這些對象中,臨界區對象使用起來最簡單,它的
缺點是只能同步同一個進程中的線程。另外,還有一種基本的方法,本文稱為線性化方
法,即在編程過程中對一定數據的寫操作都在一個線程中完成。這樣,由於同一線程中
的代碼總是按順序執行的,就不可能出現同時改寫數據的情況。

⑨ 線程不擁有系統資源,但佔用cpu資源。這句話是否矛盾

線程是進程中的一個實體,是被系統獨立調度和分派的基本單位,線程自己不擁有系統資源,只擁有一點兒在運行中必不可少的資源,但它可與同屬一個進程的其它線程共享進程所擁有的全部資源。這是網路上的,也就是說線程只是佔用那麼一點點系統建立線程的系統資源,真正佔用系統資源的是程序的執行。