Re: [問題] 關於kernel的多執行緒?

看板LinuxDev作者 (末日硬特爾)時間6年前 (2018/07/28 14:26), 編輯推噓1(100)
留言1則, 1人參與, 7年前最新討論串2/2 (看更多)
※ 引述《wandog (fight!!)》之銘言: : ※ [本文轉錄自 Linux 看板 #1RGrij4S ] : 作者: wandog (fight!!) 看板: Linux : 標題: [問題] 關於kernel的多執行緒? : 時間: Mon Jul 9 20:55:07 2018 : 我看到的一些資料 不太確定我的認知正不正確 請各位指教 : 基本上 kernel space中 可以當作一個process一直在無限loop : 並且裡面有多個threads在執行 : 當user space的process執行kill這個指令 : 則會藉由c lib呼叫syscall 並將要執行的vector function所對應 : 的代號放入特定暫存器後 執行軟體中斷 切換到kernel mode : 而在kernel mode中 vector function讀取站存器存放的代號 : 呼叫對應的函式做事 : 我不太懂的是 如果kernel space是一個多執行緒的process 他是另外產生一個 : thread來呼叫對應的函式做事 還是原本就在跑的thread自己會呼叫函式做事? : 以及這個呼叫的過程是怎麼實作的? : 另外想接著問一個schedular的問題 他的運作方式是是在timer的中斷產生後 : 直接在vetor function中就執行context switch的動作嗎? 抑或是跟上一段 : 一樣 vector function是讓kernel process去執行context switch? 排程器主要靠TIMER來完成 另外TASK也能夠主動釋放出控制權 像是呼叫synchronized or usleep之類的通常會觸發排程 kernel內的printk也常常會觸發RESCHEDUER 系統設計基本上就那幾種 (timer, workqueue , scheduler...etc) JOB被放在CPU RQ的資料結構中 CPU在執行TASK前已經算好該TASK能夠執行多少時間 所謂算好是指排程器給你的時間 當PROGRAM使用排程禁止便可以獨佔整個CPU, 只剩下中斷可以搶佔 這一般在USER SPACE是不許可的 有興趣可以GOOGLE loda CFS 相關的字眼 網路資源其實頗多的 現在對岸的資料對於LINUX subsystem的分析很多 蜗窝科技上有很多文章可以參考 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.37.212.44 ※ 文章網址: https://www.ptt.cc/bbs/LinuxDev/M.1532788013.A.A13.html

05/12 23:13, 7年前 , 1F
感謝大大
05/12 23:13, 1F
文章代碼(AID): #1RN7qjeJ (LinuxDev)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1RN7qjeJ (LinuxDev)