作者DontGoIntel (末日硬特尔)
看板LinuxDev
标题Re: [问题] 关於kernel的多执行绪?
时间Sat Jul 28 22:26:51 2018
※ 引述《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://webptt.com/cn.aspx?n=bbs/LinuxDev/M.1532788013.A.A13.html
1F:推 wandog: 感谢大大 05/12 23:13