1.為什麼提出執行緒
為了讓實體之間可以併發執行
實體之間共享相同的位址空間
這個實體呢就是執行緒
2.執行緒(thread)的定義:程序當中的一條執行流程
程序由資源管理和執行緒組成
程序=執行緒+共享資源
執行緒的優點就是提出執行緒的目的
執行緒的缺點是:乙個執行緒崩潰,會導致其所屬程序的全部執行緒崩潰
程序和執行緒的比較
1.程序是資源分配單位,執行緒是cpu排程單位
2.程序擁有乙個完整的資源平台,而執行緒只獨享必不可少的資源
3.執行緒同樣具有就緒,阻塞,執行三種狀態
4.執行緒能減少併發執行的時間和空間開銷
5.通訊方面 執行緒間可以通過直接讀寫同一程序中的資料進行通訊 但是程序通訊需要ipc
3.執行緒的實現
使用者執行緒:os看不到
os不得參與使用者執行緒的排程,
核心執行緒:os能看到
使用者執行緒的缺點:1.如果乙個執行緒發起系統呼叫而阻塞,則整個程序在等待(因為os看不到執行緒,只能理解程序,所以會將整個程序阻塞) 2.當乙個執行緒正在執行時,除非他主動交出cpu使用權,否則他所在的程序當中的其他執行緒將無法執行
使用者多執行緒時間可能會慢
核心執行緒:是在os的核心中實現的一種執行緒機制,由內來完成執行緒的建立,終止和管理
在乙個程序中,如果某個核心執行緒發起系統呼叫而阻塞,並不會影響其他核心執行緒的執行
時間片分配給執行緒,所以多執行緒就更多cpu時間
輕量級程序:os控制的使用者執行緒
7-11 (程序的)上下文切換
停止當前執行程序,並且排程其他程序
需要儲存的上下文內容是 暫存器,cpu狀態,等
程序控制-等待和終止程序
wait()系統呼叫時被父程序用來等待子程序的結束, 至於為什麼要等待它的結束呢,就是
當子程序exit()以後 由os通知父程序,去幫助子程序完成資源釋放(尤其是pcb)
處理器cpu排程
不可搶占:排程程式必須等待事件結束
可以搶占:排程程式在中斷被響應後執行
當前執行的程式可以被換出
當前的程序從執行切換到就緒,或者乙個程序從等待切換到就緒
8.2 排程原則
執行模型:程式在cpu突發和i/o中交替
當乙個程式i/o繁忙時切換到其他程序執行
fcfs先來先服務
優點:簡單
缺點:平均等待時間波動較大
花費時間少的任務可能排在花費時間長的任務後面
可能導致i/o和cpu之間的重疊處理
spn/srt 短程序優先
選擇下乙個最短的程序(短任務優先) 按照**的完成時間來將任務入隊
可以是可搶占或者不可搶占的: 可搶占:最短剩餘時間
平均等待時間最短
連續的短任務流會使得長任務飢餓
短任務可用時任何長任務的cpu時間都會增加平均等待時間
round robin:輪流占用cpu來執行
將上下文切換的開銷控制在1%以內
cpu密集型任務的優先順序下降很快(計算量大)
i/o密集型任務停留在高優先順序(互動性高)
8.5 實時排程
定義:確保某些任務在規定時間內完成
強實時系統:需要在保證的時間內完成重要的任務,必須完成
弱實時系統:要求盡量完成,非必須
rm(rate monotonic)速率單調排程:通過週期安排優先順序
edf(earliest deadline first):最早期限排程 deadline越早優先順序越高
8.6 多處理器排程和優先順序反轉
多處理器的cpu排程更加複雜:負載共享
對稱多處理器:每個處理器執行自己的排程程式,且需要在排程程式中同步
作業系統 程序和執行緒 CPU排程演算法
執行緒擁有的資源 程式計數器 暫存器 棧 狀態字 什麼是殭屍程序 當子程序比父程序先結束,而父程序又沒有 子程序,釋放子程序占用的資源,此時子程序將成為乙個殭屍程序。怎樣來清除殭屍程序 改寫父程序,在子程序死後要為它收屍。具體做法是接管 sigchld 訊號。子程序死後,會傳送 sigchld 訊號...
作業系統筆記(五)執行緒管理
資源分配的基本單位 系統排程的基本單位 程序可以包含多個執行緒。這些執行緒共享 區,資料區和開啟的檔案。每個執行緒有獨立的執行緒上下文 program counter,暫存器和其他的狀態資訊 和棧。優勢 responsiveness 2 資源共享 3 高效,建立快,context switch快 4...
作業系統學習筆記(三) 程序和執行緒的排程
對於多道程式設計的系統,就會有多個程序或者執行緒在同時競爭cpu。對於單核系統,排程問題,就是選擇下乙個要執行的程序或者執行緒是哪乙個。執行緒的排程與程序類似,對於按核心級別的排程,與執行緒所屬的程序基本沒有關係。程序切換的代價是比較大的,包括使用者態到核心態的切換 儲存當前程序的狀態 記憶體映像的...