当前位置: 技术问答>linux和unix
lkd中关于抢占的讲解,有一点没有看明白
来源: 互联网 发布时间:2016-12-16
本文导语: User preemption occurs when the kernel is about to return to user-space, need_resched is set. ....(略) In short, user preemption can occur When returning to user-space from a system call When returning to user-space from an interrupt handler 就是...
User preemption occurs when the kernel is about to return to user-space, need_resched is set.
....(略)
In short, user preemption can occur
When returning to user-space from a system call
When returning to user-space from an interrupt handler
就是上边的那段文字。
user preemption 是什么意思?应该是用户态的抢占吧,但是为什么用户态的抢占只有在从系统调用返回到用户态以及从中断返回到用户态的时候才发生呢?如果这两个情况一直不发生呢?是因为中断总是发生吗?
....(略)
In short, user preemption can occur
When returning to user-space from a system call
When returning to user-space from an interrupt handler
就是上边的那段文字。
user preemption 是什么意思?应该是用户态的抢占吧,但是为什么用户态的抢占只有在从系统调用返回到用户态以及从中断返回到用户态的时候才发生呢?如果这两个情况一直不发生呢?是因为中断总是发生吗?
|
这个问题有点深了,我的理解是,抢占本身来说就是内核对外的调动机制,多数系统调用对于用户态程序来说都是原子的或者看作是原子的,中断就不用说了,软中断除外。程序陷入内核态,执行中断或系统调用完成后,在返回用户态的路上要经历很多过程,信号,软中断等机制也都是在这个时间点。不论是时间片机制还是抢占点机制,在进程上下文中都有固定标示,从内核态会到用户态时是对这些标示做处理的最好时机,早了晚了都会打乱调度的平衡和统一。
|
实际就是何时会发生用户程序的强占,发生的时机是从系统调用返回时,或者是中断返回时,中断时时刻刻都在发生,用户访问数据时也时时刻刻在进行系统调用,然后切换到内核空间,执行完成后就退回到用户空间了
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。