《进程调度》4.上下文切换与抢占

1、上下文切换:

从一个可执行的进程切换到下一个可执行进程过程中需要做的事情由context_switch函数完成,具体的实现如下:

①调用switch_mm函数,将虚拟地址从上一个进程映射到新的进程中去;

②调用switch_to函数,从上一个进程的处理器状态切换到新进程的处理器状态。这包括保存、恢复栈信息和寄存器信息,还有其他的与体系相关的的状态信息,以每一个进程为对象进行信息的管理和保存。

 

need_resched标志:内核虽然有了调度的实现函数schdule,但是需要知道在什么时间调用。而这个函数的调度被一个标志控制:need_resched。当一个进程应该被抢占时、当有优先级更高的进程进入可执行状态时,schduler_tick函数就会设置这个标志。这个标志对内核来说表示有其他的进程应当被运行,要尽快调度程序。

 

2、用户抢占:

内核即将返回用户空间时候,如果need_resched标志被设置,会导致schdule函数被调用,就会发生用户抢占,在从内核返回用户空间的时候不仅可以继续执行当前进程,也可以选择一个新的进程执行。所以用户抢占在一下情况产生:①从系统调用返回用户空间;②从中断处理程序返回用户空间。

 

3、内核抢占

内核抢占会发生在:①中断处理程序正在执行,且返回内核空间之前;②内核代码再一次具有可抢占性是;③如果内核中的任务显示调用schdule函数时。如果内核中的任务阻塞(同样会调用schdule函数)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值