程序執行緒模型

2022-05-15 22:20:08 字數 1900 閱讀 8796

pthread_join 等待乙個特定執行緒的退出

程序控制塊分為排程資訊和現場資訊    程序識別符號 程序當前狀態 **段指標

程序從執行——>就緒的原因可能是:1.被排程程式搶占處理機 2.程序完成建立 3.時間片用完

非搶占式能引起新的程序排程是:1.正在執行的程序執行完畢 正在執行的程序呼叫阻塞原語將自己阻塞進入等待狀態3.正在執行的程序呼叫阻塞原語並因資源不足被阻塞 4.喚醒原語啟用了資源程序 時間片用完

程序由:程序控制塊 資料 指令**組成

引入程序的原因:提高併發度  減少通訊開銷 執行緒之間的切換時間短  每個執行緒都有獨有的棧

等待——>就緒 喚醒

當裝置忙程序會進入等待狀態 不會終止 

執行中的三種狀態:就緒 等待 執行

執行——>就緒  現場的資訊都會儲存到程序控制塊當中

不同的程序執行的**段可能相同

與本程序相關的內容只能由作業系統讀取

當程序中請處理機得不到滿足時 他將進入就緒態

管程只允許乙個程序進入管理  從而實現程序的互斥 但無法保證其本身互斥

程序優先順序:靜態和動態  系統程序優先順序高於使用者程序優先順序  靜態優先順序 程序建立時確定執行期間不會改變   動態優先順序  建立時確定優先順序 之後不斷改變

所有程序必須排程才能在處理機上執行 沒有被排程到的程序只能處於等待狀態  作業系統可以根據不同情景分類應用多種程序排程演算法

乙個程序的狀態變化不一定會引起令乙個程序的狀態變化  訊號量初值一定大於0  程序是資源分配的基本單位 執行緒是處理機排程的基本單位 程序被掛起他可以是阻塞也可以是掛起 pv主要實現程序的互斥與同步

手動  阻塞——>掛起 suspend()

pthread_mutex_init() 建立乙個互斥量

程序控制塊pcb每個程序都有常駐記憶體  將cpu 分配給選中的程序  將cpu程序的現場資訊儲存到程序控制塊當中 將選中的程序現場資訊送到響應的暫存器中

單核處理機:處於執行狀態的程序至多乙個至少0個

排程時機 程序執行完畢 自我阻塞  時間片用完 資源沒準備好  出現錯誤

可再入程式: 純**程度 執行中不需要修改

執行——>阻塞必然會引起乙個狀態到另乙個狀態的變化

三種執行緒實現機制:使用者執行緒 核心執行緒 獨立執行緒

實時系統演算法設計的目標是:滿足截至時間要求 滿足可靠性要求

執行批處理作業大型計算中心演算法設計目標:較高的cpu利用率 較短的週期時間 較大的吞吐量

排程資訊:程序名程序號儲存資訊 優先順序當前狀態資源清單 」家族「關係

phread_create的四個引數(執行緒標識指標,用引數設定執行緒屬性,入口函式的起始位址,入口函式的引數)

程序再花費計算和i/o時間不同分為兩類:1。時間上花費多的是時間密集型 2.i/o上花費多的是i/o密集型

程序撤銷原語撤銷程序:找到對應程序的pcb 撤下其他的子孫程序 釋放程序子u按 撤銷該程序pcb

程序由:程式 資料 程序控制塊組成  程式:指令 ** 資料

其中可能會出現的狀態轉換是:就緒態——>就緒掛起狀態  執行態——>就緒掛起狀態 阻塞態——>阻塞掛起狀態 阻塞掛起狀態——>就緒掛起狀態

三種可能會出現的狀態轉換是:就緒態——>執行態  執行態——>阻塞態 執行態——>就緒態

程序具有併發性 動態性 獨立性 交往性 非同步性

非同步性:每個程序都按照自己獨立且不可預知的狀態向前推進

程序控制原語有:建立程序 撤銷程序 掛起程序 啟用程序 喚醒程序 改變程序優先順序 

採用多執行緒模型的作業系統中 程序是資源分配的基本單位 執行緒是處理排程的基本單位

多道中程式設計:允許多個程式同時進入記憶體中並行

就緒——>執行一定不會引起排程  執行——>阻塞需要的資料沒準備好

程序的排程:任何程序排程厚才能執行 作業系統可以根據不同的情景分類應用多種程序排程演算法  互動式系統一般採用時間片輪轉排程演算法

程序執行緒及swoole程序模型

程序和執行緒,涉及到作業系統的基本知識,但是很多人都是不懂的,因為php簡單易學,大部分人在零基礎學 php程式設計的時候都沒有去了解這些,在學習 swoole 之前必須要了解程序執行緒這樣我們才能對 swoole 的執行機制有一定的了解,更易於開發。這是阮一峰所寫的乙個解釋,寫的非常不錯。1 計算...

程序,執行緒池,執行緒

執行緒池的五個狀態 running 可以接受新的任務,也可以處理阻塞佇列裡的任務 shutdown 不能接受新的任務,可以處理阻塞佇列裡的任務,running 狀態下呼叫 shutdown 函式會裝變成 shutdown 狀態stop 不能接受新的任務,也不能處理阻塞佇列裡的任務,running 狀...

程序 執行緒 多執行緒

程序是系統中正在執行的乙個程式,程式一旦執行就是程序。程序可以看成程式執行的乙個例項。程序是系統資源分配的獨立實體,每個程序都擁有獨立的位址空間。乙個程序無法訪問另乙個程序的變數和資料結構,如果想讓乙個程序訪問另乙個程序的資源,需要使用程序間通訊,比如管道,檔案,套接字等。乙個程序可以擁有多個執行緒...