作業系統筆記六(執行緒管理和排程)

2021-09-25 10:54:28 字數 1830 閱讀 9915

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。對於單核系統,排程問題,就是選擇下乙個要執行的程序或者執行緒是哪乙個。執行緒的排程與程序類似,對於按核心級別的排程,與執行緒所屬的程序基本沒有關係。程序切換的代價是比較大的,包括使用者態到核心態的切換 儲存當前程序的狀態 記憶體映像的...