进程的上下文切换

名词解释:因为不同进程之间共享CPU的资源,所以在不同进程切换到CPU里面被执行时,我们称一个进切换到另一个进程运行为:进程的上下文切换

这里涉及到CPU寄存器和程序计数器:CPU寄存器是容量很小的速度非常快的内存,类比:寄存器是口袋,内存是书包,硬盘是图书馆书柜,把东西放在口袋速度最快

程序计数器是用来存储CPU正在执行的指令位置,或者即将执行下一条指令位置

由CPU寄存器和程序计数器所一起提供的环境叫做:CPU上下文

CUP上下文切换:先把前一个任务的CPU上下文(CPU寄存器和程序计数器)保存起来,然后加载新任务的上下文到这些寄存器和程序计数器,最后再跳转到程序计数器所指的新位置运行新任务。

上面的任务主要包括:进程,线程,中断。根据任务的不同可以,把CPU上下文切换分成:进程上下文切换,线程上下文切换,中断上下文切换。


进程的上下文切换不仅包含了虚拟内存、栈、全局变量等用户空间的资源2,还包括了内核堆栈、寄存器等内核空间的资源。通常会把交换的信息保存在进程的PCB,当要运行另一个 进程的时候,需要从这个进程的PCB中取出上下文,然后加载到CPU中,这样子能恢复继续这个进程执行

 注意:需要尽可能的减少进程上下文的开销,把事件用在执行程序上,而不耗费在上下文切换上。

上下文切换发生在哪些场景:1 

        1 为了保证所有进程可以得到公平调度,CPU时间被划分为一段段的时间片,这些时间片再被轮流分配给各个进程,这样当某个进程的时间片耗尽,进程就从运行状态变为就绪状态,系统从就绪队列选择另外一个进程运行。

        2进程在系统资源不足(如内存不足)时,要等待资源满足后才能运行,这个时候进程也会被挂起,并且由系统调度其他进程运行。

        3当进程通过睡眠函数sleep方法将自己主动挂起时,自然会重新调度

        4当有优先级更高的进程运行时,为了保证高优先级进程的运行,当前进程会被挂起,由高级优先级进程来运行

        5发生硬件中断时,CPU上的进程会被中断挂起,转而执行内核中的中断服务程序。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值