内核如何处理从IRQ中调用的schedule()函数?说,task1调用IRQ0(定时器)的调度,task2从INT 80h恢复(我忘记强制任务切换的系统调用的名称)。 IRQ“ACK”信号永远不会被发送,并且IRQ将停止发送。Linux如何处理从IRQ中调度()的调用?
我指的只是x86个人电脑。我正在为我自己的小内核(我试图)编写Linux调度程序/进程系统进行研究,而且我无法理解我缺少的东西。我知道我错过了一些事情,因为Slackware在我的电脑上运行的事实证明了调度程序工作的事实:P
调度如何工作呢?我的印象是你必须在0环境切换。否则,像切换内存映射和更改调度程序数据的内容不会被大声说出。据我所知,从用户land/ring3切换到ring0的唯一方法是通过中断或sysenter/exit类型的调用。 – Caleb1994
哦,你也可以通过iret切换戒指。忘了那一个。 – Caleb1994
好的。那么我越看越......越有意义。我相信我自己的想法正在困扰着我......感谢您的帮助! – Caleb1994