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