乙個程序就是當前正在執行的乙個程式,包括程式的暫存器、程式計數器和變數的當前值。不同的程序擁有不同的位址空間。
而執行緒可以理解為是程序中的控制流。同乙個程序內也就是說在同乙個位址空間內可以有多個控制流。也就是可以有多個線
程,他們共享位址空間。
我們通常將程序視為是資源的集合,程序中有程式的正文、資料以及其他的一些資源,例如:開啟的檔案,設定的定時,子程序
等,我們通過程序去管理他們。
而執行緒我們可以理解為是程序的另外乙個概念:執行流。程序中的執行緒共享執行緒的進城的系統資源。執行緒才是cpu排程的實體。
程序的排程是作業系統可以控制的,但是對於執行緒而言,有些作業系統是完全放在使用者空間去管理的。在用空間去進行執行緒的切換
效率要比核心排程高,因為使用者執行緒的切換只需要幾條指令,而核心的切換則需要完整的上下文,修改記憶體對映等。但是當執行緒出現阻
塞的時候,cpu會認為是整個程序的阻塞,因為它是感覺不到執行緒的存在的。
程序和執行緒的區別:
1)執行緒是程序的控制流,是cpu執行的排程實體,而程序更多的事cpu的資源排程的實體,程序掌管著資源的分配。
4)切換:
執行緒上下文切換和程序上下問切換乙個最主要的區別是執行緒的切換虛擬記憶體空間依然是相同的,但是程序切換是不同的。這兩種上下文切換的處理都是通過作業系統核心來完成的。核心的這種切換過程伴隨的最顯著的效能損耗是將暫存器中的內容切換出。
執行緒和程序
標準的定義是 程序是執行緒的容器,乙個程序可於乙個或者多個執行緒,它是系統分配資源的基本單位 同乙個程序下,執行緒共享位址空降 已經開啟的檔案 訊號處理函式 報警訊號和其他,執行緒自己只保留程式計數器和棧。但是很遺憾的,這個只是教科書上的定義,實際情況是每個作業系統實現的作業系統特性不同,實現的方法...
執行緒和程序
對於求職者,在面試的時候大多都會被問到 你對多執行緒了解麼?給我講講執行緒和程序的區別吧。在unix中,乙個程序可以理解為執行緒 位址空間 檔案描述符 資料,道破現實,其實就相當於老闆和員工,老闆就是程序,員工就是執行緒。老闆需要僱傭若干員工 執行緒 還要有辦公樓 位址空間 還要有若干的辦公裝置 檔...
程序和執行緒
1 程序表示資源分配的最小單位,又是排程執行的基本單位。當執行乙個程式的時候,系統就會建立乙個程序,並為它分配資源 包括記憶體空間,磁碟空間,i o裝置等 然後把該程序放入程序的就緒佇列。程序排程程式選中它,為它分配cpu及其他有關資源,該程序才真正執行。2 執行緒是程序中執行運算的最小單位,又是執...