多用户间上下文线程,线程的上下文切换

 2023-09-28 阅读 20 评论 0

摘要:CPU利用时间片轮询来为每个任务都服务一定的时间,然后把当前任务的状态保存下来,继续服务下一个任务。任务的状态保存及再加载就叫做线程的上下文切换。 在一个进程内部可以有多个线程在同时运行,并与创建它的进程共享同一地址空间和其它资源。 上下文&#

CPU利用时间片轮询来为每个任务都服务一定的时间,然后把当前任务的状态保存下来,继续服务下一个任务。任务的状态保存及再加载就叫做线程的上下文切换。

在一个进程内部可以有多个线程在同时运行,并与创建它的进程共享同一地址空间和其它资源。

上下文:批线程切换时CPU寄存器和程序计数器所保存的当前线程的信息。

寄存器:指CPU内部容量较小但速度很快的内存区域(与之相对应的是CPU外相对较慢的RAM主内存)。多用户间上下文线程,寄存器通过对常用值(常为运算的中间值)的快速访问来加快计算机程序的速度。

程序计数器:是一个专用的寄存器,用于表明指令序列中CPU正在执行的位置,存储的值为正在执行的指令的位置或下一个将被执行的指令的位置,这依赖于特定的系统。


上下文切换

上下文切换指的是内核(OS的核心)在CPU上对进程或线程进行切换。上下文切换过程中的信息被保存在进程控制块(PCB ,Process Control Block)中。PCB又被称作切换帧(SwitchFrame)。线程和进程的关系。上下文切换的信息会一直被保存在CPU的内存中。直到被再次使用。上下文切换流程如下:

(1)挂起一个进程,将这个进程在CPU中的状态(上下文信息)存储于内存的PCB中。

(2)在PCB中检索下一个进程的上下文并将其在CPU的寄存器中恢复。

(3)跳转到程序计数器所指向的位置(即跳转到进程被中断时的代码),并恢复该进程。检测线程上下文注入,

时间片轮转方式使多个任务在同一CPU上的执行有了可能。


引起线程上下文切换的原因

  • 当前正在执行的任务完成,系统CPU正常调度下一个任务。
  • 当前正在执行的任务遭遇I/O等阻塞操作,调度器挂起此任务,继续调度下一个任务
  • 多个任务并发抢占锁资源,当前任务没有抢到锁资源,被调度器挂起,继续调度下一个任务。
  • 用户的代码挂起当前任务,比如线程执行sleep方法,而让出CPU。
  • 硬件中断。进程切换和线程切换,

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/101483.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息