关于用户抢占的问题
当内核即将返回用户空间时,内核会检查need_resched是否设置,如果设置,则调用schedule(),此时,发生用户抢占。一般来说,用户抢占发生几下情况:
(1)从系统调用返回用户空间;
(2)从中断(异常)处理程序返回用户空间。
我想问的时,如果我的一个进程 没有用到中断,也没有用到系统调用,那这个进程就不能被抢占了? 是不是这样?
因为用户抢占 发生在上面两种情况下啊?
还是所有写的程序,都会用到中断或系统调用? 怎么理解? 一个进程 有没有一直都在用户空间运行情况,那这样更高优先级的事件 不就抢占不了吗 。因为抢占 发生在 上面两种情况下的啊, 而这个进程一直都在用户空间运行的啊??
怎么理解??
------解决方案--------------------系统中的中断是随时都会发生的,比如时钟中断,每秒发生HZ次。
这样,你的程序其实运行没有多长时间,就会被中断。这时候就可以发生抢占。
以上我的理解。
------解决方案--------------------系统中的中断是随时都会发生的,比如时钟中断,每秒发生HZ次。
这样,你的程序其实运行没有多长时间,就会被中断。这时候就可以发生抢占。
以上我的理解。