深入理解Linux内核笔记(关于上下文切换)

进程上下文切换:
硬件上下文:CPU核心的寄存器数据, 在Linux中硬件上下文一部分放在TSS段(内存中的一段空间),一部分放在内核态堆栈中
thread:因为进程不把硬件上下文保存在TSS中,而是保存在这个类型为thread_struct的thread字段中,这里包含大部分CPU寄存器的值,
        但不包括一些通用寄存器,他们的值保留在内核堆栈中

Linux调度程序调度进程的过程:首先如果调度程序决定要把CPU交个某个进程,那么开始进行进程切换:
    1.吧进程描述符thread字段的值装入几个寄存器,特别是吧thread.esp(即进程内核态堆栈的地址)装入esp寄存器,
    2.调用schedule_tail()函数(它一次调用finish_task_switch来完成进程切换)
    3.用存放在栈中的值再装载所有寄存器,并强迫CPU返回到用户态,这是后CPU开始执行该进程

CPU响应中断也会吧当前进程挂起,然后执行中断响应,这里和进程的上下文切换过程是差不多了,但是有些不一样:
    1.中断或异常处理程序执行的代码不是一个进程,更确切的说,他是一个内核控制路径,代表中断发生时正在运行的进程执行
    2.作为一个内核控制路径,中断处理程序比一个进程要轻,(中断的上下文很少,建立或终止中断处理需要的时间很少)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值