上下文切换详解及进程调度

上下文切换详解

1、上下文切换的概念

上下文切换可以认为是内核(操作系统的核心)在 CPU 上对于进程(包括线程)进行以下的活动:
(1)挂起一个进程,将这个进程在 CPU 中的状态(上下文)存储于内存中的某处,
(2)在内存中检索下一个进程的上下文并将其在 CPU 的寄存器中恢复
(3)跳转到程序计数器所指向的位置(即跳转到进程被中断时的代码行),以恢复该进程。

上下文切换有时被描述为内核挂起 CPU 当前执行的进程,然后继续执行之前挂起的众多进程中的某一个(进程切换)。上下文切换要操作的信息是储存在PCB中,方便取用。上下文切换十分频繁,每秒进行很多次,所以要求我们的操作系统有实时性。实时性就是我们每一次操作时间控制在10ms以内。arm操作系统一般的平均时间位1.5ms。

2、何时发生上下文切换

  • 中断:当发生中断时,CPU会将发起中断请求的程序跟正在运行的程序进行上下文切换(简单的例子,你CPU正在进行某个运算,突然我鼠标发生点击,如果优先级过高的情况你就会立马执行鼠标点击的事件)
  • 多任务处理:多任务的情况,每个任务都有相应的时间片,因此会发生上下文切换。
进程调度

说完了上下文切换,我们说一下进程调度,进程调度有三种方式。

  • 先来先服务:这过程很简单,每次进程调度都选择的是最先入队列的作业,给处理机,进程运行完成之后才放弃处理机,作业调度是分配内存,创建进程。
  • 短作业优先:每次作业调度在就绪队列中找一个时间最短的作业,给他分配内存运行,进程调度就是给处理机。
  • 高优先级:谁的优先级高谁就先被调用。
    • 非抢占式优先权调度:就是等每个作业处理完成了,再在就绪队列中找一个优先级最高的作业执行。
    • 抢占式优先权调度:来了一个优先级比正在运行的程序还高的作业,CPU马上停止现在的作业而去执行优先权高的。
  • 高响应比优先:这种方法是(等待时间 + 服务时间)/ 服务时间 。这个比最高的时候,最先被调用,但是必须先计算相应比。

进程调度中还有几个情况会出现:

  • 优先级颠倒:低优先级拥有高优先级需要的资源(互斥锁),这个时候我们低优先级会比高优先级的作业先执行。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值