计算机知识宇宙
  • 介紹
  • 基础知识
    • 计算机系统
      • 进程与线程
        • 进程
        • 线程
        • 调度算法
        • 进程间通信
      • 锁
    • 计算机网络
    • 算法
  • 编程语言
    • Golang
      • 垃圾回收机制
  • 进阶实践
    • 云原生
      • 图解 Kubernetes
        • Deployment Controller 篇
        • Informer 篇(上)
        • QoS 篇
  • 附录
    • 概念
由 GitBook 提供支持
在本页
  • 背景知识
  • CPU 的上下文切换
  • 协程
  • 参考

这有帮助吗?

  1. 基础知识
  2. 计算机系统

进程与线程

上一页计算机系统下一页进程

最后更新于4年前

这有帮助吗?

进程与线程是面试中计算机系统方面问的比较多的一种知识,本文力求以最简单语言描述这两个知识点。Let's go!

背景知识

处理速度:CPU > 内存 > 磁盘

容量:CPU < 内存 < 磁盘

CPU 的上下文切换

操作系统事先帮 CPU 设置好 CPU 寄存器和程序计数器。

CPU 寄存器是 CPU 内部的一个速度极快的小缓存;程序计数器则用来存储 CPU 正在执行的指令位置、或者即将执行的下一条指令的位置。

CPU 寄存器和程序计数器是 CPU 在运行任何任务前,都必须依赖的环境,这些环境就叫做 CPU 上下文。

CPU 上下文切换就是把前一个任务的 CPU 上下文(CPU 寄存器和程序计数器)保存起来,然后加载新任务的上下文,最后在跳转到新程序计数器所指的新位置,运行新任务。这样做的目的,就是保证任务在重新加载后,原来的任务状态不受影响,看起来还是连续运行的。

上面的「任务」主要包括:进程、线程和中断。根据任务的不同,把 CPU 上下文切换分为:进程上下文切换、线程上下文切换、中断上下文切换。

协程

协程属于用户态,大量的协程实际上只占用了内核态的一个线程。 协程数量和内核线程处理不一致时,需要有调度器来维护所有协程,尽可能让他们公平地使用 CPU。 在 go runtime 有自己的调度器,主要使用了 “work stealing” 算法。

参考

进程和线程基础知识全家桶,30 张图一套带走 - 小林coding