作業系統 kernel thread 疑問
最近在念OS的kernal thread跟user thread時遇到一個問題是,
假設我有一個最簡單的情境是只有一個cpu在跑多個thread,當我現在有兩個user thread在執行,
分別是userA跟userB,我對kernal thread有兩個猜想,不知道實際上kernal thread到底負責什麼
假設1
cpu的context(就是register跟program counter那些)應該會是不停的在userA跟userB兩個thread之間不停做context switch對嗎?這時候kernal thread是閒置在旁邊,等system call發生,cpu的context才會切換到kernal thread的context來執行kernal mode的相關指令嗎 ?
假設2
cpu的context其實是在兩個user thread跟一個kernal thread之間不停切換, kernal thread負責管理userA跟userB,thread塞到CPU裡執行順序是 : kernal thread執行,叫userA起來跑 > A跑一段時間該輪到B的時候會觸發中斷把kernal叫回來取代userA > kernal thread去叫userB開始跑 > userB跑一段時間又回到kernal > kernal叫userA起來跑
並且kernal thread也負責執行userA跟userB的system call
因為老師上課有提到當kernal thread-user-thread是一對多時,當userA去call sleep時,會整個process卡住,我一直想不太到原因,假如kernal thread在執行sleep,cpu不能先讓給userA或userB跑嗎?好像只有假設2比較合理
-----
Sent from JPTT on my iPhone
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.136.134.241 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Programming/M.1652777606.A.F29.html
推
05/17 22:18,
2年前
, 1F
05/17 22:18, 1F
→
05/17 22:19,
2年前
, 2F
05/17 22:19, 2F
→
05/17 22:19,
2年前
, 3F
05/17 22:19, 3F
→
05/17 22:20,
2年前
, 4F
05/17 22:20, 4F
→
05/17 22:20,
2年前
, 5F
05/17 22:20, 5F
→
05/17 22:21,
2年前
, 6F
05/17 22:21, 6F
→
05/17 22:22,
2年前
, 7F
05/17 22:22, 7F
→
05/17 22:22,
2年前
, 8F
05/17 22:22, 8F
→
05/17 22:22,
2年前
, 9F
05/17 22:22, 9F
→
05/17 22:23,
2年前
, 10F
05/17 22:23, 10F
→
05/17 22:23,
2年前
, 11F
05/17 22:23, 11F
推
05/27 17:25,
2年前
, 12F
05/27 17:25, 12F
→
05/27 17:25,
2年前
, 13F
05/27 17:25, 13F
Programming 近期熱門文章
PTT數位生活區 即時熱門文章