Golang 操作系统调度入门

操作系统调度

  • 操作系统调度器,它负责确保在有线程能够运行的时候内核不会空闲下来。它会制造一种假象——所有能够跑的线程此时都在同时执行。为此,调度器需要优先执行高优先级的线程,但是它也必须保证低优先级的线程不会饿死。调度器也必须尽可能将调度延时压倒最少

线程三种状态

  • 等待:线程停止并且等待被唤醒。如等待硬件(硬盘、网络),操作系统(系统调用) 或者是同步调用(atomic,mutexes)
  • 可执行:线程想要占用内核上的cpu时间来执行分配给线程的指令
  • 执行中:线程已经置于内核中,并且正在执行它的机器指令

线程工作模型

  • 计算密集型:进行持续性的cpu计算工作
  • IO密集型:线程会持续的请求资源或者是对操作系统进行系统调用

上下文切换

  • 内从从物理层面切换线程
  • 可执行状态的线程变成执行中
  • 执行中状态的线程变成可执行或等待
  • 上下文切换对计算密集型影响较大
  • 上下文切换对IO密集型较好