操作系统——线程

136 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

线程

引入进程的目的是为了更好的实现并发,

引入线程的目的是减小程序在并发执行时所付出的时空开销

  • “轻量级CPU”——基本的CPU执行单元&程序执行流的最小单元

  • 线程是独立调度的基本单位,进程是拥有资源的基本单位

    • 即线程无资源
  • 引入线程后,进程则作为除处理机以外的系统资源的分配单元,处理机和线程对应,由于多个线程在一个进程内,进程内的线程切换,开销小

  • 同时进程内的线程通信可通过全局变量的方式进行

线程控制块TCB:线程id,程序计数器,寄存器和堆栈

线程实现方式

  • 用户级线程

    • 有关线程管理的所有工作都由应用程序完成,内核意识不到线程的存在
    • 应用程序最初是单线程,需要自己创
  • 内核级线程

    • 线程管理的所有工作由内核完成,应用程序只有一个到内核级线程的编程接口
    • 在内核空间为每一个内核支持线程设置了一个线程控制块,内核是根据该控制块而感知某线程的存在的,并对其加以控制
    • 优点:内核可以把同一个进程的多个线程分给多个处理机,线程被阻塞对别的线程无影响
    • 缺点:同一个进程中把控制从一个线程传给另一个线程,需要内核来模式切换
  • 映射方式

    • 一对一【内核级线程】

    • 多对一【用户级线程】

      • 线程管理在用户空间进行效率高
      • 一阻塞都阻塞
      • 多个线程不能多处理机
    • 多对多折衷