單核cpu支援多執行緒執行**,cpu 通過給每個執行緒分配cpu 時間片來實現這個機制。時間片是cpu分配給各個執行緒的時間,因為時間片非常短,所以cpu 通過不停地切換執行緒執行,讓我們感覺多個執行緒同時執行的,時間片一般是幾十毫秒(ms)。
cpu通過時間片分配演算法來迴圈執行任務,當前任務執行乙個時間片後會切換到下乙個任務。但是,在切換前會儲存上乙個任務的狀態,以便下次切換回這個任務時,可以再次載入這個任務的狀態,從任務儲存到再載入的過程就是一次上下文切換。
這就像我們同時讀兩本書,當我們在讀一本英文的技術書籍時,發現某個單詞不認識, 於是便開啟中英文詞典,但是在放下英文書籍之前,大腦必須先記住這本書讀到了多少頁的第多少行,等查完單詞之後,能夠繼續讀這本書。這樣的切換是會影響讀 書效率的,同樣上下文切換也會影響多執行緒的執行速度。
多執行緒上下文切換
前言 併發程式設計的目的是為了讓程式執行得更快,但是並不是啟動更多的執行緒就能讓程式最大限度地併發執行。在進行併發程式設計時,如果希望通過多執行緒執行任務讓程式執行得更快,會面臨非常多的挑戰,比如上下文切換的問題 死鎖的問題,以及受限於硬體和軟體的資源限制問題,本文要研究的是上下文切換的問題。什麼是...
多執行緒上下文切換
在上下文切換過程中,cpu會停止處理當前執行的程式,並儲存當前程式執行的具體位置以便之後繼續執行。從這個角度來看,上下文切換有點像我們同時閱讀幾本書,在來回切換書本的同時我們需要記住每本書當前讀到的頁碼。在程式中,上下文切換過程中的 頁碼 資訊是儲存在程序控制塊 pcb 中的。pcb還經常被稱作 切...
多執行緒上下文切換
什麼是上下文切換 上下文切換 context switching 是儲存和恢復cpu狀態的過程,它使得執行緒執行能夠從中斷點恢復執行。上下文切換時多工作業系統和多執行緒環境的基本特徵。即使是單核cpu也支援多執行緒執行 cpu通過給每個執行緒分配cpu時間片來實現這個機制。時間片是cpu分配給各個執...