1、程序間是獨立的,這表現在記憶體空間,上下文環境,無法突破程序邊界存取其他程序內的儲存空間;
2、執行緒由於處於程序空間內,所以同一程序所產生的執行緒共享同一記憶體空間,同一程序中的兩段程式碼不能夠同時執行,除非引入執行緒,執行緒是屬於程序的,當程序退出時該程序所產生的執行緒都會被強制退出並清除;
3、執行緒佔用的資源要少於程序所佔用的資源,程序和執行緒都可以有優先順序,線上程系統中程序也是一個執行緒,可以將程序理解為一個程式的第一個執行緒。
1、程序間是獨立的,這表現在記憶體空間,上下文環境,無法突破程序邊界存取其他程序內的儲存空間;
2、執行緒由於處於程序空間內,所以同一程序所產生的執行緒共享同一記憶體空間,同一程序中的兩段程式碼不能夠同時執行,除非引入執行緒,執行緒是屬於程序的,當程序退出時該程序所產生的執行緒都會被強制退出並清除;
3、執行緒佔用的資源要少於程序所佔用的資源,程序和執行緒都可以有優先順序,線上程系統中程序也是一個執行緒,可以將程序理解為一個程式的第一個執行緒。
很多朋友都想知道linux程序與執行緒的區別?下面就一起來了解一下吧!
linux程序與執行緒的區別
程序是在某個資料集合上具有獨立功能的一次執行活動,也是系統進行資源分配和排程的一個獨立單位。執行緒在程序方面屬於程序的實體,是CPU排程和分配的基本單位,基本上執行緒自己沒有擁有任何的系統資源,只擁有一點在執行中必備的資源(如程式計數器、一組暫存器和棧),但是它可以與同屬一個程序的執行緒共享資源。
Linux的用處
linux是一套免費開放原始碼的作業系統,使用者可以按照自己的想法來修改原始碼,它的每一個操作,你都能夠充分了解,這對計算機方面的愛好者是有很大幫助的,它可以讓使用者知道系統是怎樣工作的。
Linux的語言
linux開發用的是C語言和組合語言。C語言是Linux的“母語”,這也是linux這個開源環境和本身機制所導致的。Linux的核心部分基本都是用C語言來編寫的,還有部分是用匯編語言寫的。
本文章基於ThinkpadE15品牌、centos7系統撰寫的。
在開銷方面:每個程序都有獨立的程式碼和資料空間(程式上下文),程式之間的切換會有較大的開銷;執行緒可以看做輕量級的程序,同一類執行緒共享程式碼和資料空間,每個執行緒都有自己獨立的執行棧和程式計數器(PC),執行緒之間切換的開銷小。
所處環境:在作業系統中能同時執行多個程序(程式);而在同一個程序(程式)中有多個執行緒同時執行(透過CPU排程,在每個時間片中只有一個執行緒執行)
記憶體分配方面:系統在執行的時候會為每個程序分配不同的記憶體空間;而對執行緒而言,除了CPU外,系統不會為執行緒分配記憶體(執行緒所使用的資源來自其所屬程序的資源),執行緒組之間只能共享資源。
包含關係:沒有執行緒的程序可以看做是單執行緒的,如果一個程序內有多個執行緒,則執行過程不是一條線的,而是多條線(執行緒)共同完成的;執行緒是程序的一部分,所以執行緒也被稱為輕權程序或者輕量級程序。