多程序:每個流單獨的程序。私有的位址空間,共享資料困難。
io多路復用:所有流在乙個程序上,共享位址空間,利用io多路復用技術來呼叫邏輯流。
執行緒:(1)執行緒就是執行在程序的上下文中的邏輯流,執行緒由核心自動排程。
(2)執行緒都有自己的執行緒上下文,包括執行緒id,執行緒棧,棧指標,程式計數器,通用目的暫存器,條件碼。
(3)所有執行在乙個程序的執行緒都共有虛擬位址空間。
執行緒是程序和io多路復用的結合:
(1)同程序一樣,執行緒由核心自動排程,核心識別執行緒id。
(2)同io一樣,執行緒執行在同一程序的上下文中,共享程序虛擬位址空間的整個內容,包括堆,**,資料,共享庫,開啟檔案。
12.3.1 執行緒執行模型:
(1)從某一時刻主線程建立乙個對等執行緒,那麼從這個時候開始,兩個執行緒併發的執行。
執行緒與程序的不同:
(2)執行緒的相互之間的切換要快得多。
(3)執行緒不是和程序一樣按照父子程序來組織的,執行緒建立的是對等執行緒。
執行緒池:
(4)同乙個程序相關的執行緒組成乙個對等的執行緒池。
(5)乙個執行緒可以殺死它的任何的對等執行緒,也可以等待它的終止。每個對等執行緒之間可以共享資料。
12.3.2 posix執行緒
12.3.3 建立執行緒
(1)pthread_create函式
(2)pthread_self函式
12.3.4 終止執行緒
(1)當頂層的執行緒例程返回時,會隱式的終止
(2)pthread_exit函式,顯式的終止
(3)某個對等執行緒呼叫unix的exit函式,則終止程序以及與程序相關的所有執行緒。
(4)pthread_cancel函式
12.3.5 **已終止執行緒資源
12.3.6 分離執行緒
12.3.7 初始化執行緒
《深入理解計算機系統》 第1章 計算機系統漫遊
4.執行hello程式 最近重啟了寫部落格,都說念念不忘必有迴響。自從上一遍部落格,到現在已經過去了快兩年的時間。在這期間一直在想著什麼時候寫個部落格呀,什麼時候再摸著鍵盤一點點的碼字啊,心裡一直在想,直到現在,終於有了行動。看著乙個乙個的字,隨著鍵盤的敲擊,一串串躍然於螢幕之上,心裡有說不出來的平...
深入理解計算機系統之第6章
1.了解基本的儲存技術,2.程式設計師需要理解儲存器層次結構,因為其對應用程式的效能有巨大影響。3.理解區域性性原理,縮短程式執行時間。區域性性通常有兩種不同的形式 時間區域性性和空間區域性性。在乙個具有良好時間區域性性的程式中,被引用過一次的儲存器位置很可能在不遠的將來再被多次引用。在乙個具有良好...
深入理解計算機系統
關鍵路徑是在迴圈的反覆執行中形成的資料相關鏈。迴圈展開是一種程式變換,通過增加每次迭代計算的元素的數量,減少迴圈的迭代次數。重新結合變換能夠減少計算中關鍵路徑上操作的數量,通過更好地利用功能單元的流水線能力得到更好的效能。浮點運算不保證是可結合的,通常迴圈展開和並行地累積在多個值中,是提高程式效能的...